我试图将一些音频流从我的浏览器发送到某个服务器(udp,也尝试使用websockets)。 我用webrtc录制音频流,但是我在将数据从nodeJS客户端传输到我的服务器时遇到了问题。 任何的想法?是否可以使用webrtc(openwebrtc)将音频流发送到服务器?
答案 0 :(得分:1)
要从浏览器获取音频到服务器,您有几种不同的可能性。
只需通过二进制Web套接字将音频数据发送到您的服务器。您可以将Web Audio API与ScriptProcessorNode一起使用来捕获原始PCM并无损地发送它。或者,您可以使用MediaRecorder记录MediaStream并使用Opus等编解码器对其进行编码,然后您可以通过Web Socket流式传输。
有一个示例可以通过Facebook's GitHub repo上的视频执行此操作。流媒体音频在概念上是相同的,所以你应该能够适应这个例子。
在不久的将来,您将能够使用WritableStream作为具有Fetch API的请求主体,允许您使用来自浏览器的流源进行正常的HTTP PUT。这与使用Web Socket时的操作基本相同,只是没有Web Socket层。
使用WebRTC连接并将服务器作为“对等”,您可以打开数据通道并发送与通过Web套接字或HTTP发送的完全相同的PCM或编码音频。
这增加了很多复杂性而没有真正的好处。不要使用这种方法。
WebRTC调用支持直接处理MediaStream。您可以附加流并让WebRTC堆栈负责协商编解码器,调整带宽更改,丢弃未到达的数据,维护同步以及围绕限制性防火墙环境协商连接。虽然这使得表面上的事情变得更容易,但这也是复杂的很多。 Node.js没有任何软件包可以向你公开MediaStreams,所以你很难处理其他软件......没有一个软件可以像它一样容易集成。
大多数人都会使用gstreamer作为RTP服务器来处理媒体组件。我不相信这是最好的方式,但这是我目前所知道的最佳方式。