我正在尝试制作一个简单的低延迟记录器。我目前使用以下代码使用Socket.IO捕获和传输音频。但是,只有第一个数据包是可播放的,因为它是唯一包含标头信息的数据包。我也尝试过每秒创建新的流。它不起作用,因为音频会在录制会话之间中断。
我的问题是如何创建一个流,该流从浏览器获取输入,将其传输到服务器(不能对等),并且可以在另一个浏览器中近实时播放。我知道这是可能的,因为像Discord这样的应用程序都在使用它。
这是我当前正在使用的代码。在第一个数据包之后,Chrome会返回以下错误:Uncaught (in promise) DOMExecption: play() failed to load because no supported source was found.
我已经为此工作了好几天,请帮忙!
function schedulePacketSend() {
if (recording) {
navigator.mediaDevices.getUserMedia({audio:true}).then(function(mediaStream) {
const rec = RecordRTC(mediaStream, {
type:'audio',
mimeType:'audio/webm; codecs=opus',
recorderType:StereoAudioRecorder,
ondataavailable:function(e){
console.log('sending packet')
console.log(e)
socket.emit('audio-up', {audio:e.data, client:id})
},
timeSlice:1000
})
rec.startRecording()
});
}
}
非常感谢,
杰克逊
我正在尝试制作一个简单的低延迟记录器。我目前使用以下代码使用Socket.IO捕获和传输音频。但是,只有第一个数据包是可播放的,因为它是唯一的...