【问题标题】:Webrtc media over tcp?通过 tcp 的 Webrtc 媒体?
【发布时间】: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 媒体?

【问题讨论】:

    标签: tcp server webrtc media turn


    【解决方案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 发布此解决方案!这是一个救生员!
    猜你喜欢
    • 2021-06-25
    • 2018-06-26
    • 1970-01-01
    • 2018-11-02
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多