Qt与FFmpeg联合开发指南(一)--Windows下环境搭建

一、下载ffmpeg:

   https://ffmpeg.zeranoe.com/builds/

 

二、解压ffmpeg

选择Windows 64-bit 版本,Static,Share,Dev三个都下载,下载好的三个文件分别为:

  将三个包解压后,分别命名为dev,shared,static,我的目录结构为:

添加FFmpeg库到Qt项目
使用QtCreator创建一个Qt gui项目,创建完项目后:

在项目根目录下创建ffmpeg文件夹,在ffmpeg文件夹中创建include和lib文件夹
解压ffmpeg-20190814-8fcc5d9-win64-dev.zip压缩文件
将解压后ffmpeg-20190814-8fcc5d9-win64-dev文件夹下include目录中所有头文件拷贝到新建的ffmpeg目录下的include文件夹中
将解压后ffmpeg-20190814-8fcc5d9-win64-dev文件夹下lib目录中的所有dll.a结尾的文件拷贝到ffmpeg的lib文件夹中
修改项目pro文件,在pro文件中增加如下内容:

#添加库
INCLUDEPATH += $$PWD/ffmpeg/include 

LIBS    += $$PWD/ffmpeg/lib/avcodec.lib \
            $$PWD/ffmpeg/lib/avdevice.lib \
            $$PWD/ffmpeg/lib/avfilter.lib \
            $$PWD/ffmpeg/lib/avformat.lib \
            $$PWD/ffmpeg/lib/avutil.lib \
            $$PWD/ffmpeg/lib/postproc.lib \
            $$PWD/ffmpeg/lib/swresample.lib \
            $$PWD/ffmpeg/lib/swscale.lib \

测试FFmpeg库是否能正常使用

  1. 在项目中ffmpeg01.h文件中添加FFmpeg头文件
//当前C++兼容C语言
extern "C"
{
//avcodec:编解码(最重要的库)
#include <libavcodec/avcodec.h>
//avformat:封装格式处理
#include <libavformat/avformat.h>
//swscale:视频像素数据格式转换
#include <libswscale/swscale.h>
//avdevice:各种设备的输入输出
#include <libavdevice/avdevice.h>
//avutil:工具库(大部分库都需要这个库的支持)
#include <libavutil/avutil.h>
}

   2.在Widget构造函数中增加如下代码

qDebug("------------------------------------------------------------------------");
qDebug("%s", avcodec_configuration());
qDebug("version: %d", avcodec_version());
qDebug("------------------------------------------------------------------------");
  1. 编译运行程序,编译成功,运行时如下报错:
Starting E:\code\qt\build-FFmpegLibTest-Desktop_Qt_5_9_2_MinGW_static_32bit-Release\release\FFmpegLibTest.exe...
Cannot retrieve debugging output.
程序异常结束。
The process was ended forcefully.
E:\code\qt\build-FFmpegLibTest-Desktop_Qt_5_9_2_MinGW_static_32bit-Release\release\FFmpegLibTest.exe crashed.

报这个错是因为缺少FFmpeg动态库
解压ffmpeg-20190814-8fcc5d9-win64-shared.zip,将bin目录下的所有dll文件拷贝到编译后的release目录中。

重新编译运行程序,程序正常运行,并在QtCreator控制台输出如下内容:

------------------------------------------------------------------------
--disable-static --enable-shared --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
version: 3814756
------------------------------------------------------------------------

猜你喜欢

转载自blog.csdn.net/qq_34623621/article/details/105953643