通过 tcp 的 Webrtc 媒体?
Posted
技术标签:
【中文标题】通过 tcp 的 Webrtc 媒体?【英文标题】:Webrtc media over tcp? 【发布时间】:2017-11-21 11:02:54 【问题描述】:我是 WebRTC 的新手。
我了解了回合服务器。
下面的东西用于为 webrtc 应用程序配置在 TCP 上工作的转向服务器。
webrtc 应用程序中的服务器配置示例:-
url: ‘turn:192.158.29.39:3478?transport=tcp’,
credential: ‘JZEOEt2V3Qb0y27GRntt2u2PAYA=’,
username: ‘28224511:1379330808′
?transport=tcp 的含义是像他们说的那样在 TCP 协议上工作。
我的问题是,
turn server 工作在 TCP 上的意思是,它仅用于在它工作在 TCP 上的 turn 服务器之间建立连接,或者通过它使用 TCP 协议的 turn 服务器传输 WebRTC 媒体。 TCP数据包用于什么目的?
是否可以通过 TCP 数据包传输 WebRTC 媒体?
【问题讨论】:
【参考方案1】:不建议通过 TCP 强制 WebRTC 媒体,它只是严格防火墙的后备选项。
如果您在 TURN url 中指定 ?transport=tcp
,则 WebRTC 客户端将通过 TCP 连接到 TURN 服务器。
客户端将通过 TCP 发送 STUN 请求以分配中继候选(据我所知,目前 chrome/firefox 仅请求 UDP 中继候选)。
通过 TURN 服务器强制执行严格 TCP:
仅使用带有?transport=tcp
的 TURN url
指定iceTransportPolicy:"relay"
,让所有媒体都通过TURN流动
在peerConnections之间交换relay Candidates(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
【讨论】:
我试过你的方法,但我似乎无法让 coturn 监听 tcp。它要么在udp上,要么根本没有。它不适用于公共 wifi。 非常感谢@Ajay 发布此解决方案!这是一个救生员!以上是关于通过 tcp 的 Webrtc 媒体?的主要内容,如果未能解决你的问题,请参考以下文章