准备工作:
msys2安装
官网 MSYS2
下载完成后一直下一步即可,安装完成后windows搜索 MSYS2 启动MSYS2 MINGW64
打开窗口后运行以下命令 下载一些编译需要的东西
#修改源
sed -i "s#mirror.msys2.org/#mirrors.ustc.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist*
pacman -Sy
pacman -S mingw-w64-x86_64-toolchain #编译64位的库
pacman -S mingw-w64-i686-toolchain # 编译32位的库
pacman -S base-devel # 一些基本的编译工具
pacman -S yasm nasm # 汇编器
下载ffmpeg
官网 FFmpeg
一直拉到最下面,这3个download选项随便点 你开心就好
下载x264
官网x264, the best H.264/AVC encoder - VideoLAN
SDL下载
ffmpeg3.4需要的SDL版本是 sdl2 >= 2.0.1 sdl2 < 2.1.0 下载这之间版本的就可以
官网Simple DirectMedia Layer - Homepage
github直接访问Release 2.0.22 · libsdl-org/SDL · GitHub
随便找一个目录 把下载的东西放进去 解压出来
编译开始
编译x264:
创建一个x264-build目录,用MSYS2 MINGW64窗口执行下面的命令
cd x264-master
./configure --prefix=D:/shell/x264-build --enable-shared
#使用16线程编译
make -j16
#编译安装
make install
将pkgconfig加入环境变量
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:D:/shell/x264-build/lib/pkgconfig
编译SDL
SDL本身就是编译好的dll,我们需要调整一下对应的目录即可
我的是64位的系统 所以修改这个文件,如果是32位修改i686-w64-mingw32这个目录
将prefix变量改为你的目录
修改后的样子
ffmpeg编译
首先指定SDL的目录, 我们需要修改一下configure文件 直接指定
编辑器搜索SDL2_CONFIG 可以看到里面是有判断版本的逻辑的 版本不对也会导致sdl找不到
复制SDL2_CONFIG="${cross_prefix}sdl2-config" 将里面的内容改成你的目录
用MSYS2 MINGW64窗口执行下面的命令
#配置环境变量
#我的cgo调度需要用的 avresample 不需要可以去掉这个选项
./configure --prefix=D:/ffmpeg \
--enable-gpl \
--enable-libx264 \
--disable-static \
--enable-shared \
--enable-sdl2 \
--enable-ffplay \
--enable-ffprobe \
--enable-ffmpeg \
--enable-avresample \
--extra-cflags="-lD:/shell/x264-build/include" \
--extra-ldflags="-LD:/shell/x264-build/lib"
#编译
make -j12
#安装
make install
执行完成后记得将你的ffmpeg最终安装目录的bin 目录加入到环境变量里面 里面有些依赖的dll文件,如果有c程序依赖 把include也加进来