原始的音视频数据数据量很大,为了方便传输和存储,我们会对原始数据进行压缩和编码。h264是常见的视频编码标准之一,AAC是常见的音频编码标准之一。这里介绍一下如何通过FFmpeg库将视频文件中的h264视频流解码成原始YUV视频数据,如何将AAC音频流解码成原始的PCM音频数据。音视频流的基本解码流程如下图所示:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1d959a6cb79fb7b9de7361a08fd79646.png#pic_center)
视频流解码
视频文件中视频流的解码流程大体分为以下几步:
1.分配媒体文件上下文并获取流信息
2.查找对应的视频流和解码器
3.读取视频流中的数据包并解码
4.将解码之后的数据输出到对应的文件中
使用FFmpeg库对视频流进行解码的示例如下所示:
(采用h264编码的视频流进行验证通过)
#define _CRT_SECURE_NO_WARNINGS
#include <libavutil/imgutils.h>
#include <libavut