javascript – 如何将getUsermedia音频流转换为blob或缓冲区?
作者:互联网
我从getUserMeda获取音频流,然后将其转换为blob或缓冲区并将其发送到服务器,因为音频正在使用socket.io将其发送到服务器如何将音频媒体流转换为缓冲区?
以下是我编写的代码
navigator.getUserMedia({audio: true, video: false}, function(stream) {
webcamstream = stream;
var media = stream.getAudioTracks();
socket.emit("sendaudio", media);
},
function(e){
console.log(e);
}
});
如何将流转换为缓冲区并将其发送到node.js服务器,因为流来自getusermedia函数?
解决方法:
Per @ MuazKhan的评论,使用MediaRecorder(在Firefox中,最终将在Chrome中)或RecordRTC /等将数据捕获到blob中.然后,您可以通过几种方法之一将其导出到服务器进行分发:WebSockets,WebRTC DataChannels等.请注意,这些不能保证实时传输数据,而且MediaRecorder还没有比特率控制.如果传输延迟,数据可能会在本地累积.
如果实时(重新)传输很重要,强烈考虑使用PeerConnection代替服务器(按@ Robert的注释),然后将其转换为流. (如何完成将取决于服务器,但您应该将Opus数据编码为重新打包或解码并重新编码.)虽然重新编码通常不好,但在这种情况下,您最好通过NetEq进行解码( webrtc.org stack的jitter-buffer和PacketLossConcealment代码)并获得一个干净的实时音频流来重新编码流,同时处理丢失和抖动.
标签:javascript,webrtc,blob,buffer,audio-streaming 来源: https://codeday.me/bug/20190824/1709981.html