ffmpeg sdk结构体解析

Posted 叮咚咕噜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ffmpeg sdk结构体解析相关的知识,希望对你有一定的参考价值。

本文后面会陆陆续续补充,调用sdk时使用的一些结构体的作用含义和这些结构体之间的包含关系

FFmpeg解码的数据结构简介

▫ AVFormatContext:封装格式上下文结构体,也是统领全局的结构体,保存了视频文件封装格式相关信息。
▫ AVInputFormat:每种封装格式(例如FLV, MKV, MP4, AVI)对应一个该结构体。
▫ AVStream:视频文件中每个视频(音频)流对应一个该结构体。
▫ AVCodecContext:编码器上下文结构体,保存了视频(音频)编解码相关信息。
▫ AVCodec:每种视频(音频)编解码器(例如H.264解码器)对应一个该结构体。
▫ AVPacket:存储一帧压缩编码数据。
▫ AVFrame:存储一帧解码后像素(采样)数据。

FFmpeg数据结构分析

  • AVFormatContext
    • iformat:输入视频的AVInputFormat
    • nb_streams :输入视频的AVStream 个数
    • streams :输入视频的AVStream []数组
    • duration :输入视频的时长(以微秒为单位)
    • bit_rate :输入视频的码率
  • VInputFormat
    • name:封装格式名称
    • long_name:封装格式的长名称
    • extensions:封装格式的扩展名
    • id:封装格式ID
    • 一些封装格式处理的接口函数
  • AVStream
    • id:序号
    • codec:该流对应的AVCodecContext
    • time_base:该流的时基
    • _frame_rate:该流的帧率
  • AVCodecContext
    • codec:编解码器的AVCodec
    • width, height:图像的宽高(只针对视频)
    • pix_fmt:像素格式(只针对视频)
    • sample_rate:采样率(只针对音频)
    • channels:声道数(只针对音频)
    • sample_fmt:采样格式(只针对音频)
  • AVCodec
    • name:编解码器名称
    • long_name:编解码器长名称
    • type:编解码器类型
    • id:编解码器ID
    • 一些编解码的接口函数
  • AVPacket
    • pts:显示时间戳(和前面的time_base相乘组合使用)
    • dts :解码时间戳
    • data :压缩编码数据
    • size :压缩编码数据大小
    • stream_index :所属的AVStream(表示前面AVStream的数组下标),表示是音频流还是视频流
  • AVFrame
    • data:解码后的图像像素数据(音频采样数据)。
    • linesize:对视频来说是图像中一行像素的大小;对音频来说是整个音频帧的大小
    • width, height:图像的宽高(只针对视频)。
    • key_frame:是否为关键帧(只针对视频) 。
    • pict_type:帧类型(只针对视频) 。例如I,P,B。

以上是关于ffmpeg sdk结构体解析的主要内容,如果未能解决你的问题,请参考以下文章

FFMPEG关键结构体

FFmpeg 结构体学习: AVIOContext 分析

FFmpeg 结构体学习: AVStream 分析

FFmpeg 常用结构体

FFMPEG结构体分析:AVCodecContext

FFmpeg 结构体学习: AVCodec 分析