FFMPEG:HEVC解码器中的帧参数初始化

时间:2014-01-21 05:26:55

标签: ffmpeg codec hevc h.265

我正在经历集成在FFMPEG中的HEVC解码器。我实际上是想了解它的流程和工作。

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

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

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

任何建议或任何预测都会对我有所帮助。请提供宝贵的建议。提前谢谢。

1 个答案:

答案 0 :(得分:1)

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

如果您想从FFMPEG获取更多详细信息,请参阅以下提示:

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

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