0

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

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

我研究了其他解决方案并遇到了OpenVidu,它实现了 WebRTC,但允许将信令服务器内置到其中一台客户端计算机中(至少这是我在另一篇堆栈溢出帖子中读到的)。我还没有测试这个工具,看看它是否能解决我的问题,但我目前被项目使用的 docker 映像阻止,不支持我的单板计算机使用的 ARM 处理器,因此需要特殊安装。

在我完成可能会或可能不会工作的过程之前,我想问一下是否有另一种更简单的解决方案来运行 WebRTC,无需互联网访问且不需要第三台计算机作为信令服务器,或者是否有任何关于 WebRTC 以外的工具的建议对我的申请会更好。我对这项技术非常陌生,肯定会错过一个简单的或现有的解决方案。对此问题的任何帮助将不胜感激。

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

4

2 回答 2

0

你可以在你的局域网上运行本地turnserver。这非常简单直接。检查这个在此处输入链接描述

安装后运行

turnserver -p 19302

现在你的配置文件:

const config = {
  iceServers: [
    {urls: ["stun:<<YOUR HOST IP>>:19302"]}
  ]
}
于 2020-12-01T02:49:27.210 回答
0

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

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

const config = {
  iceServers: []
}
于 2020-05-29T01:02:17.207 回答