1 FFmpeg简介
FFmpeg:FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。——百度百科
2 FFmpeg下载及安装
2.1 下载
FFmpeg官网下载页面:https://ffmpeg.org/download.html。
如果对使用或平台等有特殊要求,可以下载源码,自己编译。
如果只是通常使用,官网已提供了一些编译好的库可以直接用,以上页面鼠标指向Windows图标,然后选择链接进入,我一般是进入Windows builds by BtbN,进入后,可以看到很多版本的库,目前最新版本是6.0,我选择下载的是ffmpeg-master-latest-win64-gpl-shared.zip,也可以选择下载早期版本的库。
2.2 安装
这个包里包含了FFmpeg 64位版本的bin、include、lib文件,可以用来进行64位应用程序开发,下载后,解压到适合的地方,例如我直接解压到F:\。
为了方便使用,把解压后的bin目录添加进系统的Path变量里。
3 FFmpeg编译器开发环境设置
3.1 VS系列编译器
如果使用VS2015、VS2017等微软系列编译器,在要加入FFmpeg的工程的属性页里:
首先,设置C/C+±常规-附加包含目录,把FFmpeg的include目录添加进去
第二,设置链接器-常规-附加库目录,把FFmpeg的lib目录添加进去
第三,在链接器-输入-附加依赖项中添加要用到的FFmpeg的lib,这个一般看你需要用到什么函数,如果不确定,可以至少添加以下几个:
avcodec.lib
avformat.lib
avutil.lib
swscale.lib
avfilter.lib
avdevice.lib
postproc.lib
swresample.lib
3.2 Qt系列编译器
如果使用的是qt编译器,直接在项目的pro文件中添加,同样,lib要添加哪些,看具体用到哪些函数,以下这些一般功能都包含了:
INCLUDEPATH += F:/ffmpeg-master-latest-win64-gpl-shared/include
LIBS += F:/ffmpeg-master-latest-win64-gpl-shared/lib/avcodec.lib
LIBS += F:/ffmpeg-master-latest-win64-gpl-shared/lib/avformat.lib
LIBS += F:/ffmpeg-master-latest-win64-gpl-shared/lib/avutil.lib
LIBS += F:/ffmpeg-master-latest-win64-gpl-shared/lib/swscale.lib
LIBS += F:/ffmpeg-master-latest-win64-gpl-shared/lib/avfilter.lib
LIBS += F:/ffmpeg-master-latest-win64-gpl-shared/lib/avdevice.lib
LIBS += F:/ffmpeg-master-latest-win64-gpl-shared/lib/postproc.lib
LIBS += F:/ffmpeg-master-latest-win64-gpl-shared/lib/swresample.lib
4 代码中的include
代码包含相应FFmpeg头文件时,要注意一点,由于目前大多数都使用C++来编写代码,而FFmpeg库是用C编写的,所以在CPP文件中要用C兼容方法包含:
#ifdef __cplusplus
extern "C"
{
#endif
#include <libavformat/avformat.h>
#include <libavcodec/avcodec.h>
#include <libswscale/swscale.h>
#include <libavutil/imgutils.h>
#include <libavutil/pixfmt.h>
#ifdef __cplusplus
}
#endif
否则,会出现编译通过,但链接时出错,明明添加了FFmpeg的lib库,却依然提示“无法解析的外部符号”的链接错误。
配置完了,可以尝试用FFmpeg做个视频解码,参考下一篇文章FFmepg视频解码。