Mos*_*eed 5 javascript audio streaming node.js
我想将.mp3文件从客户端流式传输到服务器,两者都使用NodeJS.
我正在使用binaryjs来传输文件.
客户:
var BinaryClient = require('binaryjs').BinaryClient;
var fs = require('fs');
var client = BinaryClient('ws://localhost:9000');
client.on('open', function(stream){
client.send(fs.createReadStream('music.mp3'), {
name : 'music'
});
});
Run Code Online (Sandbox Code Playgroud)
服务器:
var BinaryServer = require('binaryjs').BinaryServer;
var server = BinaryServer({port: 9000});
server.on('connection', function(client){
client.on('stream', function(stream, meta){
var data = [];
stream.on('data', function(chunk){
console.log('Recieve Chunk: ' + data.length);
data.push(chunk);
});
stream.on('end', function() {
console.log('complete data' + data);
});
});
});
Run Code Online (Sandbox Code Playgroud)
我得到了我的二进制数据流,并希望他们
使用像player.js这样的东西
来获得nodejs的直接音频输出.
但我不知道如何将二进制数据转换为可用的流文件
,该文件适用于像player.js这样的解决方案.
希望有人能帮助我找到一个有效的解决方案.
提前致谢.
所以对于有类似问题需要解决的大家:
这是一个片段:
....
var context = new (window.AudioContext || window.webkitAudioContext)();
var fileReader = new FileReader();
var source = null;
var audioBuffer = null;
var data = [];
stream.on('data', function(chunk){
console.log('Recieve Chunk: ' + data.length);
data.push(chunk);
var blob = new Blob(streamData);
fileReader.readAsArrayBuffer(blob);
context.decodeAudioData(buf, function(buffer) {
audioBuffer = null;
audioBuffer = buffer;
source = context.createBufferSource();
source.buffer = audioBuffer;
source.connect(context.destination);
source.start()
});
....
Run Code Online (Sandbox Code Playgroud)
未经测试,可能无法正常工作,但我希望它能对你们中的一些人有所帮助