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数据包可能需要填充。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...