由于客户要求,要在Windows下使用mingw32编译,去ffmpeg.org下载需要编译的版本,使用msys2方法进行编译,使用QT5.10的编译器,基本上把网上的方法试了个遍,编译全部库总是报错出问题
查看了ffbuild文件夹中config.log提示有些文件和库文件没找到。只能选择性编译了。
最后还是照着QT Mingw32/64编译ffmpeg源码生成32/64bit库以及测试-CSDN博客实现的。
记录一下我的配置方法:
1.下载msys2安装
2.安装 (感觉yasm没用上)
pacman -S yasm nasm
pacman -S pkg-config glib
pacman -S libtool
pacman -S perl
pacman -S make
pacman -S diffutils
3.将QT中tools文件夹下mingw530_32编译器复制到msys2安装路径的mingw32文件夹中,
然后敲gcc -v 和make -v验证一下(没改名字应该是 mingw32-make.exe -v)
4.编译安装SDL2
下载页面:Windows 10下基于MinGW编译FFMpeg with x264_mingw glib-CSDN博客
这里使用的是SDL2-2.0.12版本,解压文件到D:\msys64\home\admin目录下面,
打开MSYS2 mingw32.exe终端
cd SDL2-2.0.12
./configure --prefix=/usr/local/sdl2
make
make install
5.编译安装x264
下载x264:
git clone https://code.videolan.org/videolan/x264.git
编译安装:
cd x264
./configure --enable-static --prefix=/usr/local
make
make install
6.修改配置文件D:\msys64\etc\profile
主要是PKG_CONFIG相关的路径增加安装的x264和sdl
然后source /etc/profile 或者重启一下。
7.configure环节
cd /ffmpeg-5.1.4
为方便反复编译建个configure.sh文件
./configure \
--prefix="/usr/local/ffmpeg5" \
--enable-shared --disable-static \
--enable-w32threads --disable-debug --disable-everything \
--enable-gpl \
--enable-gray --enable-libx264 --enable-sdl2 \
--enable-encoder=bmp,mjpeg,jpeg2000,mpeg4 \
--enable-decoder=h263,h264,hevc,mpeg4,mjpeg,bmp \
--enable-demuxer=h263,h264,rtp,rtsp,sdp,hevc,avi,matroska,image2,image_bmp_pipe,yuv4mpegpipe \
--enable-muxer=h263,h264,rtp,rtsp,sap,hevc,avi,matroska,mp4,mjpeg,image2 \
--enable-parser=h263,h264,hevc,mjpeg,bmp \
--enable-protocol=file,udp,tcp,ftp,data,http,https,httpproxy,pipe,rtp,srtp,rtsp \
--enable-filter=scale,rotate \
--disable-indevs \
--disable-hwaccels \
--extra-libs=-lmsvcrt \
--extra-cflags="-I/usr/local/sdl2/include -I/usr/local/include" --extra-ldflags="-L/usr/local/sdl2/lib -L/usr/local/lib"
./configure.sh
make -j12
make install
折腾好几天总算实现了
编译mingw32之前,还编了个64位的比较容易,编译器使用mingw-w64-x86_64-toolchain。
pacman -S mingw-w64-x86_64-toolchain
pacman -S base-devel
pacman -S yasm nasm gcc
./configure --prefix=$PWD/build/ --disable-static --enable-shared
make -j16
编译32位按说用mingw-w64-i686-toolchain就可以了,可是编译完了链接程序时报错,可能是mingw的版本不同吧。