前言:视频开发库有很多,例如微软的DirectShow;开源库OpenCV,当然OpenCV主要是图像处理,视频部分还是用的ffmpeg, 而且无法解码音频;SDL;大华和海康都有自己的库等等。音视频属于流媒体领域,学习和应用难度大,周期长,容易出现人才断层,公司对应聘者的要求都比较高,让很多人望而却步。很多软件都使用了FFmpeg, 比如:迅雷,腾讯视频,QQ, 微信,QQ音乐,暴风影音,爱奇艺,优酷,格式工厂等。放几张软件目录图大家看看。 QQ客户端
腾讯视频
爱奇艺客户端
事实上,FFMPEG的流媒体视音频编解码功能太强大了,几乎囊括了现存所有的视音频编码标准,因此只要做视音频开发,几乎离不开它。
关于ffmpeg的博客很多,源码讲解,实例Demo等等,太多了,最有名气的应该是雷神了,斯人已去,对技术界是一大损失。本系列教程在讲解时也会引用到别人现有的研究内容,毕竟我们是ffmpeg的使用者,需要站到巨人的肩膀上。有不当或者错误的地方,请各位朋友及时提示斧正。
本教程是在Windows下的VS2015 Qt中开发,如果是linux或mac,可以借鉴部分代码,但是环境配置会不同。
一、配置windows下ffmpeg开发环境
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的名字,方便大家粘贴。
代码语言:javascript复制1.avcodec.lib
2.avdevice.lib
3.avfilter.lib
4.avformat.lib
5.avutil.lib
6.postproc.lib
7.swresample.lib
8.swscale.lib
如果不想这样做也可以在程序中用代码添加也可以,如下所示:
代码语言:javascript复制#pragma comment(lib, "avformat.lib")
(4)把ffmpeg bin目录下的dll放到生成的exe所在的目录,为了方便,我把所有的dll文件都放进去好了。至于是32/64的版本,可以自己选择。
二.VS2015和Qt的安装
本教程做播放器,需要用界面库,关于界面库的选择与学习,各家公司,学校都不同。C 的界面库有MFC,Qt,DuiLib,SOUI等等,该播放器用Qt来做界面开发,Qt学起来比MFC稍微容易些,还可以跨平台,可以开发Linux,Mac的程序。
我是选择把Qt装到VS2015中,VS调试比较容易,功能强大。如果Qt和VS都安装好的,看下一篇博客继续学习。
Qt没安装好的,可以参考网上的安装方法。
三 软件界面与主要功能
本地视频播放
网络拉流
菜单项
播放器的基本功能都有,双击放大全屏,视频进度拖拽,音量调整等。其它功能慢慢更新吧.
源码大概会在第五六篇左右上传到github。
工欲善其事必先利其器,环境配好后,下一篇开始ffmpeg开发之旅