【问题标题】:Can I use WebRTC to receive a non-standard RTP stream?我可以使用 WebRTC 接收非标准 RTP 流吗?
【发布时间】:2014-08-19 14:00:49
【问题描述】:
我在网络中的一个节点上运行了一个软件,它生成通过 UDP/IP 传输的 RTP 流。这些流包含流数据,但不是任何标准的音频/视频格式(如 H.264 等)。我想要一个简单的 Web 应用程序,它可以连接到这些流中,适当地解码有效负载,并显示它们的内容。我了解无法从浏览器直接访问 UDP 套接字。
有没有办法使用 JavaScript/HTML5 读取任意 RTP 流(即,给定一个 UDP 端口号来接收数据)?发送流的软件没有实现 WebRTC 指定的任何信令协议,我无法更改它。我希望能够获得 RTP 数据包的内容;我可以毫无问题地处理解码和显示。
【问题讨论】:
标签:
javascript
webrtc
rtp
【解决方案1】:
据我所知,WebRTC API 集合中没有任何内容可以让您执行此操作。正如您所指出的,在浏览器中也没有直接的编程方式来处理 UDP 数据包。
您可以使用 Canvas 和 Web Audio API 来有效地播放任意视频,但这会占用大量 CPU。 MediaSource 扩展可用于通过浏览器的编解码器运行数据,但您仍然需要以某种方式获取数据。
我认为在您的情况下,最好的解决方案是在服务器端建立这些连接,并使用 FFmpeg 之类的东西在您的浏览器可以处理的编解码器和容器中输出流,并简单地在视频元素中播放。然后,您可以连接到任何您想要的东西。我用 Node.js 做过类似的项目,这使得通过管道传输流非常容易,并输出到浏览器。
【解决方案2】:
另一种选择是使用 WASM 并为您的流创建自己的播放器。这是近年来 > 2014 年非常令人难以置信的技术。正如@Brad 所说,即使到 2020 年,WebRTC 也不支持您所需要的。