我正在尝试将一些音频流从我的浏览器发送到某个服务器(udp,也尝试websockets)。我正在用webrtc记录音频流,但我在将数据从nodeJS客户机传输到我的服务器时遇到了问题。有什么想法吗?是否可以使用webrtc(openwebrtc)将音频流发送到服务器?
发布于 2018-01-17 05:43:50
要从浏览器获取音频到服务器,您有几种不同的可能性。
Web套接字
只需将音频数据通过二进制网络套接字发送到您的服务器。您可以使用Web和ScriptProcessorNode来捕获原始PCM,并将其无损地发送出去。或者,您可以使用MediaRecorder记录MediaStream并用类似于Opus的编解码器对其进行编码,然后您可以在Web上进行流。
有一个用于在Facebook的GitHub回购上使用视频进行此操作的示例。流音频在概念上是相同的,所以您应该能够修改这个示例。
HTTP (未来)
在不久的将来,您将能够使用一个WritableStream作为请求主体,使用Fetch API,允许您使用浏览器中的流源制作一个正常的HTTP。这与您对Web套接字所做的工作本质上是一样的,只是没有Web套接字层。
WebRTC (数据通道)
通过WebRTC连接和服务器作为“对等方”,您可以打开一个数据通道,并发送完全相同的PCM或编码音频,您可以通过WebRTC或HTTP发送这些音频。
这增加了大量的复杂性,并没有真正的好处。不要用这种方法。
WebRTC (媒体流)
WebRTC调用支持直接处理MediaStreams。您可以附加流并让WebRTC堆栈负责协商编解码器、适应带宽变化、删除未到达的数据、维护同步以及围绕限制性防火墙环境协商连接。虽然这会使表面上的事情变得更容易,但这也是非常复杂的。Node.js没有任何向您公开MediaStreams的包,所以您必须处理其他软件.所有这些都不像可能的那样容易整合。
大多数走这条路的人都会将gstreamer作为RTP服务器来执行,以处理媒体组件。我不相信这是最好的方法,但这是我目前所知道的最好的方式。
https://stackoverflow.com/questions/48283723
复制相似问题