FFmpeg5.1 MSYS2+GCC 源码编译
  3cAxQ5E22S4z 2023年11月02日 50 0

前言

msys2是一个在windows上模拟linux环境的软件,在msys2上可以使用大多数的shell命令,它可以在一定程度上代替虚拟机,让用户可以在windows上使用shel

下载安装MSYS2

http://msys2.github.io/ 下载msys2。进入该网址后,可以看到如下页面:

FFmpeg5.1 MSYS2+GCC 源码编译_MSYS2 FFMPEG 编译



安装过程中,进度会一直卡在中间,无法继续执行,然后“隐藏详细信息”这里显示“Updating trust database”,如下图所示。当遇到这个问题时,只要点击右下方的“取消”按钮,然后重新安装即可。

FFmpeg5.1 MSYS2+GCC 源码编译_MSYS2 FFMPEG 编译_02


安装完成后,我们进入安装目录,打开msys2_shell.cmd

FFmpeg5.1 MSYS2+GCC 源码编译_MSYS2 FFMPEG 编译_03



在弹出的窗口上右击,选择Options,按照如下设置更改字符集,如下图所示,否则可能会出现中文乱码的问题。更改完成后,点击“Save按钮”,这里要注意更改完成后得要重新启动msys2_shell.cmd,设置才能生效。


FFmpeg5.1 MSYS2+GCC 源码编译_MSYS2 FFMPEG 编译_04




在msys2中安装软件(启动msys2_shell.cmd)


pacman -S mingw-w64-x86_64-toolchain  (64位工具链)

pacman -S mingw-w64-i686-toolchain (32位工具链)

pacman -S vi

pacman -S make

pacman -S diffutils

pacman -S pkg-confi

pacman -S base-devel

pacman -S nasm(nasm用于编译x264的汇编代码)

pacman -S yasm(yasm用于编译x264的汇编代码)

pacman -S mingw-w64-i686-SDL2  (32位SDL,生成32位ffplay播放器使用)

pacman -S mingw-w64-x86_64-SDL2 (64位SDL,生成64位ffplay播放器使用)

注意:i686 代表是 32位的程序,x86_64 代表是 64位的程序。不用管前面的 w64 是啥,其实 mingw-w64 是一个整体,把他理解成一个名字即可

安装完成之后,要注意msys2目录下有:

clang64.exe


mingw32.exe

用mingw-w64-i686-toolchain 编译。

mingw64.exe

用mingw-w64-x86_64-toolchain编译。

msys2.exe


ucrt64.exe



注意:安装MSYS工具一定在MSYS2 MSYS(msys2_shell.cmd)窗口中进行。

3、查看gcc的版本

启动MSYS2 MinGW 64-bit ,在mingw64.exe窗口中查看gcc的版本。屏幕显示如下:

$ gcc -v

Using built-in specs.

COLLECT_GCC=D:\softwareinstall\msys64\mingw32\bin\gcc.exe

COLLECT_LTO_WRAPPER=D:/softwareinstall/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/12.1.0/lto-wrapper.exe

Target: i686-w64-mingw32

Configured with: ../gcc-12.1.0/configure --prefix=/mingw32 --with-local-prefix=/mingw32/local --build=i686-w64-mingw32 --host=i686-w64-mingw32 --target=i686-w64-mingw32 --with-native-system-header-dir=/mingw32/include --libexecdir=/mingw32/lib --enable-bootstrap --enable-checking=release --with-arch=i686 --with-tune=generic --enable-languages=c,lto,c++,fortran,ada,objc,obj-c++,jit --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-filesystem-ts --enable-libstdcxx-time --disable-libstdcxx-pch --enable-lto --enable-libgomp --disable-multilib --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-libiconv --with-system-zlib --with-gmp=/mingw32 --with-mpfr=/mingw32 --with-mpc=/mingw32 --with-isl=/mingw32 --with-pkgversinotallow='Rev2, Built by MSYS2 project' --with-bugurl=https://github.com/msys2/MINGW-packages/issues --with-gnu-as --with-gnu-ld --disable-libstdcxx-debug --disable-sjlj-exceptions --with-dwarf2 --with-boot-ldflags=-static-libstdc++ --with-stage1-ldflags=-static-libstdc++

Thread model: posix

Supported LTO compression algorithms: zlib zstd

gcc version 12.1.0 (Rev2, Built by MSYS2 project)


编译ffmpeg(32bit)

1、下载FFMPEG最新版本5.1

地址:https://ffmpeg.org/

FFmpeg5.1 MSYS2+GCC 源码编译_MSYS2 FFMPEG 编译_05


FFmpeg5.1 MSYS2+GCC 源码编译_MSYS2 FFMPEG 编译_06


往下拉

FFmpeg5.1 MSYS2+GCC 源码编译_MSYS2 FFMPEG 编译_07


下载完后,

解压到msys64/home下

在home文件夹下新建文件夹out


如果是编译64bit代码,启动 MSYS2 MinGW 64-bit

编译32bit代码,启动 MSYS2 MinGW 32-bit


这里编译的是32bit:

在msys64文件夹启动cmd 输入:

msys2_shell.cmd -mingw32


跳转到ffmpeg文件夹下

cd /home/ffmpeg-5.1/

输入:

./configure --enable-shared --disable-static --disable-x86asm --prefix=/home/out

编译动态库到out文件夹

FFmpeg5.1 MSYS2+GCC 源码编译_MSYS2 FFMPEG 编译_08



make -j8  //启动8个任务并发编译

FFmpeg5.1 MSYS2+GCC 源码编译_MSYS2 FFMPEG 编译_09



make install

FFmpeg5.1 MSYS2+GCC 源码编译_MSYS2 FFMPEG 编译_10

问题

./autogen.sh: line 2: autoreconf: command not found

pacman -S autoconf

autoreconf-2.71: error: aclocal failed with exit status: 1

pacman -S automake

Makefile.am:36: error: Libtool library used but 'LIBTOOL' is undefined

pacman -S make

pacman -S libtool

ERROR: x265 not found using pkg-config

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

设置环境变量,/usr/local/lib/pkgconfig保存了h264,h265等pkg文件保存了安装信息



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
3cAxQ5E22S4z