FFmpeg作为目前主流的音视频开源处理框架,在目前的互联网音视频处理大行其道,但是缺点是底层实现非常复杂,源码代码晦涩难懂,那么了解其基本处理流程就显得非常重要。下面,简单地将其主要框架梳理一下。方便大家入门。
(1).av_register_all();//注册所有文件格式和编解码库
(2).avformat_network_init();//打开网络视频流
(3).av_open_input_file();//读取文件头部把信息保存到AVFormatContext结构体
(4).av_find_stream_info();//为pFormatCtx->streams填充上正确的信息
(5).CODEC_TYPE_VIDEO;//通过判断得到视频流类型
(6).avcodec_find_decoder();//查找解码器
(7).avcodec_open();//打开编解码器
(8).avcodec_alloc_frame();//分配空间保存帧数据
(9).av_read_frame();//不断从流中提取帧数据
(10).avcodec_decode_video();//解码视频流
(11).avcodec_close();//关闭解码器
(12).avformat_close_input_file();//关闭输入文件
FFmpeg解码流程: