本文使用 MSYS2 来编译 ffmpeg
一、安装MSYS2
MSYS2 是 Windows 下的一组编译套件,它可以在 Windows 系统中模拟 Linux 下的编译环境,如使用 shell 运行命令、使用 pacman 安装软件包、使用 gcc (MinGW) 编译代码等。
MSYS2 的安装也非常省心,只需要到 MSYS2 官网 下载.exe
安装包,管理员身份运行安装即可。
安装完毕后,开始菜单里就会有下面的程序:
点击它们就会启动一个 shell 窗口,Just like on Linux ! 这个 shell 程序默认是 Mintty,类似 Linux 系统中的 bash shell。MSYS2 支持多个编译器工具链,它们的环境是独立的(可以去安装文件夹查看),这里选择启动 MINGW64 (如果你也是64位系统的话)。
国内可以将下载镜像替换为中科大
sed -i "s#mirror.msys2.org/#mirrors.ustc.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist*
pacman -Sy
二、安装MINGW
然后安装mingw64编译链和基本的依赖:全部都按照默认安装即可,安装时会询问,输入y即可
pacman -S mingw-w64-x86_64-toolchain # mingw64编译工具链,win下的gcc
pacman -S base-devel # 一些基本的编译工具
pacman -S yasm nasm # 汇编器
安装完毕后,可以输入gcc -v
查看 gcc 版本:
最后需要添加环境变量。右击此电脑 -> 属性 -> 高级系统设置 -> 环境变量 -> 选择 Path
(用户变量和系统变量都要)-> 编辑 -> 新建,添加编译工具链的路径:msys2下载的mingw64一般就在你安装的msys2目录里面
三、下载源码
ffmpeg
官网 http://ffmpeg.org/
下载地址 https://ffmpeg.org/releases/ffmpeg-4.2.3.tar.bz2
x265
官网 https://www.videolan.org/
下载地址 http://ftp.videolan.org/pub/videolan/x265/x265_3.2.1.tar.gz
x264
下载地址 http://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20191217-2245.tar.bz2
全部解压到你安装的msys2目录里的home目录下,然后分别创建install目录
四、编译
1、编译x264
切换到x264的解压目录下,执行下列命令
cd /home/x264-master/
./configure --prefix=/home/x264_install/ --enable-shared
make -j8
make install
生成的windows库文件在E:\msys64\home\x264_install\bin目录里,不是lib目录
2、编译x265
切换到x265的解压目录下,执行下列命令(x265在windows下是使用ninja编译,与make稍有不同)
cd /home/x265_3.2.1/
cmake -DCMAKE_INSTALL_PREFIX=/home/x265_install/ ./source/
cmake执行完后,会在当前目录生成build.ninja等文件
然后执行以下命令
ninja
ninja install
生成库文件如下:
3、编译ffmpeg
切换到ffmpeg目录
cd /home/ffmpeg-5.1.5/
指定x264与x265的配置文件目录
export PKG_CONFIG_PATH=/home/x265_install/lib/pkgconfig/:/home/x264_install/lib/pkgconfig/
echo ${PKG_CONFIG_PATH} 可以看到输出
然后运行以下命令
./configure --prefix=/home/ffmpeg_install/ --enable-gpl --enable-libx264 --enable-libx265 --disable-static --enable-shared --extra-cflags=-l/home/x264_intall/include --extra-ldflags=-L/home/x264_install/lib --extra-cflags=-l/home/x265_intall/include --extra-ldflags=-L/home/x265_install/lib
执行过后会生成MakeFile,然后执行如下
make -j8
make install
生成库文件如下
五、使用库文件
在使用时必须将x264、x265、ffmpeg同时链接才能使用,不能只链接ffmpeg。