1.FFmpeg常用结构体
AVFormatContext 是一个贯穿始终的数据结构,很多函数都要用到它作为参数。它是FFMPEG解封装(flv,mp4,rmvb,avi)功能的结构体。
AVInputFormat 输入数据的封装格式。
AVStream是存储每一个视频/音频流信息的结构体。
AVCodecContext 是一个描述编解码器上下文的数据结构,包含了众多编解码器需要的参数信息。
AVPacket 是存储压缩编码数据相关信息的结构体。
AVCodec 是存储编解码器信息的结构体。
AVFrame 结构体一般用于存储原始数据(即非压缩数据,例如对视频来说是YUV,RGB,对音频来说是PCM),此外还包含了一些相关的信息。比如说,解码的时候存储了宏块类型表,QP表,运动矢量表等数据。编码的时候也存储了相关的数据。因此在使用
FFMPEG进行码流分析的时候,AVFrame是一个很重要的结构体。
AVIOContext 是FFMPEG管理输入输出数据的结构体。
2.FFmpeg关键函数
av_register_all():注册所有组件。
avformat_open_input():打开输入视频文件。
avformat_find_stream_info():获取视频文件信息。
avcodec_find_decoder():查找解码器。
avcodec_open2():打开解码器。
av_read_frame():从输入文件读取一zhen压缩数据。
avcodec_decode_video2():解码一帧压缩数据。
avcodec_close():关闭解码器。
avformat_close_input():关闭输入视频文件。
初学FFmpeg涉世未深,今后会在音视频领域持续钻研,相关博客会陆续更新!