视音频数据处理入门:H.264视频码流解析
FFmpeg 4.0.2 + SDL2-2.0.8 实现H264解码后播放
FFMPEG cpp 封装
文章目录
准备
ffmpeg库
SDL2库
cmake构建
h264文件
解码即将264格式解析成帧
ffmpeg解码流程 SDL显示流程 ffmpeg 解码常见apiav_register_all
初始化所有组件,只有调用了该函数,才能使用复用器和编解码器.
avformat_open_input
打开一个文件并解析。可解析的内容包括:
视频流、音频流、视频流参数、音频流参数、视频帧索引。
int avformat_open_input(
AVFormatContext **ps,
const char *url,
ff_const59 AVInputFormat *fmt,
AVDictionary **options
);
-
AVFormatContext **ps:
封装的上下文 -
url:文件路径
-
ff_const59 AVInputFormat *fmt:输入流格式
-
AVDictionary **options:传入的附加参数
avformat_network_init();//打开网络视频流
av_open_input_file()
读取文件头部把信息保存到AVFormatContext结构体
av_find_stream_info()
为pFormatCtx->streams填充上正确的信息
CODEC_TYPE_VIDEO
通过判断得到视频流类型
avcodec_find_decoder()
查找解码器
avcodec_open()
打开编解码器
avcodec_alloc_frame()
分配空间保存帧数据
av_read_frame()
不断从流中提取帧数据
avcodec_decode_video()
解码视频流
avcodec_close()
关闭解码器
avformat_close_input_file()
关闭输入文件
总结