我处理来自 IP 摄像机的 H.264 RTP 流。我使用的相机将每个 I 帧拆分为几个 NAL 单元,每个单元都拆分为 RTP 数据包(开始和结束标志确定每个单元的尺寸,而不是帧的尺寸)。
我如何知道帧传输何时完成并且我有足够的数据来解压缩它?由于帧由多个单元组成 - 标志不能用于确定其结束。
我工作的大多数相机将每一帧分割为 RTP 数据包,其中标志确定帧的开始和结束。所以我从这个等待结束标志的数据包中解包数据 - 这是一个完整的帧。
我从这台相机得到的 NAL 单元序列是:
[NAL_UT_SPS] 序列参数集 +
[NAL_UT_PPS] 图片参数集
[NAL_UT_SEI] 补充增强信息
[NAL_UT_IDR_SLICE] I 帧图像数据的第 1 部分
[NAL_UT_IDR_SLICE] I 帧图像数据的第 2 部分
[NAL_UT_IDR_SLICE] I 帧图片数据的第 3 部分
[NAL_UT_SLICE] 第一个 P 帧
[NAL_UT_SLICE] 第二个 P 帧
[NAL_UT_SLICE] 第三个 P 帧
...
从这个序列很明显,我可以将 [NAL_UT_SPS] + [NAL_UT_PPS] + [NAL_UT_SEI] + 3*[NAL_UT_IDR_SLICE] 组合成一个 I 帧,我将在最近将其提供给解码器。但是我怎样才能确定有多少图片数据部分呢?我如何知道我收到的第 #X 部分不是序列中的最后一个?
有任何想法吗?