c++ - x264/avcodec : Deduce frame sequence number from NAL unit

标签 c++ h.264 libavcodec x264

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

如果存在此信息 - 我如何提取它?

现在我正在研究 ITU-T H.264 规范,我承认它非常复杂。到目前为止,我还没有找到问题的答案。

最佳答案

没有。 frame_num 是不够的(因为它对于不同的帧可能是相等的,而不是由于 MaxFrameNum 帧溢出)。例如,后续 B 帧可以具有相同的 frame_num 但不同的 pic_order_cnt_lsb。正如我所说,您需要阅读 H.264 规范中的“7.4.1.2.4 Detection of the first VCL NAL unit of a primary coded picture”,以从不同的初级编码图片中找出 NAL。要找出一张图片中 NAL 的顺序,您可以分析 first_mb_in_slice 的值。

关于c++ - x264/avcodec : Deduce frame sequence number from NAL unit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22813800/

相关文章:

ios - AVSampleBufferDisplayLayer 如何显示 H.264

ffmpeg - 如何使用 ffmpeg 从 H264 视频中提取最接近给定帧号的关键帧

video - libavcodec 获取视频时长和帧率

audio - 如何确定编解码器/容器组合是否与 FFmpeg 兼容?

c++ - SFML 窗口不出现

c++ - 在 Qt HTML5 应用程序中使用 QtWidgets

c++ - 创建基于网格的数组

objective-c - 从 AVAssetWriter 读取实时 H.264 输出时数据损坏

c++ - 无法使用 `std::make_shared` 分配指针

ios - 解码 H264 VideoToolkit API 失败,在 VTDecompressionSessionCreate 中出现错误 -8971