当前位置: 首页 > article >正文

FFMpeg-Window下Qt使用MinGW配置FFmpeg开发环境

Window下Qt使用MinGW配置FFmpeg开发环境

  • 一、概述
  • 二、环境搭建
    • 1. FFMpeg下载
    • 2. 配置工程
      • 1. FFmpegDemo.pro 文件
      • 2. 测试 main.cpp
      • 3. 配置链接库
        • 1. 在 **环境变量** 中去把 **ffmpeg/bin** 目录保存到 **Path** 环境变量中
        • 2. 拷贝 **ffmpeg/bin** 的 dll 到 编译后的目录下
        • 3. 在Qt Creator 中配置编译 **ffmpeg/bin** 目录保存到 **Path** 编译环境变量

一、概述

本文记录一下在Window下Qt使用MinGW配置FFmpeg开发环境

  • 系统:Windows 10
  • Qt编译套件:5.14.2 Mingw 64
  • FFmpeg:master (最新版本)

二、环境搭建

1. FFMpeg下载

https://ffmpeg.org/download.html#build-windows
在这里插入图片描述
选择去github下载,我下载的使用 lgpl 协议的开发包
在这里插入图片描述

2. 配置工程

将下载的压缩包解压提取到工程目录下,如下放置
在这里插入图片描述

1. FFmpegDemo.pro 文件

QT       += core

CONFIG += c++17

SOURCES += \
    main.cpp
    
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

win32 {
    message("Window Platform Of FFMpeg")
    INCLUDEPATH += $$PWD/ffmpeg/include
    DEPENDPATH += $$PWD/ffmpeg/include

    LIBS += -L$$PWD/ffmpeg/lib/     			\
                              -lavcodec         \
                              -lavdevice        \
                              -lavfilter        \
                              -lavfilter        \
                              -lavutil          \
                              -lswresample      \
                              -lswscale
}

2. 测试 main.cpp

#include <QApplication>
#include <QDebug>

extern "C" {
#include <libavutil/avutil.h>
#include <libavcodec/avcodec.h>
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    qDebug() << "av_version: "<< av_version_info();
    qDebug() << "av_license: "<< avutil_license();
    qDebug() << "av_configuration: "<< avutil_configuration();

    return a.exec();
}

输入如下:

av_version:  N-118059-g90af8e07b0-20241215
av_license:  LGPL version 3 or later
av_configuration:  --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-version3 --disable-debug --enable-shared --disable-static --disable-w32threads --enable-pthreads --enable-iconv --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-libxml2 --enable-lzma --enable-fontconfig --enable-libharfbuzz --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --disable-avisynth --enable-chromaprint --enable-libdav1d --disable-libdavs2 --disable-libdvdread --disable-libdvdnav --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --disable-frei0r --enable-libgme --enable-libkvazaar --enable-libaribcaption --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-libzmq --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --disable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --enable-vaapi --disable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libvvenc --disable-libx264 --disable-libx265 --disable-libxavs2 --disable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-libs=-lgomp --extra-ldflags=-pthread --extra-ldexeflags= --cc=x86_64-w64-mingw32-gcc --cxx=x86_64-w64-mingw32-g++ --ar=x86_64-w64-mingw32-gcc-ar --ranlib=x86_64-w64-mingw32-gcc-ranlib --nm=x86_64-w64-mingw32-gcc-nm --extra-version=20241215

3. 配置链接库

如果编译通过了,但是报错了,说明找不到动态库
在这里插入图片描述
即需要将把动态库和我们的程序关联起来:

下面三种选一种都可以,我一般只用第三种方式

1. 在 环境变量 中去把 ffmpeg/bin 目录保存到 Path 环境变量中

在这里插入图片描述

2. 拷贝 ffmpeg/bin 的 dll 到 编译后的目录下

在这里插入图片描述

3. 在Qt Creator 中配置编译 ffmpeg/bin 目录保存到 Path 编译环境变量

在这里插入图片描述


http://www.kler.cn/a/444290.html

相关文章:

  • 【设计模式】空接口
  • 南城云趣:智能云平台,杜绝电动车充电安全隐患
  • 机器学习中做时间序列模型考虑把时间作为特征分析
  • 会话守护进程
  • 可访问性(Accessibility)的重要性及实现:构建包容性的数字世界
  • STM32中ADC模数转换器
  • 代码开发相关操作
  • Rust之抽空学习系列(四)—— 编程通用概念(下)
  • 迎接国庆,我上线了第一款小程序
  • selenium模拟某网校带密码登陆
  • 举例说明如何在linux下检测摄像头设备具备的功能
  • 如何@Transactional在 Spring Boot 中使用注解
  • Java收发邮件 Jakarta mail
  • Volta——开箱即用的Node.js 版本管理工具
  • linux 下nmcli命令使用方法
  • Unity3D实现水特效(shader)+倒影
  • Android RXjava实现子线程做耗时操作,比new Thread和handler更香
  • MySQL笔记--多表查询
  • C语言输入缓冲区问题及其解决办法
  • Redhat 10 beta安装流程步骤详细教程
  • SWIFT基本使用
  • MySQL 学习系列:01_安装部署MySQL 8.2.0 并使用changer master 传统方式搭建部署一主一从操作记录
  • 1-1 STM32-0.96寸OLED显示与控制
  • linux 安装jdk
  • leetcode----mysql
  • SpringMVC 学习笔记