视频协议与封装格式
视频协议
RTSP
RTSP协议是一个实时流传输协议,输出rtp封装码流,具有很好的可扩展性,新方法和参数很容易加入RTSP
ONVIF
ONVIF规范描述了网络视频的模型、接口、数据类型以及数据交互的模式。并复用了一些现有的标准,如WS系列标准等。ONVIF规范的目标是实现一个网络视频框架协议,使不同厂家所产生的网络视频产品完全互通。
- 特点
信令由WebService实现
取流使用RTSP协议
码流封装格式为rtp
兼容性强,配套完善,市场占有率高
- 使用场景
第三方设备接入
海外市场
RTMP
实时消息传输协议,输出flv封装码流。RTMP协议传输数据格式是RTMP Message,但在传输时发生端会把Message划分为带有Message ID的chunk,在接收端会根据chunk中包含data的长度,message id和message的长度把chunk还原完整的message,从而实现信息的收发。
HLS
HTTP Live Streaming,输出TS封装码流。
- HLS协议由三部分组成,HTTP+M3U8+TS
- HTTP是传输协议,M3U8是索引文件,TS是视音频的媒体信息
- 利用切片技术按设定的时间间隔对TS码流进行切割并保存为一个TS文件
缺点:因为要有缓存,所以延迟严重
视频封装格式
RTP
RTP是实时传输协议,是rtsp协议码流传输的封装格式
RTP码流每帧中所有的时间戳相等,且最后一个RTP包,包头的mark bit置1,RTP包含RTP头和RTP数据
- 优点:RTP封装包头有序列号,udp传输时可进行排序和丢包检测,适用于码流网络传输
- 缺点:RTP封装头内没有包长的字段,写入文件后,无法读出一个完整的包,所以RTP封装的码流保存成文件是不能直接播放的,不适合存储
TS
TS是基于MPEG-2的封装格式,特点就是视频流的任一片段开始都是可以独立解码的,广泛应用于数字电视领域
TS分为三层ts层、pes层、es层
- es层就是音视频数据
- pes层是在音视频数据上加了时间戳等对数据帧说明信息
- ts层是在pes层上加入数据刘识别和传输的必要信息码流
TS码流采用固定长度188字节的数据包
- 优点:
当传输误码破坏了某一个TS包的同步信息时,接收端可在固定的位置检测到下一个TS包到同步信息,从而恢复同步,避免数据丢失,适用于在传输误码丢失,适用于传输误码丢失比较严重的网络场景
- 缺点:
负载有限,封装存在浪费,如果数据信息只有10字节大小也进行188字节TS封装,不建议用于存储
FLV
FLV主要是为了Adobe公司flash播放器和服务器之间音频视频和数据传输开发的开放协议RTMP协议的网络传输
FLV包括文件头和文件体两部分,文件体由一系列的Tag及Tag size对组成,Tag又可以分为audio、video和script,分别代表音频流,视频流和脚本流
- 优点
文件体积小,便于传输、共享
众多网站支持所有
- 缺点
不被所有播放器支持
PS
ps是程序流或节目流的简称,程序流将一个或多个分组但有共同的时间基准的基本数据流(PES)合并成一个整体流
PS流可以视为多个PS GOP,每个GOP是以I帧起始的多帧集合,包括音频帧、P/B帧等多个PS包组成
- 优点:定义较多可扩展字段,拓展性好,结构简单,易于分割,和TS封装相比,相同视频时长的数据量较少,适用于存储
- 缺点:PS流的包结构是可变长的,一旦某一PS包同步信息丢失,接收端无法确定下一个包的同步位置,就会造成失步,导致严重的信息丢失,在信道环境较好,传输误码较低时,采用PS码流网络传输