在各大博客,论坛,看到很多人对流媒体音视频的开发感兴趣,可是不知道怎么入门,对音视频的了解也很少,写代码更不用说了,经过一段时间的整理,我准备在csdn上写一套ffmpeg音视频播放器的开发教程,希望对想从事ffmpeg音视频领域的给与帮助。
视频开发库有很多,例如微软的DirectShow;开源库OpenCV,当然OpenCV主要是图像处理,视频部分还是用的ffmpeg, 而且无法解码音频;SDL;大华和海康都有自己的库等等。音视频属于流媒体领域,学习和应用难度大,周期长,容易出现人才断层,公司对应聘者的要求都比较高,让很多人望而却步。
很多软件都使用了FFmpeg, 比如:迅雷,腾讯视频,QQ, 微信,QQ音乐,暴风影音,爱奇艺,优酷,格式工厂等。放几张软件目录图大家看看:
QQ客户端
腾讯视频
爱奇艺客户端
事实上,FFMPEG的流媒体视音频编解码功能太强大了,几乎囊括了现存所有的视音频编码标准,因此只要做视音频开发,几乎离不开它。
关于ffmpeg的博客很多,源码讲解,实例Demo等等,太多了,最有名气的应该是雷神了,斯人已去,对技术界是一大损失。本系列教程在讲解时也会引用到别人现有的研究内容,毕竟我们是ffmpeg的使用者,需要站到巨人的肩膀上。有不当或者错误的地方,请各位朋友及时提示斧正。
本教程专栏地址:https://blog.csdn.net/yao_hou/category_9275800.html
基于FFmpeg的视频播放器开发系列教程(一):FFmpeg简介与项目环境搭建
基于FFmpeg的视频播放器开发系列教程(二):FFmepg基本使用与视频播放
基于FFmpeg的视频播放器开发系列教程(三):音频解码播放
基于FFmpeg的视频播放器开发系列教程(四):音视频同步
基于FFmpeg的视频播放器开发系列教程(五) : 界面优化
基于FFmpeg的视频播放器开发系列教程(六) : FFmpeg解码后音量调整
基于FFmpeg的视频播放器开发系列教程(七) : FFmpeg拉rtmp流
1.1 ffmpeg的下载
官网链接 https://ffmpeg.zeranoe.com/builds/
可以下载最新版本或者以前的版本,如下所示的4.0版本
例如选择4.0版本,依次下载Static, Share, Dev三个文件。例如32位版本的是如下三个文件
Dev文件夹下是include和lib文件
Shared文件的Bin目录是ffmpeg的dll
1.2 在VS中配置FFmpeg
FFmpeg在VS中的配置很简单,就是普通的SDK配置方式,开发时只需要include, lib,bin里的文件,例如,创建一个C++的控制台程序,右键项目名 -- 属性。
(1)添加头文件目录
(2)添加lib目录
(3)在附加依赖项写上lib的名字
附上各个lib的名字,方便大家粘贴。
avcodec.lib
avdevice.lib
avfilter.lib
avformat.lib
avutil.lib
postproc.lib
swresample.lib
swscale.lib
如果不想这样做也可以在程序中用代码添加也可以,如下所示:
#pragma comment(lib, "avformat.lib")
(4)把ffmpeg bin目录下的dll放到生成的exe所在的目录,为了方便,我把所有的dll文件都放进去好了。至于是32/64的版本,可以自己选择。
本教程做播放器,需要用界面库,关于界面库的选择与学习,各家公司,学校都不同。C++的界面库有MFC,Qt,DuiLib,SOUI等等,该播放器用Qt来做界面开发,Qt学起来比MFC稍微容易些,还可以跨平台,可以开发Linux,Mac的程序。
我是选择把Qt装到VS2015中,VS调试比较容易,功能强大。如果Qt和VS都安装好的,看下一篇博客继续学习。
Qt没安装好的,可以参考网上的安装方法。
本地视频播放
网络拉流
菜单项
播放器的基本功能都有,双击放大全屏,视频进度拖拽,音量调整等。其它功能慢慢更新吧.
源码大概会在第五六篇左右上传到github。
工欲善其事必先利其器,环境配好后,下一篇开始ffmpeg开发之旅。