Qt+ffmpeg环境搭建
各平台常见视频开发库举例:
- iOS:AVFoundation AudioUnit
- Android:MediaPlayer,MediaCodec
- Windows:DirectShow
- Linux:GStreamer
FFmpeg 库是一个跨平台的视频开发库, 还有 libVLC 也是一个跨平台的视频开发库
- 掌握了其中一个库, 也能很快上手其它库, 因为音视频解码的原理类似
引入 FFmpeg 库有两种方式
一种是直接引入源码进行开发(因为源码庞大,编译较慢,不推荐新手学习时用这种方法)
一种是引入头文件和动态库进行开发,下载地址是:
https://ffmpeg.org/download.html
https://github.com/GyanD/codexffmpeg/releases //下载其它版本可以在这里下载, 已知5.1.2版本可兼容win7
shared版本是有动态库的版本(essentials是必要组件版本,东西可能不全;full是完整版本),gpl和lgpl是开源协议版本不同。
这里我采用的shared版本。
安装Qt
我选择的是5.12版,因为该版本可以直接在网上下载到完整安装包。
编译器选择的是MinGW
将 FFmpeg 库加载到Qt项目当中
- 在环境变量中添加动态库文件所在路径(例如):
D:\ffmpeg_dev\ffmpeg-6.1.1-full_build-shared\bin
- 在Qt文件中添加库文件
win32: {
FFMPEG_HOME=D:\ffmpeg_dev\ffmpeg-6.1.1-full_build-shared
# 设置 ffmpeg 头文件路径
INCLUDEPATH += $$FFMPEG_HOME/include
# 加载 ffmpeg 导入库
# -L :指定导入库的目录
# -l :指定要导入的 库名称
LIBS += -L$$FFMPEG_HOME/lib \
-lavcodec \
-lavdevice \
-lavfilter \
-lavformat \
-lavutil \
-lpostproc \
-lswresample \
-lswscale
}
测试FFMpeg 库版本
extern "C" {
#include <libavcodec/avcodec.h>
}
qDebug() << "test: FFMpeg Version: "<< av_version_info();
//加入上述代码,如可以正常打印ffmpeg版本,则说明ffmpeg库正常。如下,运行时会在调试窗口打印如下信息:
//test: FFMpeg Version: 6.1.1-full_build-www.gyan.dev
至此,Qt+FFmpeg环境即完成了。