文章目录
一、协议总览
协议/格式 | 细节 | 对比 | 适用场景 | 用法 |
---|---|---|---|---|
WebRTC | 使用 UDP 传输协议,支持 P2P 通信,可以实现低延迟的实时通信。 | 与其他需要服务器中转的协议相比,WebRTC 可以直接在客户端之间传输数据,降低了延迟和带宽消耗。 | 适用于需要实时交互的场景,如视频会议、在线教育、实时游戏等。 | WebRTC 提供了 JavaScript API,开发者可以在网页中直接使用这些 API 实现实时通信。 |
RTP/RTCP | RTP 通常使用 UDP 传输协议,可以提供时间戳和序列号,支持数据的同步和重组。 | 与其他协议相比,RTP/RTCP 更专注于实时性,但可能需要更复杂的网络设施来支持。 | 适用于需要实时传输音视频的场景,如视频会议、在线直播等。 | RTP/RTCP 通常在更底层的网络库中使用,开发者需要有一定的网络知识才能使用。 |
RTMP | 使用 TCP 传输协议,可以提供稳定的数据传输,但延迟较高。 | 与其他协议相比,RTMP 更稳定,但实时性较差。 | 适用于需要稳定传输的场景,如在线直播、视频点播等。 | RTMP 通常在 Flash Player 中使用,但现在也有很多其他的库和工具支持 RTMP。 |
HLS | 使用 HTTP 传输协议,通过将流媒体切分为一系列小的文件来传输,可以适应网络状况的变化。 | 与其他协议相比,HLS 更易于通过防火墙,且兼容性更好。 | 适用于各种网络状况下的流媒体传输,如在线直播、视频点播等。 | HLS 可以在所有支持 HTTP 和 M3U8 播放列表的播放器中使用。 |
FLV | FLV 是 Adobe 开发的格式,通常与 Flash Player 和 RTMP 一起使用。 | 与 MP4 相比,FLV 的兼容性较差。 | 适用于视频点播、存储和分享等场景。 | FLV 可以在大多数媒体播放器和网页播放器中播放。 |
MP4 | MP4 是一种国际标准格式,支持多种编码和多种数据类型。 | 与 FLV 相比,MP4 兼容性更好,支持的编码和数据类型也更多。 | 适用于视频点播、存储和分享等场景。 | MP4 可以在大多数媒体播放器和网页播放器中播放。 |
二、WebRTC
2.1 时序图
简化的 WebRTC 信令过程的时序图如下: