• Qt + FFmpeg 搭建 Windows 开发环境


    官方博客: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
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    注: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 程序:

    #include 
    
    // 包含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;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    后面运行程序,出现了报错: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 \
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    照旧拷贝 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 凑合。懂这方面的可以评论区指点一下。

  • 相关阅读:
    android中的Bas64为何缺少 ==
    css初学之css基础用法及选择器(二)
    Spring Boot异步请求处理框架
    学生HTML个人网页作业作品----(画家企业8页)
    HTML5学习系列之项目实战1
    速码!!BGP最全学习笔记:路由反射器实验配置
    Android + Bmob 实现用户注册登录
    制作一个企业网站——html华为官网购物商城项目的设计与实现
    微服务学习(九):安装OpenOffice
    IOS热门面试题一
  • 原文地址:https://blog.csdn.net/ProgramNovice/article/details/133580724