2
我试图从使用电子的洪流播放流声音。为此,我使用https://github.com/feross/webtorrent来下载电子主要进程中的所有数据。后来,当我选择一个声音下载我得到的文件流播放和发送的HTML渲染proccess在后续功能创建一个缓冲区和管道数据来播放它javascript
ipc.on('getPlayData', function(event, data){
console.log('get file data stream');
in_play = data[1];
//Crea el stream del archivo que se va a reproducir
var streamfile = downloaderInstance.getFileToPlay(data[0], data[1]).createReadStream();
//se envia la longiud del archivo en bytes para el buffer.
event.sender.send('toPlay', [downloaderInstance.getFileToPlay(data[0], data[1]).name,
downloaderInstance.getFileToPlay(data[0], data[1]).length]);
streamfile.on('data', function(chunk){
event.sender.send('addData', chunk);
});
其中“toPlay”的消息告诉需要把文件的渲染参数在HTML和数据发送每一个数据,我从种子播种机获得。
然后在渲染器中处理我得到的数据到一个缓冲区与https://github.com/feross/render-media一起使用它,但我也尝试使用JavaScript的WebAudioApi。我在后续功能管理数据:
ipc.on('toPlay', (event, data) => {
console.log("to play: " + data[0]);
var buf = [];
var stream_length = parseInt(data[1]);
var stream_data = Buffer.alloc(stream_length);
ipc.on('addData', (event, data) => {
buf.push(data);
stream_data = Buffer.concat(buf);
})
var file = {
name: data[0],
createReadStream: function(opts){
//console.log(stream_data.length);
return from([stream_data.slice(0, stream_length) ]);
}
}
//console.log(file.createReadStream);
render.render(file, 'audio', [true, true, stream_length], function(err, elem){
if(err){ return console.log('error appending') }
})
})
在那里渲染它是起到音频DOM节点的媒体源的功能。我的问题就是我在缓冲区中保留了文件的全部内存,将渲染函数设置为文件的完整持续时间,但它只播放我已经下载的数据,并且在ipc收到新闻时不重新载入数据,我可以没有办法做到这一点。
您可以使用Audio Object的'
请你给我一些链接或例子。 @JuanjoSalvador – rafaelleru
这可能会帮助你http://www.inserthtml.com/2013/03/custom-html5-video-player/ –