Qt + FFmpeg 搭建 Windows 开发环境

Qt + FFmpeg 搭建 Windows 开发环境

  • [Qt + FFmpeg 搭建 Windows 开发环境](#Qt + FFmpeg 搭建 Windows 开发环境)
    • [安装 Qt Creator](#安装 Qt Creator)
    • [下载 FFmpeg 编译包](#下载 FFmpeg 编译包)
    • [测试 Qt + FFmpeg](#测试 Qt + FFmpeg)
      • 踩坑
      • [解决方法1:换一个 FFmpeg 库](#解决方法1:换一个 FFmpeg 库)
      • [解决方法2:把项目改成 64 位](#解决方法2:把项目改成 64 位)
    • 后记

官方博客:https://www.yafeilinux.com/

Qt开源社区:https://www.qter.org/

Qt + FFmpeg 搭建 Windows 开发环境

安装 Qt Creator

本文章采用 Qt Creator 4.6.2,详细信息:

安装步骤参考本人博客:Qt 5基础 | Qt Creator 5.6.1-1的下载与安装

下载 FFmpeg 编译包

进入 FFmpeg 官网,点击 Download:

进入下载界面,点击 Windows builds from gyan.dev:

进入 gyan.dev/ffmpeg/builds,选择 ffmpeg-5.1.2-full_build-shared.7z 下载:

注:一般不选用最新版本下载。

下载完成后解压,内容如下:

测试 Qt + FFmpeg

踩坑

新建一个 Qt 项目,项目名 testFFmpeg:

将 ffmpeg-5.1.2-full_build-shared 拷贝到项目目录下:

注:只拷贝其中的 include 和 lib 也行,注意路径名。

testFFmpeg.pro 里面添加 ffmpeg 头文件和库文件路径:

复制代码
win32 {
INCLUDEPATH += $$PWD/ffmpeg-5.1.2-full_build-shared/include
LIBS += $$PWD/ffmpeg-5.1.2-full_build-shared/lib/avformat.lib   \
        $$PWD/ffmpeg-5.1.2-full_build-shared/lib/avcodec.lib    \
        $$PWD/ffmpeg-5.1.2-full_build-shared/lib/avdevice.lib   \
        $$PWD/ffmpeg-5.1.2-full_build-shared/lib/avfilter.lib   \
        $$PWD/ffmpeg-5.1.2-full_build-shared/lib/avutil.lib     \
        $$PWD/ffmpeg-5.1.2-full_build-shared/lib/postproc.lib   \
        $$PWD/ffmpeg-5.1.2-full_build-shared/lib/swresample.lib \
        $$PWD/ffmpeg-5.1.2-full_build-shared/lib/swscale.lib
}

注:libs 的多行引用一定要记得带斜杠,否则后续的引用无效。

先编译看看:

显示正常。

此时,在项目同目录下生成了 build-testFFmpeg-Desktop_Qt_5_9_6_MinGW_32bit-Debug,里面有项目的执行文件。

把 ffmpeg-5.1.2-full_build-shared\bin 的 dll 文件拷贝到执行文件所在目录:

注:本次我们只用到了 avutil-56.dll,只拷贝这个也行。

修改 main.c 程序:

c 复制代码
#include <stdio.h>

// 包含ffmpeg头文件
#include "libavutil/avutil.h"

int main()
{
    printf("Hello FFMPEG, av_version_info is %s\n", av_version_info());

    printf("avutil_configuration is \n%s\n", avutil_configuration());

    return 0;
}

后面运行程序,出现了报错:error: undefined reference to `av_version_info'。

原因:项目选择了 32 位的构建套件,而 FFmpeg 库是 64 位的!

参考:Qt测试FFmpeg的av_version_info()函数,出现undefined reference to `av_version_info'

解决方法1:换一个 FFmpeg 库

在网上找到了一个 win32 编译的 32 位 FFmpeg 库,修改前面 .pro 文件的库的配置即可。

FFmpeg 库下载链接:ffmpeg-win32-4.2.2.zip

运行结果:

解决方法2:把项目改成 64 位

重新构建一个项目,选用 MSVC2015 64bit,命名为 testFFmpeg_win64:

pro 文件添加:

复制代码
INCLUDEPATH += $$PWD/ffmpeg-5.1.2-full_build-shared/include \

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

照旧拷贝 ffmpeg-5.1.2-full_build-shared 到项目里。

构建项目,遇到报错:Qt 程序数据库管理器不匹配。

解决方法:

工具→选项→构建套件(Kit),MSVC2015 64bits 的编译器换成 amd64。之前是 x86_arm64,是 32 位的。

照旧添加那些 dll 文件:

运行成功,结果:

后记

没想到配个环境都能花这么久的时间,Qt + FFmpeg 实现视频播放器项目推迟一下下,看赛马娘第三季要紧!

现在官网的编译包不能直接在 32bit 的项目里用,有点烦的。先用老东西 ffmpeg-win32-4.2.2.zip 凑合。懂这方面的可以评论区指点一下。

相关推荐
dyxal3 小时前
内网 Windows 离线安装 uv:极速 Python 包管理器的部署实战
windows·python·uv
stone08233 小时前
如何解决Windows硬盘变成了空白
windows
咸鱼翻身小阿橙4 小时前
QT-P3
开发语言·qt·计算机视觉
零号全栈寒江独钓4 小时前
基于c/c++实现linux/windows跨平台ntp时间戳服务器
linux·c语言·c++·windows
舒一笑5 小时前
Windows 下执行 pnpm install 报 EBUSY: resource busy or locked,我最后用这一招解决了
前端·windows·程序员
hERS EOUS6 小时前
Redis 下载与安装 教程 windows版
数据库·windows·redis
爱吃香蕉的阿豪7 小时前
Mac 远程操作 Windows 开发:ZeroTier + JetBrains 实战指南
windows·macos·zerotoer
YJlio7 小时前
2026年4月18日60秒读懂世界:从神舟二十号出舱到L2新国标公示,今天最值得关注的6个信号
windows·python·django·计算机外设·电脑·outlook·eixv3
代码小书生15 小时前
Windows X-Lite Win11 26H1 v3 游戏优化系统!集Win11、Win10、Win7三代优点,兼顾游戏办公生产算力,系统精简纯净!
windows·win10·电脑系统·windows10·26h1·windows x-lite·操作系统操作系统
贵沫末17 小时前
python——打包自己的库并安装
开发语言·windows·python