1.解码整体流程
整体过程如下:
- av_register_all()
- avformat_alloc_context()
AVFormatContext初始化
- avformat_open_input()
该函数用于打开多媒体数据并且获得一些相关的信息
- avformat_find_stream_info()
该函数可以读取一部分视音频数据并且获得一些相关的信息
- avcodec_find_decoder()
avcodec_find_decoder()用于查找FFmpeg的解码器
- avcodec_open2()
该函数用于初始化一个视音频编解码器的AVCodecContext
- av_read_frame()
ffmpeg中的av_read_frame()的作用是读取码流中的音频若干帧或者视频一帧。例如,解码视频的时候,每解码一个视频帧,需要先调用 av_read_frame()获得一帧视频的压缩数据,然后才能对该数据进行解码(例如H.264中一帧压缩数据通常对应一个NAL)
- avcodec_decode_video2()
ffmpeg中的avcodec_decode_video2()的作用是解码一帧视频数据。输入一个压缩编码的结构体AVPacket,输出一个解码后的结构体AVFrame
- avcodec_close()
- avformat_close_input()