【一文弄懂RFC6184】

【一文弄懂RFC6184】


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条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信