2024年5月4日发(作者:)
H.264(AVC:Advanced Video Coding)是目前应用广泛的视频编码格式,而为
了让H.264能在网络环境中进行传输,需要将之封装为RTP包,协议RFC6184
就是描述如何定义这些RTP包的。RFC6184废弃了RFC3984,是目前最新的协议
标准。
简介
H.264标准协议定义了两种不同的类型:一种称为VCL(Video Coding
Layer),另一种称为NAL(Network Abstraction Layer)。为了在网络上进
行传输,NAL Encoder会将VCL Encoder输出的内容(slice)封装称为NALUs
(NAL Units),然后再封包(如RTP包)进行传输。NALU的格式如下:
F(1 bit):如果是坏帧,则置1。否则为0。
NRI(2 bit):如果是00,则表示此帧即使丢失了,也不影响解码;其他值则
表示此帧如果丢失了,会影响解码。
Type(5 bit):NAL Unit的类型。
RTP包格式
RTP头格式在RFC3550协议中定义,其中与H.264相关的字段如下:
M(1 bit):表示此RTP包是NAL的最后一个RTP包。
PT(7 bits):动态映射的payload type的值,通常在SDP中完成协商。
Sequence number(16 bits):单调递增,同时也表示了解码的顺序。
timestamp(32 bits):NALU的采样时间,时钟频率是90k。
RTP负载格式
根据NALU和RTP包大小,定义了三种不同的负载格式。如下:
Single NAL Unit:仅包含一个NALU。
Aggregation Unit:包含多个NALU,其中包含四种类型:STAP-A, STAP-B,
MTAP16, MTAP24。
Fragmentation Unit:当一个NALU太大导致无法放入一个RTP包时,会使用这
种格式。
NALU type与各个负载格式的对应关系如下:
根据不同的使用场景,定义了三种不同的封包模式。如下:
单NALU模式:仅使用Single NAL Unit格式的RTP包。实现此协议的所有应用
都需要支持此模式。
非交织模式:NALU的发送顺序和其生成顺序一致。实现此协议的所有应用建议
支持此模式。
交织模式:NALU的发送顺序与其生成顺序可以不同。此模式是可选的。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1714769280a2512104.html
评论列表(0条)