我想将.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'
});
});
服务器:的
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);
});
});
});
我得到了我的二进制数据流并希望它们 使用player.js之类的工作 使用nodejs获得直接音频输出。
但我不知道如何将二进制数据转换为可用的流文件
适用于像player.js这样的解决方案。
希望有人能帮助我找到一个有效的解决方案 提前谢谢。
答案 0 :(得分:0)
所以对于遇到类似问题的每个人都要解决:
这是一个片段:
....
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()
});
....
没有经过测试,可能没有工作,但我希望它会帮助你们中的一些人