Nau*_*hir 3 javascript buffer blob audio-streaming webrtc
我从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);
}
});
Run Code Online (Sandbox Code Playgroud)
如何将流转换为缓冲区并将其发送到node.js服务器,因为流来自getusermedia函数?
Per @ MuazKhan的评论,使用MediaRecorder(在Firefox中,最终将在Chrome中)或RecordRTC /等将数据捕获到blob中.然后,您可以通过几种方法之一将其导出到服务器进行分发:WebSockets,WebRTC DataChannels等.请注意,这些不能保证实时传输数据,而且MediaRecorder还没有比特率控制.如果传输延迟,数据可能会在本地累积.
如果实时(重新)传输很重要,强烈考虑使用PeerConnection代替服务器(按@ Robert的注释),然后将其转换为流.(如何完成将取决于服务器,但您应该将Opus数据编码为重新打包或解码并重新编码.)虽然重新编码通常不好,但在这种情况下,您最好通过NetEq进行解码( webrtc.org stack的jitter-buffer和PacketLossConcealment代码)并获得一个干净的实时音频流来重新编码流,同时处理丢失和抖动.
| 归档时间: |
|
| 查看次数: |
2628 次 |
| 最近记录: |