binaryjs – nodejs mp3audiostream并播放
我想将.mp3文件从客户端stream式传输到服务器,都使用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); }); }); });
我得到了我的二进制数据stream,并希望他们
使用像player.js这样的东西来获得与nodejs的直接audio输出。
但是我不知道如何将二进制数据转换成可用的stream文件
与像player.js这样的解决scheme一起工作 。
希望有人能帮助我得到一个工作的解决scheme。
提前致谢。
所以对于有类似问题的人来解决:
- 尝试在收集数据时立即从数据arrays创build一个新的BlobFile,而不是在最后
- 将Blob读为ArrayBuffer
- 解码audio数据
- 玩他们
这里是一个片段:
.... 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() }); ....
没有经过testing,显然不能工作,但我希望这会帮助你们中的一些人
- 使用Node.js创builddynamicaudio
- NodeJs:如何pipe两个stream到一个产生的进程stdin(即ffmpeg)导致一个单一的输出
- 用stream媒体录制audio – MediaStreamRecorder + Node.js
- Node.js – 让Node.js / Express与Web Audio API一起工作
- 将audio从浏览器stream到nodejs
- 转码和streamaudio – 如何发送内容范围标题
- 使用ffmpeg,javascript和nodejs实况audio
- Node.js在服务器和客户端之间同步audiostream?
- 我如何将audio数据从波浪冲浪区域复制到新的audio缓冲区?