使用的时候最好关闭杀毒软件,否则configure和make会很慢
window编译ffmpeg mingw,要在windows搭建一个模拟linux环境,下载安装MSYS2-64, 网址:https://www.msys2.org/
我这里安装在了默认的路径
安装完成后,将Qt的mingw32的库全部转移过来(直接拷贝就可以)
拷贝完成后,运行mingw32.exe
更新包数据块和系统核心包
pacman -S make yasm diffutils pkg-config
pacman -S nasm
修改etc下的fstab
c:/msys64/mingw32/ /mingw
然后启动mingw32.exe
写一个helloword的小程序测试一下
可以看到有输出,证明可以使用
gcc -v
证明可以使用
但是编译x264的时候出现了 No working C compiler found的错误,有可能是X264版本太高的问题,
这里换到了2015的一个版本后成功编译
./configure --host=i686-w64-mingw32 --prefix=$(pwd)/install --enable-shared --enable-static --enable-pic --disable-cli
可以在下面这个网址下载x264
http://download.videolan.org/x264/snapshots/
在./cofigure时可能出现
line ***:tr:command not found
line ***:uname:command not found
line ***:cat:command not found
解决办法:安装coreutils,在安装目录的bin目录下将缺少的命令的exe和libintl3.dll,libiconv2.dll 文件拷贝到C:MinGW/msys/1.0/bin目录下
warning:pkg-config not found, library detection may fail
解决办法:下载pkg-config-0.23-2.zip及glib_2.18.4-1_win32.zip
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip
http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.18/glib_2.18.4-1_win32.zip
把pkg-config.exe 和 glib_2.18.4-1_win32.zip中的libglib-2.0-0.dll放在mingw的bin目录下,或者放在$path目录下.
然后make && make install
x264这个文件夹是我自己创建的,将include和lib放了进去,方便后面编译ffmpeg
编译SDL
./configure --host=i686-w64-mingw32 --prefix=$(pwd)/install --enable-shared --enable-static
make && make install
跟x264一样创建一个sdl文件夹,将include和lib放进去
编译libfdkaac
下载:https://sourceforge.net/projects/opencore-amr/files/fdk-aac/
./configure --host=i686-w64-mingw32 --prefix=$(pwd)/install --enable-shared --enable-static
make && make install
编译ffmpeg
./configure --prefix=$(pwd)/install/ --enable-shared --enable-static --enable-gpl --enable-libx264 --extra-cflags=-I$(pwd)/x264/include --extra-ldflags=-L$(pwd)/x264/lib --enable-sdl2 --extra-cflags=-I$(pwd)/sdl/include --extra-ldflags=-L$(pwd)/sdl/lib --enable-nonfree --enable-ffmpeg --enable-ffplay --enable-swscale --enable-pthreads --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-stripping --disable-x86asm
./configure --arch=x86_32 --prefix=$(pwd)/install/ --enable-shared --enable-static --enable-gpl --enable-libx264 --extra-cflags=-I$(pwd)/x264/include --extra-ldflags=-L$(pwd)/x264/lib --enable-sdl2 --extra-cflags=-I$(pwd)/sdl/include --extra-ldflags=-L$(pwd)/sdl/lib --enable-nonfree --enable-ffmpeg --enable-ffplay --enable-swscale --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-stripping --disable-x86asm
./configure --arch=x86_32 --prefix=$(pwd)/install/ --enable-shared --enable-static --enable-gpl --enable-libx264 --extra-cflags=-I$(pwd)/x264/include --extra-ldflags=-L$(pwd)/x264/lib --enable-sdl2 --extra-cflags=-I$(pwd)/sdl/include --extra-ldflags=-L$(pwd)/sdl/lib --enable-libfdk_aac --extra-cflags=-I$(pwd)/fdkaac/include --extra-ldflags=-L$(pwd)/fdkaac/lib --enable-nonfree --enable-ffmpeg --enable-ffplay --enable-swscale --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-stripping --disable-x86asm
遇到这个错误
ERROR: sdl2 requested but not found
修改configure
6170 if enabled sdl2; then
6171 #SDL2_CONFIG="${cross_prefix}sdl2-config"
6172 SDL2_CONFIG="d:/project/SDL-release-2.0.12/sdl2-config" #交叉编译sdl2目录
然后重新configure
成功后make && make install