前面的文章分析了FFmpeg的编解码调用过程,也对FFmpeg编解码过程中使用到的关键结构体进行了分析,想必大家对FFmpeg也有了初步的了解。那今天这篇文章将以FFmpeg解码流程为主线,深入分析其中层层调用的FFmpeg代码。
先来看一下FFmpeg解码过程涉及到源码调用过程,如图所示(其中,橙色部分+红色箭头为解码主流程,橙色部分为FFmpeg对外提供的接口函数,白色部分为橙色功能函数实现中涉及到主要功能函数):
主要函数为(流程同“音视频入门系列-FFmpeg篇(解码)”):
◆ avformat_network_init():初始化网络库
◆ avformat_open_input():打开输入流,获取头信息
◆ avformat_find_stream_info():通过读媒体数据,获取音视频流信息
◆ avcodec_find_decoder():通过ID查找音频解码器或者视频解码器
◆ avcodec_parameters_to_context():填充解码器上下文
◆ avcodec_open2():打开音频解码器或者视频解码器
◆ av_read_frame():获取音视频(编码)数据
◆ avcodec_send_packet():将音视频编码数据发送给解码器
◆ avcodec_receive_frame():获取解码后的音视频数据(音视频原始数据,如YUV和PCM)
音视频入门系列文章已同步在微信公众号(可扫下方二维码关注):八小时码字员
音视频入门系列,同步录制了学习视频,已上传至bilibili(八小时码字员):音视频入门系列(图像、音频、字幕、视频封装格式,FFmpeg、ffplay源码分析,解码、编码、转码,流媒体协议,服务器部署)_哔哩哔哩_bilibili
音视频学习交流QQ群:693316541