通过 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 媒体?的主要内容,如果未能解决你的问题,请参考以下文章

WebRTC 有多少个通道以及使用了哪些传输?

WebRTC(四)流媒体传输技术

【速成】WebRTC 交互流程

WebRTC媒体服务器

揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器&开源项目介绍

web技术分享| webRTC 媒体流录制