1.FFMPEG下载

进入http://ffmpeg.org/download.html,如果下载源码,则在右下方:

如果在linux中,直接输入git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg下载即可
下载库到windows中,则点击:

这里我们选择下载最新版本20200831的shared和dev:

  • Static静态库 : 这个版本只包含了ffmpeg.exe、ffplay.exe、ffprobe.exe三个可执行程序,没有头文件和库文件。
  • Shared动态库 : 这个版本包含了ffmpeg.exe、ffplay.exe、ffprobe.exe三个可执行程序和相关dll、lib等动态库文件。
  • Dev开发库 : 这个包含了头文件和库文件。

由于我使用的QT库有MSVC2015_64bit版本和MSVC2015_32bit版本的,所以需要64bit和32bit的shared和dev库,shared库用来运行时调用的,而dev库用来编译时调用的.下载完成后,如下图所示:

2.创建vs q项目(兼容64位和32位FFmpeg)
2.1目的 

  • 当我们选择32平台编译QT项目时,则加载32位的FFmpeg库进行编译.
  • 当我们选择64平台编译QT项目时,则加载64位的FFmpeg库进行编译.

2.2开始
首先创建4个目录include、lib、bin,src,由于我们下载的64位和32位的ffmpeg版本是一致的,所以头文件都是一样,主要是lib和dll库文件不同,所以在lib和bin目录里加以区分,项目结构如下图所示:

include、lib、bin,src4个目录创建好,并且ffmpeg导入完成后,接下来开始进入VS创建项目:

这里需要对"为解决方案创建目录“取消勾选,否则的话,会在当前项目目录下再次创建子目录来存放项目.
创建过程中,遇到设置类名的时候,需要勾上所有文件小写,类名开头大写,方便移植到linux平台,如下图所示:

创建完成,接下来配置debug win32,右击项目->属性,可以看到当前编译配置:

添加头文件路径:

添加库路径目录:

添加库文件,将avcodec.lib;avformat.lib;avutil.lib; avdevice.lib; avfilter.lib;postproc.lib; swresample.lib; swscale.lib;复制到附加依赖项中,如下图所示:

设置输出路径和调试路径:
由于生成的执行程序要和dll库一起,而dll库可以通过放入系统文件位置处、或者配置环境变量实现、或者将执行程序配置到dll库所在位置,也就是..\..\bin\winXX\下面.(linux下,则只能配置环境变量)
所以,我们需要设置项目输出路径和调试路径和dll库路径一致,设置如下两张图所示:

最后点击应用,配置好debug win32后,我们还需要切换到release win32,如下图所示:

然后再重复操作配置所有路径,配置路径和debug win32的配置一致即可.

配置好win32后,接下来,我们便切换到x64平台,如下图所示:

然后再重复操作,不过库目录需要改为..\..\lib\win64,输出目录和调试工作目录改为..\..\bin\win64.
最后修改main.cpp,来打印FFmpeg配置信息:

#include "ffmpegtest.h"
#include <QtWidgets/QApplication>
#include <QtWidgets/QPlainTextEdit> extern "C" { #include <libavcodec/avcodec.h> } int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  FfmpegTest w;   QPlainTextEdit text(&w);   text.resize(,);
  text.move(,); #ifdef _WIN64
  text.setPlainText("is Win64");
#elif defined(_WIN32)
  text.setPlainText("is Win32");
#endif   text.appendPlainText(avcodec_configuration());
  w.show();
  return a.exec();
}

2.3 测试-通过Debug X86来编译32位

2.4 测试-通过Debug X64来编译64位

3.创建creator项目(支持win32和x64)
接下来我们来创建creator项目,在源目录里,新建FfmpegTest.pro:

编辑FfmpegTest.pro,修改为如下所示,然后我们就可以打开直接进行编译了:

# ----------------------------------------------------
# This file is generated by the Qt Visual Studio Tools.
# ------------------------------------------------------ TEMPLATE = app
TARGET = FfmpegTest QT += core gui widgets DEFINES += QT_DEPRECATED_WARNINGS HEADERS += ./ffmpegtest.h
SOURCES += ./ffmpegtest.cpp \
./main.cpp FORMS += ./ffmpegtest.ui
RESOURCES += ffmpegtest.qrc # msvc编译器(这里是设置源码为utf-8(默认为gbk))
msvc{
QMAKE_CFLAGS += -source-charset:utf-8
QMAKE_CXXFLAGS += -source-charset:utf-8
} INCLUDEPATH += $$PWD/../../include #WINDOWS平台
win32 {
contains(QT_ARCH, x86_64) {
message("x64")
# 输出目录
DESTDIR = $$PWD/../../bin/win64/
# 依赖模块
LIBS += \
-L$$PWD/../../lib/win64 -lavformat \
-L$$PWD/../../lib/win64 -lavcodec \
-L$$PWD/../../lib/win64 -lavutil \
-L$$PWD/../../lib/win64 -lswscale } else {
message("win32")
# 输出目录
DESTDIR = $$PWD/../../bin/win32/
# 依赖模块
LIBS += \
-L$$PWD/../../lib/win32 -lavformat \
-L$$PWD/../../lib/win32 -lavcodec \
-L$$PWD/../../lib/win32 -lavutil \
-L$$PWD/../../lib/win32 -lswscale
}
}

