【发布时间】:2014-05-13 20:59:48
【问题描述】:
我在我的项目中使用 avcodec H264 解码器。我从网络接收 NAL 单元,将来自同一帧的 NAL 粘在一起(在网络层添加了额外的标头),然后传递给解码器。我想知道帧序列号是否被编码到 NAL 单元中——这是合乎逻辑的,因为我们需要对 IDR 帧的引用。
如果存在此信息 - 我如何提取它?
现在我正在研究 ITU-T H.264 规范,我承认这非常复杂。到目前为止,我还没有找到我的问题的答案。
【问题讨论】:
-
我不确定您到底想找到什么。如果您试图找出不同的 NAL 是否对应于同一帧,那么您需要阅读“7.4.1.2.4 检测主编码图片的第一个 VCL NAL 单元”。注意 slice_header 中相同的 frame_num 并不足以说明 NAL 对应的是同一帧。
-
谢谢。这正是问题所在 - 我如何理解 NAL 来自同一框架?它们在传递给解码器的块中应该按什么顺序排列?
-
@nobody555,据我所见-切片标头中的 frame_num 与帧序列号完全对应,即使它每个
MaxFrameNum溢出也不是问题-我不会制作帧缓冲区大于该值。另外我使用的是基线配置文件,所以切片顺序无关紧要,所以 frame_num 应该足够了。我是不是哪里错了?
标签: c++ h.264 libavcodec x264