【问题标题】:FFMPEG: Frame parameter initializations in HEVC decoderFFMPEG:HEVC 解码器中的帧参数初始化
【发布时间】:2015-03-08 05:14:35
【问题描述】:

我正在浏览集成在 FFMPEG 中的 HEVC 解码器。我实际上是在尝试了解它的流程和工作原理。

通过流,我的意思是代码中读取输入 .bin 文件的各种参数的部分。比如它在哪里读取分辨率,它在哪里决定它需要播放的fps,输出显示格式是yuv420p等等。

最初我怀疑是位于/libavformat/hevcdec.c 的 hevc 解复用器在此文件中执行输入文件读取工作。有一个探测函数,用于检测在解码输入 bin 流时选择哪个解码器。此外,我们还有一个FF_DEF_RAWVIDEO_DEMUXER。从输入文件中读取的分辨率和其他参数是否在此函数中?

其次,我怀疑 hevc 解析器位于:/libavcodec/hevc_parser.c 但在这里我认为它只是解析帧数据,即查找帧结尾。那么,我的这个假设对吗?

任何建议或任何预测都会对我很有帮助。请提出您宝贵的建议。提前致谢。

【问题讨论】:

    标签: ffmpeg codec hevc h.265


    【解决方案1】:

    要更具体地了解解码器中发生了什么,最好从 HEVC/H.265 标准 (http://www.itu.int/rec/T-REC-H.265) 开始学习。它包含查找分辨率、fps 等位置所需的所有信息。

    如果您想从 FFMPEG 获得更多详细信息,这里有一些提示:

    • /libavcodec/hevc_parser.c 包含 H.265 Annex B 解析器,它将字节流转换为一系列 NAL 单元。每个 NAL 单元都有自己的格式,应根据其 NAL 单元类型进行解析。
    • 如果您正在寻找视频序列的基本属性,您可能会对 SPS(序列参数集)解析感兴趣。其格式在标准的第 7.3.2.2.1 节中进行了描述,/libavcodec/hevc_ps.c 中有一个函数ff_hevc_decode_nal_sps,用于从比特流中提取 SPS 参数。

    注意:我说的是 FFMPEG 版本 2.5.3。其他版本的代码结构可能不同。

    【讨论】:

      猜你喜欢
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多