您的位置:首页 > 编程语言

从零开始学习音视频编程技术(五) 使用FFMPEG解码视频之保存成图片

2017-06-07 13:09 639 查看
首先来个简单的例子,使用FFMPEG打开视频文件,并解码保存成一张张的图片。

具体的步骤如下所示:

1.首先需要先初始化一下,使用如下函数:
使用这个函数完成编码器和解码器的初始化,只有初始化了编码器和解码器才能正常使用,否则会在打开编解码器的时候失败。

2.接着需要分配一个AVFormatContext,FFMPEG所有的操作都要通过这个AVFormatContext来进行
3.接着调用打开视频文件

这里文件名先不要使用中文,否则会打开失败,后期再讲解如何处理中文。
4.文件打开成功后就是查找文件中的视频流了:
5.现在根据视频流 打开一个解码器来解码:
可以看出 我们可以直接根据查找到的视频流信息获取到解码器。

而且我们并不知道他实际用的是什么编码器。

这就是为什么一开始我们使用FFMPEG来操作,因为很多东西我们可以不关系。

6.现在开始读取视频了:

可以看出 av_read_frame读取的是一帧视频,并存入一个AVPacket的结构中。

7.前面我们说过 视频里面的数据是经过编码压缩的,因此这里我们需要将其解码:
8.基本上所有解码器解码之后得到的图像数据都是YUV420的格式,而这里我们需要将其保存成图片文件,因此需要将得到的YUV420数据转换成RGB格式,转换格式也是直接使用FFMPEG来完成:
至于YUV420和RGB图像格式的具体内容,这里不用去了解。这里只需要知道有这么个东西就行了,对我们使用FFMPEG转换没有影响。

9.得到RGB数据之后就是直接写入文件了:
至此读取视频解码保存成图片就写好了:

完整的代码如下:
完整的工程下载:

http://download.csdn.net/detail/qq214517703/9623516
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