Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将音频从浏览器传输到服务器?_Javascript_Html_Webrtc_Audio Streaming_Mediarecorder - Fatal编程技术网

Javascript 如何将音频从浏览器传输到服务器?

Javascript 如何将音频从浏览器传输到服务器?,javascript,html,webrtc,audio-streaming,mediarecorder,Javascript,Html,Webrtc,Audio Streaming,Mediarecorder,我想做一个简单的低延迟记录器。我目前使用下面的代码使用Socket.IO捕获和传输音频。但是,只有第一个数据包是可播放的,因为它是唯一包含报头信息的数据包 我还尝试过每秒创建新的流。 它无法工作,因为在录制会话之间音频会中断 我的问题是如何创建一个流,从浏览器获取输入,将其传输到服务器(它不能是对等的),并可以在另一个浏览器中近实时播放。我知道这是可能的,因为像Discord这样的应用程序使用它 这是我目前正在使用的代码。在第一个数据包之后,Chrome返回以下错误: Uncaught(承诺中)

我想做一个简单的低延迟记录器。我目前使用下面的代码使用Socket.IO捕获和传输音频。但是,只有第一个数据包是可播放的,因为它是唯一包含报头信息的数据包

我还尝试过每秒创建新的流。 它无法工作,因为在录制会话之间音频会中断

我的问题是如何创建一个流,从浏览器获取输入,将其传输到服务器(它不能是对等的),并可以在另一个浏览器中近实时播放。我知道这是可能的,因为像Discord这样的应用程序使用它

这是我目前正在使用的代码。在第一个数据包之后,Chrome返回以下错误:
Uncaught(承诺中)DOMExecption:play()无法加载,因为找不到支持的源代码。

我已经做了好几天了,请帮忙

    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()
            });
        }
    }
非常感谢


Jackson

我不熟悉RecordRTC,但这对于Pion WebRTC来说是微不足道的

显示如何捕获H264/OPU并将其保存到磁盘。从那时起,你就可以随心所欲了


如果你想要实时的话,你可能会想要一些更像它的东西,比如接收传入的媒体,然后对许多连接的对等点进行扇出。您可以将这两个示例结合起来,这样您就可以同时进行录制和扇出操作。

感谢您的回复。我看了一下你的
pion/webrtc
示例,看起来这个项目依赖于一种称为STUN或TURN的技术,这似乎是NAT路由技术。主要问题是您需要多个IP地址才能使用这些协议。我希望(尽管我对其他解决方案持开放态度)有某种方法可以从浏览器中获取原始PCM音频,并能够在另一个客户端上播放。原始PCM音频可能不会,但您可以通过WebRTC发送Opus,甚至G.711(离原始PCM不远):将其发布到某个服务器,该服务器可以将其发送出去播放。在此页面上,您可以将其发布到您的Unreal Media Server实例:请注意,不需要任何昏迷或翻转服务器。