9

WebRTC 主要用于浏览器到浏览器的实时媒体通信,但在我的情况下,它将用于浏览器到服务器的音频通信。

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

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

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

4

2 回答 2

9

不,使用 WebRTC 是不可能的。

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

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

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

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

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

于 2012-11-27T10:18:04.973 回答
3

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

于 2012-11-30T18:50:24.980 回答