【问题标题】:Sending WebRTC MediaStream over Websocket (RTP over HTTP/Websocket)通过 Websocket 发送 WebRTC MediaStream(RTP over HTTP/Websocket)
【发布时间】:2012-11-21 10:36:41
【问题描述】:

WebRTC 用于实时浏览器到浏览器的媒体通信,但在我的例子中,它将用于浏览器到服务器的音频通信。

根据我收集的信息,MediaStream 是使用 RTP over UDP 传输的。

除了用于信令的协议之外,这将需要至少两个额外的端口,这是我想避免的。

在 WebRTC 中,是否有可能使用 RTP over Websocket 而不是 RTP over UDP,这样我只需要使用端口 80 或 443?

【问题讨论】:

    标签: websocket rtp webrtc


    【解决方案1】:

    不,使用 WebRTC 是不可能的。

    WebRTC 旨在为浏览器提供三个主要功能:

    1. 能够访问设备的摄像头和麦克风;
    2. 能够建立 SRTP 会话以发送/接收音频和视频;
    3. 能够在浏览器之间建立对等数据通道;

    Web 应用程序可以通过定义为 here 的 Javascript API 访问这些功能。 要访问媒体设备,您可以使用getUserMedia(),您将获得一个 MediaStream 以附加到 HTML5 音频和视频标签。 要创建 SRTP 会话,您需要 create a peer connection 并管理要使用的流。

    您必须向浏览器请求媒体 SDP 提供并使用任何协议(例如 websockets)将其发送给另一方。当对方收到您的 SDP 报价时,它可以将其注入浏览器,请求 SDP 答复,然后将其发回。一旦两个浏览器都有报价,它们就会使用 ICE 开始 SRTP 协商。

    因此,您将无法访问 RTP 数据包以通过 websocket 发送它们。

    【讨论】:

    • 我也很害怕。所以,它是两个额外的端口。感谢您的明确答复!
    • 是否可以使用 JSON 对象创建自己的媒体流?只是好奇。
    • 不,媒体流总是由浏览器提供。要么是本地媒体流,您从 getUserMedia() 方法获取,要么是远程媒体流,您从对等连接接收。
    • nakib 我做了一个类似的问题,因为我想知道 websocket 和 webrtc 之间的限制是什么,我会感谢你的知识...stackoverflow.com/questions/21208698/… 谢谢!
    • 你没有。在这种情况下,您需要使用 TCP over TLS。
    【解决方案2】:

    实际上,计划是支持 RTCP-mux RFC 5761 和某种形式的 BUNDLE(仍在辩论中)以将 所有 流合并到一个端口上。但是,该端口将由 ICE/STUN 选择。需要时,它还会使用 TURN,并最终支持 TURN-TCP,我相信它可以在端口 80 上运行。但是,质量会受到影响。

    【讨论】:

    • +1 很高兴知道这可能是未来的解决方案,并且有一些我可以进一步研究的协议。当然,通过 TCP 而不是 UDP 发送是有成本的,但对于某些公司来说,这可能是他们愿意付出的代价。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 2014-10-24
    • 2023-03-15
    • 2018-05-23
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多