FFMpeg中主要数据结构存在包含关系,如下标题显示的就是包含层级的关系。

AVFormatContext ->  AVStream -> AVCodecContext -> AVCodec,其中后者是前的的数据成员。

AVFormatContext是一个贯穿始终的数据结构,很多函数都用到它作为参数,是输入输出相关信息的一个容器。他的主要成员如下:
1. AVInputFormat和AVOutputFormat,同一时间只能存在一个。当播放视频时AVInputFormat生效,录制视频时则AVOutputFormat生效。
2. AVStream是继AVFormatContext之后第二个贯穿始终的数据结构,它保存于数据流相关的编解码器、数据段等信息,还包含“流”这个概念中的一些信息。
2.1 AVCodecContext保存AVCodec指针和与codec相关的数据。在AVStream初始化后,AVCodecContext的初始化时Codec使用中最重要的一环。AVCodecContext中的codec_typecodec_id二个变量对于encoder/decoder的匹配来说,最为重要。
AVCodecContext中有两个成员:AVCodec,AVFrame。
2.1.1 AVCodec记录了所要使用的Codec的信息并有5个函数:init,encoder,close,decode,flush来完成编解码工作。
2.1.2 AVFrame中主要包饭了编码后的帧信息。
typedef struct AVFrame {
    FF_COMMON_FRAME
} AVFrame;
其中FF_COMMON_FRAME是以宏出现的,由于编码过程中AVFrame中的数据是要经常存取的,为了加速,采取这样的代码手段。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-09-19
  • 2021-11-08
  • 2021-11-15
  • 2021-10-01
  • 2021-11-26
  • 2022-12-23
猜你喜欢
  • 2022-02-22
  • 2021-09-18
  • 2021-05-07
  • 2022-12-23
  • 2021-05-11
  • 2021-09-26
相关资源
相似解决方案