基于 TCP 的 WebRTC 媒体?

2023-11-26

我是 WebRTC 新手。

我了解了回合服务器。

下面的内容用于为 webrtc 应用程序配置基于 TCP 的 Turn 服务器。

webrtc 应用程序中的转向服务器配置示例:-

{

       url: ‘turn:192.158.29.39:3478?transport=tcp’,  
       credential: ‘JZEOEt2V3Qb0y27GRntt2u2PAYA=’,
       username: ‘28224511:1379330808′

}

?transport=tcp 的含义是它像他们所说的那样在 TCP 协议上工作。

我的问题是,

Turn 服务器以 TCP 方式工作,仅用于在 TCP 上工作的 Turn 服务器之间建立连接,或通过使用 TCP 协议的 Turn 服务器传输 WebRTC 媒体。 TCP 数据包用于什么目的?

是否可以通过 TCP 数据包传输 WebRTC 媒体?


不建议通过 TCP 强制 WebRTC 媒体,这只是严格防火墙的后备选项。

如果您指定?transport=tcp在 TURN url 中,WebRTC 客户端将通过 TCP 连接到 TURN 服务器。
客户端将通过 TCP 发送 STUN 请求来分配中继候选(据我所知,目前 chrome/firefox 仅请求 UDP 中继候选)。

要通过 TURN 服务器强制执行严格的 TCP:

  • 仅使用 TURN url?transport=tcp
  • Specify iceTransportPolicy:"relay",这样所有媒体都会通过 TURN 流动

在peerConnections之间交换中继候选(udp)后,媒体路径将如下所示

P1 P1TURN P2TURN P2

如果 P1TURN 和 P2TURN 始终相同,则您可以选择 TURN 中继路径作为 LAN/lo 接口,即您将获得具有 LAN/lo IP 的 UDP 中继候选。

如果你想避免媒体路径中的UDP和两次TURN,你需要使用一些SFU/SVC,比如Jitsi(支持伪 SSL 候选)/Janus.
那么媒体路径将如下所示

