RTP上的RTP填充h264的大小

问题描述

根据RFC 6184中的

5.6。单个NAL单位数据包:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F|NRI|  Type   |                                               |
+-+-+-+-+-+-+-+-+                                               |
|                                                               |
|               Bytes 2..n of a single NAL unit                 |
|                                                               |
|                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               :...OPTIONAL RTP padding        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

我怎么知道RTP填充的大小?而RTP填充的目的是什么?

解决方法

假设您事先知道数据包的大小,例如从基础协议层开始:UDP,TCP,SCTP等。因此,如果将padding(P)位设置为1,则应读取数据包的最后一个字节,该字节包含应忽略多少个填充八位字节的计数,包括最后一个字节本身。

在RFC 3550的5.1节中清楚地说明了填充的目的:

某些具有固定块大小的加密算法或在较低层协议数据单元中携带多个RTP数据包可能需要填充。