Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ x264/avcodec:从NAL单元推断帧序列号_C++_H.264_Libavcodec_X264 - Fatal编程技术网

C++ x264/avcodec:从NAL单元推断帧序列号

C++ x264/avcodec:从NAL单元推断帧序列号,c++,h.264,libavcodec,x264,C++,H.264,Libavcodec,X264,我在我的项目中使用的是avcodec H264解码器。我从网络接收NAL单元,将来自同一帧的NAL粘在一起(在网络层添加额外的头),然后传递给解码器。我想知道帧序列号是否被编码到NAL单元中——这是合乎逻辑的,因为我们需要对IDR帧的引用 如果存在此信息-如何提取 现在我正在研究ITU-T H.264规范,我承认这是一个相当复杂的规范。到目前为止,我还没有找到我的问题的答案。没有。frame_num是不够的(因为它对于不同的帧可以相等,而不是因为MaxFrameNum frame溢出)。例如,后

我在我的项目中使用的是avcodec H264解码器。我从网络接收NAL单元,将来自同一帧的NAL粘在一起(在网络层添加额外的头),然后传递给解码器。我想知道帧序列号是否被编码到NAL单元中——这是合乎逻辑的,因为我们需要对IDR帧的引用

如果存在此信息-如何提取


现在我正在研究ITU-T H.264规范,我承认这是一个相当复杂的规范。到目前为止,我还没有找到我的问题的答案。

没有。frame_num是不够的(因为它对于不同的帧可以相等,而不是因为MaxFrameNum frame溢出)。例如,后续B帧可以具有相同的帧数量,但pic_顺序不同。正如我所说,您需要阅读H.264规范中的“7.4.1.2.4检测主编码图片的第一个VCL NAL单元”,以从不同的主编码图片中找出NAL。为了找出一张图片中NAL的顺序,您可以分析切片中第一个\u mb\u的值。

我不确定您到底想找到什么。如果您试图找出不同的NAL是否对应于同一帧,则需要阅读“7.4.1.2.4检测主编码图片的第一个VCL NAL单元”。请注意,slice_标题中的相同帧编号不足以表示NAL对应于相同的帧。谢谢。这正是问题所在——我如何理解NAL来自同一个框架?在传递给解码器的块中,它们应该按什么顺序排列?@nobody555,据我所知-slice头中的frame_num完全对应于帧序列号,即使它每次溢出
MaxFrameNum
,这也不是问题-我不会让帧缓冲区大于该值。另外,我使用的是基线配置文件,所以切片顺序无关紧要,所以frame_num应该足够了。我有什么地方错了吗?对于基线配置文件也是这样吗?我们只有I帧和P帧吗?是的,如果我们根据H.264规范进行一般讨论,这是可能的。但你们真的能从编码器的实现中看出这一点吗。AFAIK x264将为该基线流中的每个P帧增加frame_num,但如果您将具有后续IDR帧,则它们将具有相等的frame_num(应强制为零),但将具有不同的IDR_pic_id。