P1 SFU/MCU P2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于 TCP 的 WebRTC 媒体? 的相关文章

  • 使用 iPhone 作为热点时 TCP 连接无法正常工作

    我正在开发一个 iOS 应用程序 它通过 TCP 套接字连接到在 Android 上运行的服务器应用程序 为了找到第二个设备的 IP 我使用 UDP 请求并接收服务器的 IP 当我将它们连接到 Wi Fi 网络或使用 Android 设备作
  • C# - 从客户端检查 TCP/IP 套接字状态

    我想为我的 TCP IP 客户端类提供 CheckConnection 函数 以便我可以检查是否发生了错误 我自己的客户端断开连接 服务器断开连接 服务器卡住等 我有类似的东西 bool isConnectionActive false i
  • 结束两个对等方之间的 WebRTC 视频通话

    我已经使用以下命令在两个同伴之间建立了视频聊天WebRTC 我想让一个对等方结束聊天 并让另一个对等方知道聊天已结束 聊天结束后 需要为双方执行一些代码 这PeerConnection对象有一个removeStream 应该触发的方法onr
  • Android 浏览器报告屏幕尺寸错误?

    我正在开发一个移动网站 我遇到了一个有趣的问题 我正在我的台式机以及我的 Motorola Droid Android 2 2 上进行测试 我设置了媒体查询来加载 3 个不同的样式表 320 像素宽 480 像素宽和 640 像素宽 我注意
  • 如何模拟 TCP/IP 错误?

    在多层应用程序上 我需要模拟各种 TCP IP 错误来测试一些重新连接代码 有谁知道我可以使用什么工具 基于 Windows 来实现此目的 谢谢 Scapy http secdev org projects scapy 允许您控制数据包的各
  • 我可以简化同一专用网络上计算机的 WebRTC 信号传输吗?

    WebRTC 信号让我发疯 我的用例非常简单 信息亭和控制室网络应用程序之间的双向音频对讲 两台计算机都在同一网络上 两者都无法访问互联网 所有机器都有已知的静态 IP 我读到的所有内容都希望我使用 STUN TURN ICE 服务器 这个
  • 在 Python 中通过 TCP 套接字发送文件

    我已经成功地将文件内容 图像 复制到新文件 然而 当我通过 TCP 套接字尝试同样的事情时 我遇到了问题 服务器循环未退出 客户端循环在到达 EOF 时退出 但服务器无法识别 EOF 这是代码 Server import socket Im
  • Python套接字模块:Recv()数据响应被切断

    解释 我目前正在尝试使用 python 脚本控制智能电源板 为了实现这一点 我使用了带有套接字模块的 TCP 连接 大约 75 的情况下 我会得到我正在寻找的响应 数据 并且一切都运行良好 然而 大约 25 的情况下 响应会以完全相同的长度
  • 在 Golang Server 中接受持久的 tcp 连接

    我正在尝试使用 Go 并且想创建一个 TCP 服务器 我可以通过 telnet 访问该服务器 发送命令并接收响应 const CONN HOST localhost CONN PORT 3333 CONN TYPE tcp func mai
  • 错误:在 Google 应用引擎上部署节点 js 时找不到模块“/workspace/server.js”

    经过一周的搜索 我无法找到适用于我的 Node js 应用程序的应用程序引擎部署问题的解决方案 我已经用这个替换了原来的代码Express 的 hello world 示例 https expressjs com en starter he
  • C# Socket.receive连续接收0字节且循环中不阻塞

    我正在尝试用 C 编写一个最简单的多线程 TCP 服务器 它接收来自多个客户端的数据 每次连接新客户端时 都会建立套接字连接 并将套接字作为参数传递给新类函数 之后运行 while 循环并接收数据 直到客户端连接为止 这里的问题是 sock
  • PHP 扩展 mysqli 和 nd_mysqli 之间的区别[重复]

    这个问题在这里已经有答案了 Mysqli 准备好的语句 如下所示 在以下情况下会抛出以下错误 get result 叫做 stmt connection gt prepare select column from table where i
  • 在云服务器中运行 python 脚本的最简单方法是什么?

    我有一个网络爬行 python 脚本 需要几个小时才能完成 并且无法在我的本地计算机上完整运行 有没有一种方便的方法可以将其部署到简单的 Web 服务器 该脚本基本上将网页下载到文本文件中 如何最好地实现这一点 谢谢 既然你说性能是一个问题
  • firefox 不支持 mediastreamtrack.getsources,如何执行等效操作

    有没有等效的方法来获取连接到 PC 的视频设备列表 除了内置网络摄像头连接之外 我还有一个外部网络摄像头连接 mediastreamtrack getsources 在 Chrome 中工作 但 Firefox 报告 TypeError M
  • 保存到服务器后,隐藏字符“\u0”添加到文件中

    我正在使用 Apache 服务器为 Web 开发网站提供服务 这样我就可以不断保存和编辑文件 我使用 Gulp for Sass 来连接和丑化 css 和 js 文件 一个月前 我的 js 和 css 文件遇到问题 似乎在文件下面添加了随机
  • 访问 AWS 上的 Tensorboard

    我正在尝试访问 AWS 上的 Tensorboard 这是我的设置 张量板 tensorboard host 0 0 0 0 logdir train 在端口 6006 上启动 TensorBoard b 39 您可以导航到http 172
  • 无法分配请求的地址 - 可能的原因?

    我有一个由主服务器和分布式从服务器组成的程序 从属服务器向服务器发送状态更新 如果服务器在固定时间内没有收到特定从属服务器的消息 则会将该从属服务器标记为关闭 这种情况一直在发生 通过检查日志 我发现从站只能向服务器发送一个状态更新 然后永
  • 让 WSO2 IOT 服务器作为 Windows 服务运行

    我在Server 2012R2上安装了WSO2 IOT Server 我安装了 YAJSW 包装器并按照 WSO2 说明进行配置 当我启动 runConsole bat 来配置 Windows 服务时 出现以下错误 我设置了 JAVA HO
  • 主目录 不允许下载媒体

    尝试将 PDF 文件保存在下载目录中 但之后getExternalStoragePublicDirectory在 Android Q 后完全弃用 无法将文件保存在 DCIM 或 Pictures 文件夹之外的任何其他位置 因为尝试在此处保存
  • 序列化是通过套接字发送数据的最佳选择吗?

    有人告诉我 序列化不是通过套接字发送数据的最佳方法 但他们说他们在一本书上读过一次 并且不确定更好的方法 因为他们以前没有真正做过网络 那么序列化是最好的方法还是有更好的方法 如果这有很大的不同的话 这也是一个游戏 通过搜索有关通过它发送对

