FFmpeg学习教程

视音频数据处理入门:H.264视频码流解析
FFmpeg 4.0.2 + SDL2-2.0.8 实现H264解码后播放
FFMPEG cpp 封装

 

 


准备

ffmpeg库
SDL2库
cmake构建
h264文件

解码

解码即将264格式解析成帧

ffmpeg解码流程

[笔记]音视频学习之ffmpeg实践《二》ffmpeg解码_ide

SDL显示流程

[笔记]音视频学习之ffmpeg实践《二》ffmpeg解码_音频流_02

ffmpeg 解码常见api

av_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()

关闭输入文件

总结