使用WebRTC浏览器的实时流媒体音频=>;服务器

使用WebRTC浏览器的实时流媒体音频=>;服务器,webrtc,audio-streaming,audio-recording,live-streaming,openwebrtc,Webrtc,Audio Streaming,Audio Recording,Live Streaming,Openwebrtc,我正在尝试将一些音频流从浏览器发送到某个服务器(udp,也可以尝试websockets)。 我正在用webrtc录制音频流,但在将数据从nodeJS客户端传输到my server时遇到问题。 有什么想法吗?是否可以使用webrtc(openwebrtc)向服务器发送音频流?要从浏览器向服务器发送音频,您有几种不同的可能性 双向信息传输 只需通过二进制web套接字将音频数据发送到服务器。您可以将Web音频API与ScriptProcessorNode一起使用,以捕获原始PCM并无损发送。或者,您可

我正在尝试将一些音频流从浏览器发送到某个服务器(udp,也可以尝试websockets)。 我正在用webrtc录制音频流,但在将数据从nodeJS客户端传输到my server时遇到问题。
有什么想法吗?是否可以使用webrtc(openwebrtc)向服务器发送音频流?

要从浏览器向服务器发送音频,您有几种不同的可能性

双向信息传输 只需通过二进制web套接字将音频数据发送到服务器。您可以将Web音频API与ScriptProcessorNode一起使用,以捕获原始PCM并无损发送。或者,您可以使用MediaRecorder记录媒体流,并使用类似Opus的编解码器对其进行编码,然后通过Web套接字对其进行流式传输

这里有一个示例,用于在视频结束时执行此操作。仅流式音频在概念上是相同的,因此您应该能够调整示例

HTTP(未来) 在不久的将来,您将能够使用可写流作为fetchapi的请求主体,从而允许您使用浏览器中的流源创建正常的HTTP PUT。这基本上与使用Web套接字相同,只是没有Web套接字层

WebRTC(数据通道) 通过WebRTC连接和作为“对等方”的服务器,您可以打开数据通道并发送与通过Web套接字或HTTP发送的PCM或编码音频完全相同的音频

这增加了大量的复杂性,但没有真正的好处。不要使用这种方法

WebRTC(媒体流) WebRTC调用支持直接处理MediaStreams。您可以附加一个流,让WebRTC堆栈负责协商编解码器、适应带宽变化、丢弃未到达的数据、维护同步以及协商限制性防火墙环境周围的连接。虽然这使事情表面上更容易,但这也很复杂。Node.js没有任何包向您公开MediaStreams,因此您只能处理其他软件。。。所有这些都不如可能的那么容易集成


大多数走这条路线的人都会将gstreamer作为RTP服务器来执行,以处理媒体组件。我不相信这是最好的方式,但这是目前我所知道的最好的方式。

HTTP现在可以流媒体了吗?还有哪些好地方可以学习直播架构/系统design@MuhammadUmer不,HTTP PUT还不支持ReadableStream作为主体,现在浏览器开发者似乎反对它。有人担心代理和其他服务器将无法处理分块传输编码。坦率地说,我认为这种担心是过分夸大了,但那些对标准了解更多的人正在努力关注每个人,并保持事物的兼容性。也许在HTTP/2中。同时,我们一直在用网络套接字解决这个问题。@MuhammadUmer至于你的第二个问题,关于在哪里/如何学习。。。我唯一的建议就是在实践中学习。流媒体可能非常不透明。。。有很多遗留标准决定了事情的发展。但是,当你进入它的时候,还不算太糟!