随机推荐

  • flutter - 自更新到 firebase 9.0.X 以来出现错误 event.snapshot.value

    我收到错误event snapshot value自从更新到 firebase 9 0 5 以来 我有很多这样的函数 它们在 firebase 8 X 中运行良好 Stream
  • 如何根据指定的行数拆分 CSV 文件?

    我有 CSV 文件 大约 10 000 行 每行有 300 列 存储在 LINUX 服务器上 我想将此 CSV 文件分成 500 个 CSV 文件 每个文件有 20 条记录 每个都具有与原始 CSV 中相同的 CSV 标头 有没有什么lin
  • Java HTTP/2 服务器套接字

    我想让服务器套接字在 Java 中支持 HTTP 2 最好是 TLS https 我有一个 TLS 服务器套接字工作正常 但浏览器只能与它对话 HTTP 1 1 如果我理解正确的话 您需要 ALPN 来让 HTTP 2 浏览器连接到您的 T
  • 如何在 SELECT 语句中使用 BOOLEAN 类型

    我有一个参数为 BOOLEAN 的 PL SQL 函数 function get something name in varchar2 ignore notfound in boolean 此功能是第三方工具的一部分 我无法更改它 我想在
  • 如何授予 ASP.NET 写入 Windows 7 文件夹的权限?

    我有一个新的 Win7 工作站 我正在尝试让 ScrewTurn Wiki 在该机器上运行 我的 STW 安装使用文件系统选项来存储其数据 因此我需要向网站安装文件夹中的 ASP NET 工作进程授予写入权限 然而 我似乎无法想出 Win7
  • 如何更改 openshift 容器平台中的权限?

    我是 Openshift 的新手 我已经在 openshift 中部署了一个应用程序 当我检查日志时 某些文件存在权限被拒绝错误 现在 我想更改已部署在 Openshift 中的容器的权限 但收到 不允许操作 警告 我该如何解决 这是针对运
  • 面试:为集合的集合设计一个迭代器

    在java中为集合的集合设计一个迭代器 迭代器应该隐藏嵌套 允许您迭代属于所有集合的所有元素 就像使用单个集合一样 这是一个老问题 但现在 2019 年 我们有了 JDK8 的好东西 特别是 我们有流 这使得这项任务变得简单 public
  • 自定义 Mathematica 快捷键

    Is there a place I can view change global shortcut options like Command 9 turn into Input style 特别是 我需要一种更快的方法来创建项目符号列表
  • 从元组列表中格式化 JSON 字符串的更 Pythonic 方式

    目前我正在这样做 def getJSONString lst join rs for i in lst rs join str i 0 str i 1 join return rs 我称之为 rs getJSONString name va
  • 字符串中的 JSON 转义序列无效

    我正在使用一个 MySQL 数据库 它为谷歌地图编码了多边形 当我尝试以 json 形式返回查询时 jsonlint 抱怨 我不确定为什么它抱怨 我确实尝试转义 latlon 中的 但仍然得到相同的错误 Parse error on lin
  • JavaScript:打印前 12 个月——“March”打印两次?

    我正在尝试编写一个脚本来打印过去 12 个月的名称 由于本月是一月 因此应该打印 十二月 十一月 十月 九月 八月 七月 六月 可能 四月 行进 二月 一月 相反 它打印 March 两次 http jsfiddle net h69gm04
  • 有什么方法可以分析 firestore 数据库吗?

    我的 Firestore 数据库中的实体写入数量非常多 大多数路径的写入权限都受到限制 通过后端服务器使用 admin SDK 完成 只有极少数路径具有写访问权限 特别是仅对已通过身份验证 注册 加入和批准的特定组的用户而言 因此即使滥用的
  • 连接到 Amazon RDS Oracle 实例时如何解决“读取调用减一”错误

    我在 Amazon RDS 实例上运行 Oracle 11GR2 有时我会得到一个IO Error Got minus one from a read call当打电话给DriverManager getConnection getUrl
  • Git 哈希重复

    Git 允许使用以下命令检索提交的哈希值 git rev parse HEAD 这使33b316c or git rev parse short HEAD 这使33b316cbeeab3d69e79b9fb659414af4e7829a32
  • 错误:未找到名称“ngModel”的导出

    构建我的角度项目后 我收到错误 错误 未找到名称 ngModel 的导出 我的 UI 在 Docker 容器中运行 甚至不知道在哪里寻找这个 它在开发中工作正常 发球 有任何想法吗 我有同样的错误 尽管在开发中 事实证明我没有添加表单模块模
  • 如何从 Google Analytics 获取原始日志?

    是否可以从 Google Analytic 获取原始日志 有没有可以从GA生成原始日志的工具 不 您无法获取原始日志 但没有什么可以阻止您将完全相同的数据记录到您自己的 Web 服务器日志中 看看顽童代码并借用它 将以下两行更改为指向您的
  • 如何创建 AND 或 OR 表达式?

    我写了这个 if a 11 b 1 if a 1 AND b 1 但两者都不起作用 我也有同样的问题OR 如何编写包含以下内容的表达式OR or AND You use 对于 和 以及 为 或
  • 如何将 JavaScript onClick 处理程序添加到嵌入的 html 对象?

    我正在尝试将 onClick 处理程序添加到嵌入对象中 处理程序需要执行外部 js 文件中的函数 该文件通过链接到当前 html 文件button svg id buttonEmbed width 95 height 53 type ima
  • keras LSTM 层训练时间太长

    每当我在 Keras 上尝试 LSTM 模型时 似乎由于训练时间过长 该模型无法训练 例如 像这样的模型每步需要 80 秒来训练 def create model self inputs inputs input lstm placehol
  • 基于 TCP 的 WebRTC 媒体?

    我是 WebRTC 新手 我了解了回合服务器 下面的内容用于为 webrtc 应用程序配置基于 TCP 的 Turn 服务器 webrtc 应用程序中的转向服务器配置示例 url turn 192 158 29 39 3478 transp