运行 在无法访问互联网的本地网络中使用 WebRTC 的应用程序

Running an application with WebRTC within a local network that doesn't have internet access

我希望在一个项目中使用 WebRTC,在该项目中我需要通过本地网络将视频从一台计算机(一个带有 wifi 热点和 USB 摄像头的机器人)流式传输到另一台计算机(机器人的控制器)。本例中的两台计算机都是单板计算机,视频流是单向的。我还希望两台计算机能够在两个方向上相互传递数据。我在研究中发现了 WebRTC,它似乎具有我正在寻找的这两种功能。

从使用演示 NodeJS 程序的初步测试来看,WebRTC 似乎几乎正是我要找的东西。我一直试图克服的一个大障碍是,它似乎默认需要在两个客户端之间使用在线信令服务器。我研究并发现可以使用第三台计算机在本地网络中创建信令服务器,但这种设置不适合我的项目。

我研究了其他解决方案并发现了 OpenVidu which implements WebRTC but allows the signaling server to be built into one of the client computers (at least that's what I've read in another )。我还没有测试这个工具看它是否解决了我的问题,但我目前被不支持 ARM 处理器的项目使用的 docker 图像阻止了,我的单板计算机使用这些处理器,因此需要特别安装

在我完成这个可能有效也可能无效的过程之前,我想问一下是否有另一个更简单的解决方案 运行 WebRTC 无需互联网访问且不需要第三台计算机作为信令服务器,或者是否有对于 WebRTC 以外的工具有什么建议更适合我的应用程序吗?我对这项技术很陌生,肯定会缺少一个简单或现有的解决方案。任何有关此事的帮助将不胜感激。

对于那些好奇的人,使用的单板计算机是 NVidia Jetson Nanos。

找到解决方案。使用 Google Codelabs example,修复只涉及删除配置中的默认 ice 服务器。本质上,这意味着改变

const config = {
  iceServers: [
    {urls: ["stun:stun.l.google.com:19302"]}
  ]
}

const config = {
  iceServers: []
}

您可以 运行 在您的 LAN 上使用本地服务器。这非常简单直接。 检查这个 enter link description here

安装后 运行

turnserver -p 19302

现在你的配置文件:

const config = {
  iceServers: [
    {urls: ["stun:<<YOUR HOST IP>>:19302"]}
  ]
}