在没有互联网访问权限的本地网络中运行带有WebRTC的应用程序



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

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

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

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

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

您可以在局域网上运行本地 TURN 服务器。这是非常简单明了的。例如turnserver,来自Coturn项目。

安装后,只需运行

turnserver -p 19302

现在你的配置文件:

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

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

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

const config = {
iceServers: []
}

相关内容

  • 没有找到相关文章

最新更新