首页 > 解决方案 > 使用带有树莓派 3b+ 的 websocket/webRTC 将实时视频从本地 IP 流式传输到外部网络中的浏览器

问题描述

这里有人在使用 TURN/STUN 服务器的 websockets 和 webRTC 方面有一些经验吗?

要求: 将实时视频从本地 IP 发送到外部网络中的浏览器,我需要一些帮助,通过树莓派 3b+ 实现。我的相机源是 android 设备,并且使用 3rd 方应用程序,我能够通过本地网络生成视频源。使用相同的应用程序,我可以通过 Youtube Live 进行流式传输,但在超低延迟模式和启用 dvr 时延迟约为 2 秒。我正在尝试减少流的延迟。

Q1。半公共 TURN 服务器是否提供一对一的对等点。或者任何人都可以直接跳转到 URL 并查看并覆盖我正在流式传输的内容?请提供一些服务提供商列表。

仅供参考,最多可以连接 1-2 个用户浏览器。

Q2。我需要 Janus 网关将 webRTC/websockets 数据发送到 TURN/STUN 服务器吗?由于我的树莓派连接到不同的网络,并且由于运营商的限制,我无法进行端口转发。

Q3。我是否需要两个 STUN/TURN 服务器,或者我什至需要 webRTC 而不是 websockets 来通过互联网发送我的视频流。websockets还不够吗?

Q4。由于我们没有通过本地网络实现,我们是否需要在树莓派上安装 coTURN?

Q5。是否有任何 android 应用程序可以使用公共 ws URL 将数据从相机发布到 websocket/werRTC 服务器?

任何帮助都会非常有帮助。

标签: websocketraspberry-piwebrtcstunjanus-gateway

解决方案


Q1。TURN 服务器中继媒体。他们通过为每个连接的对等方分配一个介于 49152-65535 之间的中继端口来做到这一点。然后,此中继端口将用于将媒体传输到第二个对等方。对等方将自动知道要使用哪些中继端口,因为这是冰收集过程的一部分。回到您的问题:其他对等方无法写入该中继端口,握手是 1 对 1,其他人不可能覆盖它。

Q2。您绝对不需要 Janus 网关来使用 TURN。TURN 和 STUN 可能会在没有端口转发的情况下对 NAT-Traversal 正常工作。

Q3。您至少需要一个 TURN 服务器(但理想情况下,您希望使用 1 个 STUN 服务器和 1 个 TURN 服务器)。STUN 在大多数情况下都可以工作,但如果有防火墙或复杂的 NAT 会阻止入站 udp 连接,则会失败。TURN 只是这些情况的后备。需要 WebRTC?对于仅流式传输视频,这取决于用例。一系列图像可以通过 websocket 传输,它们可以很好地处理 Blob。但是,您不会以这种方式获得非常流畅、高 fps 和高分辨率的视频流。当然,我不知道通过 websocket 传输音频的可用方法。

Q4。树莓派是传输媒体的Peer?对等点不需要安装本地 TURN 服务器,您只需要 1 台 TURN 服务器(它不应位于 NAT 之后,可能在某些 Web 服务器上运行)。TURN 服务器是一个单独的实例。
编辑
出于您的私人测试和开发目的,您可以使用https://numb.viagenie.ca/。我对商业转服务器主机了解不多,除了一些存在。对于拥有 v-server 或根服务器的人,安装coTURN可能是一种选择,教程可能会有所帮助。为了检查服务器是否正常工作,我还发现这个片段非常有用。
结束编辑

Q5。没有将 webRTC 流发布到 ws URL 的 android 应用程序,因为 webrtc 仅将 websocket 消息用于信令(也就是说,告诉对等方他们的主机候选者,这些是 ice 收集过程学习的 IP 地址和端口,这包括TURN 和 STUN ip 和端口组合)。


推荐阅读