参考
过程可以参考我的博客 ffmepg编译,同样需要msys2,环境,本文还是说明一下环境的搭建。
目标版本
64 位debug版本的静态库,可以独立使用,可以放到ffmpeg作为依赖库
下载MSYS2
- 地址: www.msys2.org/
- 安装文件: msys2-x86_64-20240113.exe
- 安装目录: C:\msys64
- 增加环境变量 C:\msys64\mingw64\bin
安装工具链
-
管理员身份运行 C:\msys64\mingw64.exe 文件 在里面执行脚本 pacman -S mingw-w64-x86_64-toolchain
-
按下Enter默认全部安装
-
执行 `pacman -S base-devel'
-
执行 `pacman -S yasm nasm gcc'
下载x264源码
- 地址:
git clone https://code.videolan.org/videolan/x264.git
编译
- 在mingw64.exe 的窗口里面跳转到ffmpeg的目录
- 创建一个编译脚本文件 touch build.sh
- 编写编译脚本
basepath=$(cd `dirname $0`;pwd)
echo ${basepath}
cd ${basepath}
pwd
./configure --prefix=${basepath}/x264_install --enable-static
make -j 16
make install
- 在当前目录执行脚本
- 结果
- lib的格式,如图
显然这是一个unix的静态库,它不能被直接用于vs,但是它可以作为ffmpeg的依赖库,集成。
ffmpeg 集成以上编译好的x264
首先有一篇原来的ffmpeg编译过程文档:ffmpeg编译 可以参考一下
- 首先,我将x264编译的静态库库放在ffmpeg的外层目录,结构如下:
- 在ffmpeg3.4 目录里面创建编译文件 build-x264.sh
# 当前目录
basepath=$(cd `dirname $0`;pwd)
# 获取当前目录的上层目录
parent_dir=$(dirname "$(pwd)")
echo ${basepath}
cd ${basepath}
./configure \
--prefix=${basepath}/ffmpeg_install \
--disable-static --enable-shared \
--disable-asm \
--enable-debug=3 \
--enable-libx264 --enable-gpl \
--extra-cflags="-I${parent_dir}/x264_install/include" \
--extra-ldflags="-L${parent_dir}/x264_install/lib" \
make -j4
#make install
--extra-cflags 指定了x264的头文件位置 --extra-ldflags 指定了库文件位置 --enable-libx264 --enable-gpl 指定了支持x264,但是开启x264必须要打开gpl
- 在 ffmpeg3.4 目录里面,还是在 mingw64.exe 管理员打开的窗口里面执行脚本
这里面External libraries: 里面就是ffmpeg依赖的库,这里面有些是在mingw64的dll里面去找。如果你没把C:\msys64\mingw64\bin
加入环境变量,那么你在引用ffmpeg的动态库的时候,会报找不到dll,比如zlib.dll。 你可以把 C:\msys64\mingw64\bin 里所有的dll拷贝到执行程序目录里面去解决。
但是对于x264,ffmpeg依赖的是libx264.a静态库。所以ffmpeg的avcode里面直接包含的,不需要另外添加dll。
- 编译完成
编译完成后,lib和dll文件,就在ffmpeg_install的bin目录里面。其他引用的方法和之前ffmpeg编译的博客里面一样。
编译可以直接被visual studio使用的libx264静态库
ffmpeg 依赖x264后,我可以用ffmpeg实现264的编码。同时,我又想能够直接使用libx264的源码直接写264的编码。那么我就要再工程里面,再添加libx264.lib的库和头文件。 为此,我有编译了一个x264的 .lib格式静态库。过程如下
- 首先找到这个目录
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2022\Visual Studio Tools\VC
这个目录是vs的控制窗口,我是编译64位的。所有我就用管理员权限,打开 x64 Native Tools Command Prompt for VS 2022
- 用这个串口去打开msy2的窗口
C:\msys64\msys2_shell.cmd -use-full-path
这样visault studio的vs编辑器目录,就被带到了msy2的窗口里面
- 用在打开的msy2的窗口,里面跳转到x264目录
然后在里面创建 build_mscv.sh
basepath=$(cd `dirname $0`;pwd)
echo ${basepath}
cd ${basepath}
pwd
CC=cl ./configure --prefix=${basepath}/x264_install_msv --enable-static
make -j4
make install
执行build_mscv.sh 后生成的库如下:
这个.lib库,和头文件,相应引入visual studio里面,就可以直接使用x264了