9.下载ffmpeg、使QT支持同时编译32位和64位
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位的更多相关文章
- hadoop2.6.0汇总:新增功能最新编译 32位、64位安装、源码包、API下载及部署文档
相关内容: hadoop2.5.2汇总:新增功能最新编译 32位.64位安装.源码包.API.eclipse插件下载Hadoop2.5 Eclipse插件制作.连接集群视频.及hadoop-eclip ...
- Windows2003 IIS6.0支持32位和64位两种模式的设置方法
IIS 6.0 可支持 32 位和 64 位两种模式.但是,IIS 6.0 不支持在 64 位版本的 Windows 上同时运行这两种模式.ASP.NET 1.1 只在 32 位模式下运行.而 ASP ...
- Adobe Photoshop CC 14.0简体中文特别版32位和64位下载
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- hadoop2.5发布:最新编译 32位、64位安装、源码包、API以及新特性
hadoop2.5发布:最新编译 32位.64位安装.源码包.API以及新特性 http://www.aboutyun.com/thread-8751-1-1.html (出处: about云开发) ...
- 如何让ios app支持32位和64位?
将ios app转换为兼容32位和64位步骤: 1. 安装 Xcode 5. 2. 打开你的项目.Xcode会提示你更新你的项目,其中的警告和错误信息对于转换到64位相当重要. 3. 将你的项目 ...
- 【原创】在Windows系统中使用VC9、VC11编译32位、64位PHP及其扩展
项目中需要使用runkit模块实现AOP,但是团队成员的开发环境都是Windows,而runkit模块官方没有提供Windows环境下的dll扩展,只能自己编译. 下面是编译过程的分类总结.(操作系统 ...
- 2015年度精品 最新力作32位和64位xp,win7,win8,win10系统下载(电脑城专用版)
一.系统主要特点 1.安装维护方便快速 - 全自动无人值守安装,采用万能GHOST技术,安装系统过程只需3-5分钟,适 合新旧各种机型. - 集成常见硬件驱动,智能识别+预解压技术,绝大多数硬件可以快 ...
- 编译并使用boost库(win7+boost1.63+vs2015+32位or 64位),超详细,boost于vs2017下编译(64/32bit)
首先下载得到boost的最新版(目前最新版是1.63) 下载地址: http://www.boost.org 也可以从这里直接下载 http://download.csdn.net/detail/ ...
- class文件无论是32位还是64位jdk编译出来的,都可以通用
class文件无论是32位还是64位jdk编译出来的,都可以通用 学习了:https://blog.csdn.net/z3111001358/article/details/53364066 java ...
随机推荐
- C#LeetCode刷题之#521-最长特殊序列 Ⅰ(Longest Uncommon Subsequence I)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3949 访问. 给定两个字符串,你需要从这两个字符串中找出最长的特 ...
- 三分钟秒懂BIO/NIO/AIO区别?
首先来举个例子说明吧,假设你想吃一份盖饭: 同步阻塞:你到饭馆点餐,然后在那等着,还要一边喊:好了没啊! 同步非阻塞:在饭馆点完餐,就去遛狗了.不过溜一会儿,就回饭馆喊一声:好了没啊! 异步阻塞:遛狗 ...
- STM32中 BOOT0 BOOT1设置(问题:程序下载进去但无法运行)
默认BOOT0接10K接地,BOOT1接10K接地 实际如果BOOT0不接10K到地,会导致程序能下载进去,但是无法运行情况
- jieba分词的几种形式
1.精确模式:试图将句子最精确地分开,适合文本分析 seg_list = jieba.cut(test_text, cut_all=False) seg_list = " ".jo ...
- Java并发--volatile关键字
一.volatile的实现原理 synchronized是阻塞式同步,在线程竞争激烈的情况下会升级为重量级锁,而volatile就可以说是JVM提供的最轻量级的同步机制.JMM告诉我们,各个线程会将共 ...
- SpringBoot中Mybatis打印sql日志
application.yml中加上 # springBoot+Mybatis 控制台打印SQL语句 (方式一) logging: level: com.zoctan.api.mapper : deb ...
- 编译gawk出现问题,没有安装gawk。
今天编译kernal的时候出现了一个错误:GNU awk is required for lib/memtype.h made by memtypes.awk..查了资料,原来是没有安装gawk的缘故 ...
- python基础 Day3
python Day3 1.作业回顾 设定一个理想的数字比如88,让用户输入数字,如果比88大,则显示猜测的结果大:如果比66小,则显示猜测的结果小了,给用户三次猜测机会,如果显示猜测正确退出循环,如 ...
- Python开发的入门教程(一)-数据类型、变量
介绍 Python第一门课程,是Python开发的入门教程,将介绍Python语言的特点和适用范围,Python基本的数据类型,条件判断和循环,函数,以及Python特有的切片和列表生成式. Pyth ...
- Java多线程_wait/notify/notifyAll方法
关于这三个方法,我们可以查询API得到下列解释: wait():导致当前的线程等待,直到其他线程调用此对象的notify( ) 方法或 notifyAll( ) 方法或者指定的事件用完 notify( ...