3.1 测试-编译32位

3.2 测试-编译64位

9.下载ffmpeg、使QT支持同时编译32位和64位的更多相关文章

  1. hadoop2.6.0汇总:新增功能最新编译 32位、64位安装、源码包、API下载及部署文档

    相关内容: hadoop2.5.2汇总:新增功能最新编译 32位.64位安装.源码包.API.eclipse插件下载Hadoop2.5 Eclipse插件制作.连接集群视频.及hadoop-eclip ...

  2. Windows2003 IIS6.0支持32位和64位两种模式的设置方法

    IIS 6.0 可支持 32 位和 64 位两种模式.但是,IIS 6.0 不支持在 64 位版本的 Windows 上同时运行这两种模式.ASP.NET 1.1 只在 32 位模式下运行.而 ASP ...

  3. Adobe Photoshop CC 14.0简体中文特别版32位和64位下载

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  4. hadoop2.5发布:最新编译 32位、64位安装、源码包、API以及新特性

    hadoop2.5发布:最新编译 32位.64位安装.源码包.API以及新特性 http://www.aboutyun.com/thread-8751-1-1.html (出处: about云开发) ...

  5. 如何让ios app支持32位和64位?

    将ios app转换为兼容32位和64位步骤:  1. 安装 Xcode 5.  2. 打开你的项目.Xcode会提示你更新你的项目,其中的警告和错误信息对于转换到64位相当重要.  3. 将你的项目 ...

  6. 【原创】在Windows系统中使用VC9、VC11编译32位、64位PHP及其扩展

    项目中需要使用runkit模块实现AOP,但是团队成员的开发环境都是Windows,而runkit模块官方没有提供Windows环境下的dll扩展,只能自己编译. 下面是编译过程的分类总结.(操作系统 ...

  7. 2015年度精品 最新力作32位和64位xp,win7,win8,win10系统下载(电脑城专用版)

    一.系统主要特点 1.安装维护方便快速 - 全自动无人值守安装,采用万能GHOST技术,安装系统过程只需3-5分钟,适 合新旧各种机型. - 集成常见硬件驱动,智能识别+预解压技术,绝大多数硬件可以快 ...

  8. 编译并使用boost库(win7+boost1.63+vs2015+32位or 64位),超详细,boost于vs2017下编译(64/32bit)

    首先下载得到boost的最新版(目前最新版是1.63) 下载地址: http://www.boost.org   也可以从这里直接下载 http://download.csdn.net/detail/ ...

  9. class文件无论是32位还是64位jdk编译出来的,都可以通用

    class文件无论是32位还是64位jdk编译出来的,都可以通用 学习了:https://blog.csdn.net/z3111001358/article/details/53364066 java ...

随机推荐

  1. 为什么我们需要Q#?

    原文地址:https://blogs.msdn.microsoft.com/visualstudio/2018/11/15/why-do-we-need-q/ 本文章为机器翻译. 你可能熟悉微软量子的 ...

  2. C#算法设计查找篇之01-顺序查找

    顺序查找(Sequential Search) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/697 访问. 顺序查找也 ...

  3. C#LeetCode刷题之#720-词典中最长的单词(Longest Word in Dictionary)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4120 访问. 给出一个字符串数组words组成的一本英语词典.从 ...

  4. TypeScript 在vue中定义全局类型

    全局类型定义 路径 src/types/store.d.ts /** * 定义全局的State在 store.d.ts文件中 */ // 单独的state,导出为单独的module使用 export ...

  5. jquery—实现能滚动的选项卡效果

    选项卡在网页中很常见,可以说是必备的一个元素了,网上其实也有很多案例讲解选项卡的做法,写这篇文章,就是记录下自己的写一个的实例效果图: html: css样式: 主要是滚动条的的样式设置width:1 ...

  6. mysql表中已有数据,为表新增一个自增id。

    第一步,在navicat中,例如表test新建查询,输入以下两行代码即可搞定. alter table test add id int; alter table `test` change id id ...

  7. python3 - selenium常用的参数

    # 选用开发者模式,创建一个浏览器对象,可避免被检测到是selenium模拟浏览器 chrome_options = webdriver.ChromeOptions() chrome_options ...

  8. 非确定性有穷状态决策自动机练习题Vol.1 A.扭动的回文串

    非确定性有穷状态决策自动机练习题Vol.1 A.扭动的回文串 题目描述 \(JYY\)有两个长度均为\(N\)的字符串\(A\)和\(B\). 一个"扭动字符串\(S(i,j,k)\)由\( ...

  9. Magento add product attribute and assign to all group

    $attributes = array( 'product_type' => array( 'type' => 'int', 'input' => 'select', 'source ...

  10. 操作系统-PV操作的原理和几种常见问题

    信号量是一种变量类型,用一个记录型数据结构表示,有两个分量:信号量的值和信号量队列指针 除了赋初值外,信号量仅能通过同步原语PV对其进行操作 s.value为正时,此值为封锁进程前对s信号量可施行的P ...