流媒体协议
三大类
- 传统视频流协议
RTMP
RTSP
- 基于 HTTP 的自适应协议
- 新技术
SRT
WebRTC
TCP & UDP
RTMP
基于TCP
RTSP
基于UDP
TCP
传输控制协议
位于应用层和网络层之间的传输控制协议 提供可靠的流传输服务
字节流的形式传输
UDP
用户数据报协议
无连接协议 也位于应用层和网络层之间
数据包的形式传输
TCP vs UDP
- TCP 是面向连接的,而 UDP 是无连接的
- TCP 是重量级的,而 UDP 是轻量级的
- TCP 提供可靠的服务,而 UDP 不提供可靠的服务
- TCP 支持重传机制,而 UDP 不支持
- TCP 数据包按顺序到达接收器,而 UDP 无序
- TCP 不支持广播,而 UDP 支持广播
- TCP 连接是一个字节流,而 UDP 连接是消息流
RTMP
实时消息协议 基于TCP
视频编解码器:H.264
音频编解码器:AAC
延迟:3 - 30 秒
- 优点 可以保持稳定连接 将大量数据分割成小块跨多个虚拟通道传输
- 缺点 与 HTML5 播放器不兼容 受带宽问题影响
RTSP
实时流协议 基于TCP
+UDP
视频编解码器:H.264/H.265 音频编解码器:AAC
延迟:2秒
高效的 RTP
协议 将流数据分解成更小的块 这样可以更快地传递
支持可靠的分段流 可以下载的同时观看
RTP
实时传输协议 底层是UDP 实现低延迟
RTSP基于三种协议
- TCP 收发控制命令(例如播放或停止请求)
- UDP 传送音频、视频和数据
- RTP 实现低延迟
RTSP工作原理
- 用户设备向视频流平台发送
RTSP
请求 - 视频流平台返回可以操作的请求列表,比如播放、暂停等
- 用户设备向视频流平台发送具体的请求,比如播放
- 视频流平台解析请求并调用指定机制启动视频流处理
RTSP 依赖于专用服务器 依赖于 RTP
因此该协议不支持加密视频内容或重传丢失的数据包
RTMP vs RTSP
延迟
-
RTMP
:3-30秒 -
RTSP
:2-5秒
音频编解码器
-
RTMP
:AAC
、AAC-LC、HE-AAC+ v1 & v2、MP3、Speex、Opus、Vorbis -
RTSP
:AAC
、AAC-LC、HE-AAC+ v1 & v2、MP3、Speex、Opus、Vorbis
视频编解码器
-
RTMP
:H.264
, VP8, VP6, Sorenson Spark®, Screen Video v1 & v2 -
RTSP
:H.265
(preview),H.264
, VP9, VP8
优点
-
RTMP
不需要缓冲 -
RTSP
分段流式传输
缺点
-
RTMP
带宽问题
HTML5
不支持
浏览器兼容问题 -
RTSP
HTTP
不兼容
依赖其他协议
应用场景
-
RTMP
直播 -
RTSP
摄像机 视频监控
RTMP
延迟稍高 为什么适用于直播??
- 各种流媒体服务器和客户端中都有较好的支持 稳定
-
RTMP
在网络环境变化和带宽波动时表现稳定 能够提供相对可靠的传输 确保直播流畅 - 功能丰富 可以传输其他数据 比如控制指令 用户交互数据