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

msys2+minGW方案编译ffmpeg的最佳实践

一、Win10 64bit编译环境的建立

1)从http://www.msys2.org/下载 msys2-x86_64-xxx.exe

2) 安装msys2到默认路径 C:\msys64\

3) 运行MSYS2 w64

4)执行 pacman -Syu 更新系统当出现提示时,选择y

5) 当窗口关闭时,重新打开msys2 w64 环境,如步骤3

6)再次执行 pacman -Su 当出现提示时,选择y

二、安装其他组件

1)pacman -S make //安装make命令工具

2)pacman -S diffutils //安装比较工具

3)pacman -S yasm //安装yasm汇编语言编译器,ffmpeg使用SIMD汇编指令进行加速

4)pacman -S mingw-w64-x86_64-gcc //64bit的mingw编译器

5)pacman -S mingw-w64-i686-gcc //32bit 的mingw编译器

6)pacman -S mingw-w64-x86_64-gtk3 //64bit的gtk库

7)pacman -S mingw-w64-i686-gtk3/32bit的gtk库

8)pacman -S nasm//安装汇编语言编译器,x264使用SIMD汇编指令进行加速

以上主要安装make工具,yasm,nasm汇编器(ffmpeg和x264使用了SIMD之类加速),gcc编译器,gtk图像框架。

三、下载pkg-config工具

pkg-config 工具在编译时可以根据xxx.pc查找对应的头文件和库。PC文件一般原理如下:

1. 把你的pc文件,直接放到/usr/lib/…默认路径下。

2. 把你的pc文件的路径写到PKG_CONFIG_PATH环境变量里。

比如,你可以在/etc/.bashrc的文件末尾添加:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/test/ffmpeg_build/lib/pkgconfig

export PKG_CONFIG_PATH

那么,pkg-config就会到/home/test/ffmpeg_build/lib/pkgconfig寻找*.pc文件

一般pkg-config 通过 pkg-config xxx –libs –cflags xxx就是你要找得库,通过xxx.pc可以分析该库头文件和库文件在哪个目录

比如查找 pkg-config libavcodec --libs --cflags

1)下载64bit工具

http://ftp.gnome.org/pub/gnome/binaries/win64/dependencies/pkg-config_0.23-2_win64.zip

解压 pkg-config.exe to C:\msys64\mingw64\bin

2)下载32bit工具

http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.26-1_win32.zip

解压 pkg-config.exe to E:\msys64\mingw32\bin

四、拷贝intl.dll到以下文件夹

1)cd C:\msys64\mingw32\bin

2)cp libintl-8.dll intl.dll

3)cd C:\msys64\mingw64\bin

4)cp libintl-8.dll intl.dll

intl.dll 库是Windows系统很重要库,缺少它可能软件运行会异常。

五、下载源代码并编译

1)从ffmpeg官网下载源代码到C:\mycode

2)从 C:\msys64\中运行msys2_shell.cmd -mingw64

3) cd C:\mycode\ffmepg

4)执行编译即可

六、本文为了方便,写了一个脚本。

1)编译64bit

a) 从 C:\msys64\中运行msys2_shell.cmd -mingw64

b) ./ffmpeg-build-win release 64

2)编译32bit

a) 从 C:\msys64\中运行msys2_shell.cmd -mingw32

b) ./ffmpeg-build-win release 32

如上图所示编译成功,非常顺利。

七、总结

在编译ffmpeg之前的要完成依赖库编译,也是同样方法的,基本思想可以理解msys2环境是一个Linux环境,minGW工具链就是该Linux默认的编译工具连,按照Linux编译思路编译即可。更多更新信息请关注公众号:AV_Chat

http://www.lryc.cn/news/20003.html

相关文章:

  • 理解redis的数据结构
  • Lecture6 逻辑斯蒂回归(Logistic Regression)
  • File类及IO流说明
  • 优秀的网络安全工程师应该有哪些能力?
  • [C++11] auto初始值类型推导
  • 【Java】List集合去重的方式
  • 每个人都应该知道的5个NLP代码库
  • SPI协议介绍
  • MySQL数据库中索引的优点及缺点
  • (q)sort函数总结(基础篇)
  • 【数据库】MongoDB数据库详解
  • 【linux】进程间通信——system V
  • 计算机网络的基本组成
  • 【数据结构趣味多】Map和Set
  • Redis 之企业级解决方案
  • 雷达实战之射频前端配置说明
  • Android SDK删除内置的触宝输入法
  • [202002][Spring 实战][第5版][张卫滨][译]
  • H5视频上传与播放
  • 通过OpenAI来做机械智能故障诊断-测试(1)
  • ASE40N50SH-ASEMI高压MOS管ASE40N50SH
  • MySQL基础命令大全——新手必看
  • sklearn学习-朴素贝叶斯(二)
  • MySQL_主从复制读写分离
  • shell基础学习
  • 考虑交叉耦合因素的IPMSM无传感器改进线性自抗扰控制策略
  • 2023年全国最新食品安全管理员精选真题及答案5
  • git 笔记
  • ChatGPT 的盈利潜力:我使用语言模型赚取第一笔钱的个人旅程
  • 计算机网络——问答2023自用