MSYS2 + MSVC 64
安装完成后,打开安装目录,修改 msys2_shell.cmd 文件
rem set MSYS2_PATH_TYPE=inherit
#改为
set MSYS2_PATH_TYPE=inherit
进入msys2安装目录下的,如:
D:\msys2\etc\pacman.d
修改 mirrorlist.mingw32 ,在 ## Primary 下第一行添加
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686/
Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686/
修改 mirrorlist.mingw64
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/
修改 mirrorlist.msys
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch/
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/
以管理员模式打开适用于 VS 2017 的 x64 本机工具命令提示 进入msys2安装目录,输入以下命令 打开msys2
32
msys2_shell.cmd -mingw32
64
msys2_shell.cmd -mingw64
在msys2控制台中输入以下命令,更新软件包
pacman -Sy
全部回车默认安装即可,编译64位之前编译过32位的环境,请先卸载32位的环境
32
pacman -S mingw-w64-i686-toolchain
pacman -S base-devel
64
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
安装yasm之前,需要把msys2安装目录中
D:\msys2\usr\bin\link.exe 改为 D:\msys2\usr\bin\link.bak
用的是 msvc 的编译模式,因为需要避免与MSVC的link.exe冲突.如果使用的是mingw编译则不需要改
MSYS2+ MinGW 跟 MSYS2 + MSVC 这两种编译方式。 MinGW 用的 gcc.exe 编译器。MSVC 才是 cl.exe 编译器。
pacman -S yasm
pacman -S nasm
没有出现no基本就OK了
which cl link yasm cpp
安装就行,因为需要克隆项目
打开适用于 VS 2017 的 x64 本机工具命令提示 进入msys2安装目录,输入以下命令 打开msys2
32
msys2_shell.cmd -mingw32
64
msys2_shell.cmd -mingw64
x264是一个开源的[H.264/MPEG-4 AVC](https://baike.baidu.com/item/H.264%2FMPEG-4 AVC)视频编码函数库,是最好的有损视频编码器之一。
码云中clone下来
git clone https://gitee.com/mirrors_addons/x264.git
cd 进入x264文件夹中,执行,注意以下,prefix的参数记得改成你需要生在在的目录(注意空格–注意空格–注意空格)
32
./configure --prefix=../build/libx264 --host=i686-w64-mingw32 --enable-static --enable-shared --extra-ldflags=-Wl,--output-def=libx264.def
64
./configure --prefix=../build/libx264 --host=x86_64-w64-mingw32 --enable-static --enable-shared --extra-ldflags=-Wl,--output-def=libx264.def
之后make
make -j
之后install
make install
进入install目录(将.a文件转成.lib文件,需要libx264.def)
make install 之后发现lib目录下没有libx264.def,应该在源码目录下。
cd /home/admin/ffmpeg/build/libx264/lib
#若要⽣成64位lib⽂件则输⼊如下命令:
lib /machine:X64 /def:libx264.def
#若要⽣成32位lib⽂件则输⼊如下命令:
lib /machine:i386 /def:libx264.def
lib的描述:https://www.cnblogs.com/lovesaber/archive/2012/11/27/2790297.html
官网中clone下来
git clone git://source.ffmpeg.org/ffmpeg.git
cd ffmpeg
#查看ffmpeg版本
git branch -a
#切换ffmpeg 4.2版本
git checkout remotes/origin/release/4.2
写一个编译脚本(注意extra-cflags路径和extra-ldflags路径)
build_ffmpeg.sh
./configure \
--prefix=/home/admin/ffmpeg/build/ffmepg-4.2 \
--arch=x86_64 \
--enable-shared \
--enable-gpl \
--enable-nonfree \
--disable-lzma \
--disable-zlib \
--enable-libx264 \
--extra-cflags="-I/home/admin/build/libx264/include" \
--extra-ldflags="-L/home/admin/build/libx264/lib"
我在./configure的时候,disable了lzma和zlib,我好像没有用到这两个库,不写disable会默认依赖这个库的。
执行脚本
sh build_ffmpeg.sh
make -j
make install
编译中出现 xxx not found using pkg-config
在编译前,export PKG_CONFIG_PATH=库.pc的目录
# 查看依赖什么库
dumpbin /dependents avcodec-58.dll
# 查看dll 32或64
dumpbin /headers xxx.dll