从零开始学习音视频编程技术(五) 使用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
具体的步骤如下所示:
1.首先需要先初始化一下,使用如下函数:
2.接着需要分配一个AVFormatContext,FFMPEG所有的操作都要通过这个AVFormatContext来进行
这里文件名先不要使用中文,否则会打开失败,后期再讲解如何处理中文。
而且我们并不知道他实际用的是什么编码器。
这就是为什么一开始我们使用FFMPEG来操作,因为很多东西我们可以不关系。
6.现在开始读取视频了:
7.前面我们说过 视频里面的数据是经过编码压缩的,因此这里我们需要将其解码:
9.得到RGB数据之后就是直接写入文件了:
完整的代码如下:
http://download.csdn.net/detail/qq214517703/9623516
相关文章推荐
- 从零开始学习音视频编程技术(五) 使用FFMPEG解码视频之保存成图片
- 从零开始学习音视频编程技术(四) FFMPEG的使用
- 从零开始学习音视频编程技术(七) FFMPEG Qt视频播放器之SDL的使用
- 从零开始学习音视频编程技术(很好的系列)——QT+SDL+FFMPEG
- 从零开始学习音视频编程技术(35) windows下编译并调试ffmpeg
- 从零开始学习音视频编程技术(十) FFMPEG Qt视频播放器之播放控制
- 从零开始学习音视频编程技术(六) FFMPEG Qt视频播放器之显示图像
- 从零开始学习音视频编程技术(八) FFMPEG Qt视频播放器之音视频同步
- 从零开始学习音视频编程技术(六) FFMPEG Qt视频播放器之显示图像
- 从零开始学习音视频编程技术(十) FFMPEG Qt视频播放器之播放控制
- 从零开始学习音视频编程技术(九) FFMPEG Qt视频播放器之同步进阶篇
- 从零开始学习音视频编程技术(34) Linux篇之编译ffmpeg
- 从零开始学习音视频编程技术(二十二) FFMPEG Qt视频播放器之BUG修复
- 从零开始学习音视频编程技术(十一) FFMPEG Qt视频播放器之美化界面
- 使用ffmpeg将BMP图片编码为x264视频文件,将H264视频保存为BMP图片,yuv视频文件保存为图片的代码
- 从零开始学习音视频编程技术(二) 音频格式讲解
- 从零开始学习音视频编程技术(十七) 录屏软件开发之音频采集
- 从零开始学习音视频编程技术(十六) 采集屏幕编码H264
- ffmpeg将视频每帧画面保存为PPM格式图片,使用最新的ffmpeg官网15-7-2日更新的版本
- 从零开始学习音视频编程技术(十三) 录屏软件开发之屏幕录像