记录下windows编译x264+ffmpeg
准备环境:
1.安装msys2 下载地址
2.vs2017
3.下载yasm 下载地址
4.gas-preprocessor 下载地址
5.ffmpeg源代码 下载地址
6.x264源代码 下载地址
一、编译步骤
1.修改 C:\msys64\msys2_shell.cmd 中的 rem set MSYS2_PATH_TYPE=inherit,去掉rem,取消这⼀句的注释。使MSYS2的环境变量继承当前CMD的窗口的环境变量。
替换yasm
将下载的yasm-**-win64.exe改成yasm.exe,替换msys安装目录C:\msys64\usr\bin\yasm.exe,可以做个备份把原来的改成yasm.bak
安装gas-preprocessor
将下载的gas-preprocessor.pl放到msys2安装目录下面C:\msys64\usr\bin\gas-preprocessor.pl
2.重命名 C:/msys64/usr/bin/link.exe 为 C:/msys64/usr/bin/link.bak , 避免和MSVC 的link.exe抵触。
3
菜单中打开vs2017 x64本机工具命令提示(编译64位静态库)
4.检查环境
echo %lib%
5.输入命令启动msys2命令行窗口
C:\msys64\msys2_shell.cmd -mingw64 -full-path
6.安装依赖项
# 安装mingw工具链
pacman -S mingw-w64-x86_64-toolchain
# 安装linux base-devel
pacman -S base-devel
# 安装汇编工具,gcc等
pacman -S yasm nasm gcc
7.检查环境
Administrator@DESKTOP-IJ6JB8N MINGW64 ~
# which cl
/c/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/HostX64/x64/cl
Administrator@DESKTOP-IJ6JB8N MINGW64 ~
# which link
/c/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/HostX64/x64/link
Administrator@DESKTOP-IJ6JB8N MINGW64 ~
# which yasm
/usr/bin/yasm
Administrator@DESKTOP-IJ6JB8N MINGW64 ~
# which cpp
/mingw64/bin/cpp
Administrator@DESKTOP-IJ6JB8N MINGW64 ~
# which gas-preprocessor.pl
/usr/bin/gas-preprocessor.pl
8.下载ffmpeg和x264源代码,并解压到C:\msys64\home\Administrator目录下,新建buildx264.sh和buildffmpeg.sh
buildx264.h
CC=cl: msvc环境,可生成x264.lib,如果不添加,则会生成x264.a文件,后面msvc环境编译ffmpeg可能会找不到
basepath=$(cd `dirname $0`;pwd)
echo ${basepath}
cd ${basepath}/x264-master
pwd
CC=cl ./configure --prefix=${basepath}/x264_install \
--disable-shared=no --disable-asm --enable-static
make clean
make -j6
make install
buildffmpeg.sh
basepath=$(cd `dirname $0`;pwd)
echo ${basepath}
cd ${basepath}/FFmpeg-n4.4.1
pwd
./configure --prefix=${basepath}/ffmpeg_4.4install \
--toolchain=msvc \
--enable-gpl \
--enable-nonfree \
--enable-static \
--disable-shared \
--cc=cl \
--cxx=cl \
--disable-programs \
--enable-encoder=libx264 \
--enable-libx264 \
--extra-cflags=-I/home/Administrator/x264_install/include \
--extra-ldflags=-LIBPATH:/home/Administrator/x264_install/lib
make clean
make -j6
make install
9.msys2进到C:\msys64\home\Administrator目录,编译x264
sh buildx264.sh
编译完x264后会在x264_install下生成编译后的x264库
10.生成x264_install文件夹include中找到x264.h并打开,找到X264_API,屏蔽原有的,新增#define X264_API ,如果不做这一步,编译出的ffmpeg库在vs下使用,会有x264库函数的链接错误
#define X264_API
/*
#ifdef X264_API_IMPORTS
# define X264_API X264_DLL_IMPORT
#else
# ifdef X264_API_EXPORTS
# define X264_API X264_DLL_EXPORT
# else
# define X264_API
# endif
#endif
*/
11.编译ffmpeg
sh buildffmpeg.sh
所需时间较长,编译完后会在ffmpeg_4.4install / lib文件夹生成.a文件,.a文件可在VS下直接使用,
使用时需要将之前编译的x264.lib搭配一起使用