使用Python脚本从NodeJS服务器播放audio

我正在尝试使用python播放audio文件。 虽然我只是需要重现audio文件,但我会用一个覆盆子的GPIO。

当我收到一个HTTP GET到相关链接时,它应该执行一个python脚本并重现audio。 但是,从API只能再现短暂的声音。 我的文件有10秒,但播放的噪音小于1秒。

这是我的控制器

// Controller /* importar o módulo child_process */ var cp = require('child_process'); /* importar o módulo node-omxplayer */ var omx = require('node-omxplayer'); /* importar o módulo python-shell */ var ps = require('python-shell'); // Caminhos para os scripts pythons var options = { scriptPath: '/home/pi/Documents/apiRest/api/files/' }; /* O módulo node-omxplayer usar o child_process para execução da query de reprodução do omxplayer */ module.exports.parar = function(application, req, res) { res.send('Comando de parada do video foi executado'); cp.exec('killall omxplayer.bin', function(err, stdout, stderr){ if(err) { return; } }); } module.exports.repr = function(application, req, res) { var query = req.query.video; if(query == '1') { res.send('Script de reprodução do video 1 sendo executado.'); vd1 = omx('/home/pi/Downloads/video1.mp4', 'hdmi'); } else if(query == '2') { res.send('Script de reprodução do video 2 sendo executado.'); vd2 = omx('/home/pi/Downloads/video2.mp4', 'hdmi'); } } module.exports.trovao = function(application, req, res) { var out = ''; ps.run('trovao.py', options, function (err) { if (err) { out = err; throw err; } else { out = 'Ok'; } console.log('finished'); res.send("Status: " + out); }); } 

我也尝试使用child_process来执行脚本,但我有相同的结果。 总是一个小噪音。 当我直接执行脚本,用python trovao.py它工作!

这是我的Python脚本:

 import pygame.mixer from pygame.mixer import Sound from time import sleep pygame.mixer.init() try: thunder = pygame.mixer.Sound("thunder3.wav") print ("Arquivo carregado!") except pygame.error: print ("Nao foi possivel carregar o arquivo!") #Executa o som somente uma vez aux = thunder.play() while aux.get_busy(): continue #pygame.time.delay(100) #sleep(2) #thunder.stop() print("Reproduzido"); 

实际上,我需要播放audio文件并与某些GPIO交互进行同步。 我究竟做错了什么?