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. Go语言入门系列(五)之指针和结构体的使用

    Go语言入门系列前面的文章: Go语言入门系列(二)之基础语法总结 Go语言入门系列(三)之数组和切片 Go语言入门系列(四)之map的使用 1. 指针 如果你使用过C或C++,那你肯定对指针这个概念 ...

  2. JavaFX桌面应用开发-HelloWorld

    JavaFX是一个强大的图形和多媒体处理工具包集合,它允许开发者来设计.创建.测试.调试和部署富客户端程序,并且和Java一样跨平台. JavaFX比Swing好用很多,它允许开发使用FXML来设计和 ...

  3. Ambiguous mapping. Cannot map 'xxxController' method

    @GetMapping public JsonResp<List<DtoLandRegion>> getLandRegionList() { List<DtoLandRe ...

  4. java List接口二

    一 ArrayList集合 ArrayList集合数据存储的结构是数组结构.元素增删慢,查找快,由于日常开发中使用最多的 功能为查询数据.遍历数据,所以ArrayList是最常用的集合. 许多程序员开 ...

  5. java 多态二

    一 多态-转型 多态的转型分为向上转型与向下转型两种: 向上转型:当有子类对象赋值给一个父类引用时,便是向上转型,多态本身就是向上转型的过程. 使用格式: 父类类型  变量名 = new 子类类型() ...

  6. C#设计模式之14-命令模式

    命令模式(Command Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/413 访问. 命令模式属于行 ...

  7. C#LeetCode刷题之#167-两数之和 II - 输入有序数组(Two Sum II - Input array is sorted)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3903 访问. 给定一个已按照升序排列 的有序数组,找到两个数使得 ...

  8. Nginx CORS 跨域资源共享问题

    ## 背景 新项目上线,前后端分离,遇到了跨域资源共享的问题,导致请求根本无法发送到后端,前端和后端貌似只能有一个来处理跨域问题,我们这边要采用nginx来解决跨域问题. ## Nginx的CORS配 ...

  9. linux驱动之定时器的使用

    被文章摘自一下几位网友.非常感谢他们. http://blog.sina.com.cn/s/blog_57330c3401011cq3.html Linux的内核中定义了一个定时器的结构: #incl ...

  10. Jmeter 常用函数(24)- 详解 __digest

    如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.htm 作用 在特定的哈希算法中返回加密的值,并带有可 ...