参考
(一)设置
(1)win10, cmd window, v2ray proxy
set HTTPS_PROXY=127.0.0.1:10809
(2)win10, gitcmd window, v2ray proxy
set HTTPS_PROXY=127.0.0.1:10809
(3)win10, gitbash window, v2ray proxy
export https_proxy=http://127.0.0.1:10809
git submodule update --init --recursive == git submodule init & git submodule update
如果选择MinGW-w64编译则打开MSYS2 MinGW 64-bit
快捷方式,在shell窗口中输入:
pacman -S mingw-w64-x86_64-toolchain
然后选择全部安装。
而如果选择msys编译则打开MSYS2 MSYS
快捷方式,在shell窗口中输入:
- pacman -S msys2-devel
- 或者
- pacman -S make gcc diffutils pkg-config
然后选择全部安装。
1. 重命名link.exe
重命名msys64/usr/bin/link.exe
为msys64/usr/bin/link.bak
, 避免和MSVC 的link.exe抵触。
2. 下载和安装YASM
这一步好像已经不必要,最新版的代码中已经使用nasm来代替yasm。
YASM下载地址:http://yasm.tortall.net/Download.html,下载其64位版本Win64 .exe (64 位 Windows 通用),即页面中的Win64 .exe (for general use on 64-bit Windows)。
下载后,将下载回来的yasm-1.3.0-win64.exe 改名为yasm.exe,并放置于 MSYS2 安装目录:/msys64/usr/bin/ 中。
3.打开[适用于 VS 2017 的 x64 本机工具命令提示]关联的mingw64或者msys窗口
开始菜单中的Visual Studio 2017目录下有多种命令提示符的快捷方式:
VS 2017的开发人员命令提示符
VS 2017的 x64_x86 交叉工具命令提示符
适用于 VS 2017 的 x64 本机工具命令提示
适用于 VS 2017 的 x86 本机工具命令提示
适用于 VS 2017 的 x86_x64 兼容工具命令提示
一开始我没注意,选择了VS 2017的开发人员命令提示符,这个默认是x86 32位环境,cl编译器默认为32位编译器,在编译ffmpeg时configure中就算指定了x64位但是编译出来的还是32位dll和exe。
可以直接在开始菜单中输入: vs 2017就会出现列表,选择打开适用于 VS 2017 的 x64 本机工具命令提示,在窗口中输入:
C:\Program Files\Microsoft Visual Studio\2022\Professional>"C:\msys64\msys2_shell.cmd"
从vs2017的shell打开msys2 shell是为了继承vs2017的环境路径。
我发现一个问题,这样打开的msys2 shell窗口,有时不能使用Ctrl+C来中止当前正在执行命令,比如我现在用git clone下载一个比较大的项目,然后太慢了想中止,按Ctrl+C之后根本无法中止命令,只有使用任务管理器强制关闭git进程才可以,在stackoverflow上搜索的结果也是无法解决,说了一堆理由没仔细看,还好我们只是需要这个窗口来编译一下ffmpeg和x264而已,所以也无所谓了。
4. 检查编译环境工具
which cl link yasm cpp
看看返回的结果是否正确,没有no的结果一般就没问题。
5.修改支持中文显示
窗口右键->Options->Text,然后locale选择:zh_CN,Character set 选择 UTF-8。
6.安装nasm
编译当前最新x264时需要用到nasm。
- pacman -S nasm
- pacman -S nasm
或者也可以直接去nasm官网下载exe到bin目录中(我一开始就是用这种方法)。
cd /d/edda_work_d/FastForwardMovingPicturesExpertGroup/FFmpeg
- /d/edda_work_d/FastForwardMovingPicturesExpertGroup/FFmpeg/configure \
- --prefix=/d/edda_work_d/FastForwardMovingPicturesExpertGroup/FFmpeg_install \
- --enable-ffplay \
- --enable-ffmpeg \
- --enable-ffprobe \
- --toolchain=msvc \
- --arch=x86_64 \
- --target-os=win64 \
- --enable-yasm \
- --enable-asm \
- --enable-shared \
- --extra-cflags="-I/d/edda_work_d/SDL/SDL_install/include" \
- --extra-ldflags="-LIBPATH:/d/edda_work_d/SDL/SDL_install/lib"
- # mingw64
- pacman -S mingw-w64-x86_64-toolchain
- pacman -S make
- pacman -S automake
- pacman -S autoconf
- pacman -S perl
- pacman -S libtool
- pacman -S mingw-w64-i686-cmake
- pacman -S pkg-config
- # 如果需要编译出ffplayer的话,还需要安装SDL
- pacman -S mingw-w64-x86_64-SDL2
- # 重命名/usr/bin/link.exe,避免冲突
- cd /usr/bin
- mv link.exe link.bak
- # yasm
- pacman -S yasm
- # 如果没有找到cl,link,代表VS
- which cl link yasm cpp
/d/edda_work_d/FastForwardMovingPicturesExpertGroup/FFmpeg_build