【发布时间】:2015-08-13 08:49:10
【问题描述】:
我从 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函数?
【问题讨论】:
-
使用 MediaRecorder API(仅限 Firefox)或 WebAudio hacks(特定于 Chrome)。 Recorder.js 非常有名。您甚至可以查看 RecordRTC 和 MediaStreamRecorder.js。简而言之:您需要记录流,获取基于间隔或完整 blob 并使用 FormData 或 DataURL 上传到服务器。
-
@MuazKhan 我只是想开发一种方式音频广播应用程序,只有在实时发送音频流时才有可能。我已经使用 RecordRTC 我已经] 每 1 秒录制一次音频并将其发送到服务器问题是浏览器窗口在 30 或 40 秒后崩溃。
-
您可以直接将
stream添加到WebRTC Peer 连接中。 -
@NaumanBashir 是的。罗伯特是对的。您可以使用 RTCPeerConnection API 进行实时广播。有什么理由不使用它吗?也许想支持 NON-WebRTC 浏览器/设备作为查看器?顺便说一句,MediaStreamRecorder.js 不应该崩溃! RecordRTC 可以录制 5 分钟或更短的时间。
-
你可以在两者之间使用一个使用 WebRTC 的服务器。因此,只需将 webrtc 数据流式传输到服务器,然后服务器将其流式传输到您的客户端。没问题!
标签: javascript buffer blob webrtc audio-streaming