创建一个缓冲区和管道数据来播放它
Create a buffer and pipe data to play it javascript
我正在尝试使用电子播放洪流中的流媒体声音。为了做到这一点,我使用https://github.com/feross/webtorrent下载电子主过程中的所有数据。然后,当我选择要下载的声音时,我将获得要播放的文件流,并将其发送到以下函数
中的html renderer进程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') }
})
})
中的render是一个在音频DOM节点中播放媒体源的函数。我的问题是,我在缓冲区中保留了文件的全部内存,将渲染函数设置为文件的完整持续时间,但它只播放我已经下载的数据,而不是在ipc收到新闻时重新加载数据,我找不到方法来做到这一点。
解决方案是
var readableStream = new Readable();
var file = {
name: data[0],
createReadStream: function(opts){
return ReadableStream;
}
}
但是可读的应该在返回前完全加载。
相关文章:
- 用程序搜索JQuery数据表中的文本
- 要求输入在数据列表中
- 正在将数据主题添加到所有项目
- 函数参数中的数据与指定变量之间的任何性能差异
- 在VanillaJS中模拟模型双向数据绑定
- CSS-如何定位内容数据标题
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 序列化数据属性中对象的最可靠方法
- 如何将JSON数据导入我的ejs模板
- 如何检查管道中未定义的项目
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- Angular 2 json 管道显示内容但不显示实际数据
- Gulp调试-管道到进程.stdout给出TypeError('无效数据')
- 将数据从Sails.js中的文件管道传输到渲染页面
- 创建一个缓冲区和管道数据来播放它
- 为什么这个Angular 2管道没有返回数据?
- 如何将mysql数据管道传输到浏览器窗口,而不是Nodejs中的控制台
- 用jquery从管道符号分隔的数据中填充一个HTML选择框