编译环境介绍
win11,msys2,vscode, cmake
首先下载相关依赖;
本文使用的ffmpeg5.1,qt6,libass。
安装libass
pacman -S mingw-w64-x86_64-libass # 64位系统
安装Ninja
pacman -S mingw-w64-x86_64-ninja # 64位系统
qt安装
在windows下安装Qt,具体可以参考安装qt
需要选择Qt版本6以上的,本文位6.5.3,选择build Tools位MinGW * 64bit
ffmpeg编译安装
编译libx264
首先clone仓库
git clone https://gitee.com/mirrors_addons/x264.git
git clone https://gitee.com/mirrors_addons/x264.git
cd x264
./configure \--prefix=/home/xxfc/ffmpeg/build/libx264 \--host=x86_64-w64-mingw32 \--enable-static \--enable-shared \--extra-ldflags="-Wl,--output-def=libx264.def"
make
make install
下载并编译libfdk-aac
git clone --depth 1 https://gitee.com/mirrors/fdk-aac.git 2
cd fdk-aac
./configure \--prefix=/home/xxfc/ffmpeg/build/libfdk-aac\--enable-static \--enable-shared make
make install
下载并编译libmp3lame
git clone --depth 1 https://gitee.com/hqiu/lame.git
./configure \--prefix=/home/xxfc/ffmpeg/build/libmp3lame\--disable-frontend \--enable-static \--enable-shared
make & make install
下载编译libmpvpx
git clone --depth 1 https://github.com/webmproject/libvpx.git
cd libvpx
./configure \--prefix=/home/xxfc/ffmpeg/build/libmpvpx\--disable-examples --disable-unit tests --enable-vp9-highbitdepth --as=yasm
make & make install
编译ffmpeg
git clone https://gitee.com/mirrors/ffmpeg.git
cd ffmpeg
git branch -r
git checkout -b ffmpeg5.1 remotes/origin/release/5.1
./configure \--prefix=/home/xxfc/ffmpeg/build/ffmpeg-5.1 \--arch=x86_64 \--enable-shared \--enable-static \--enable-gpl \--enable-nonfree \--enable-libfdk-aac \--enable-libvpx \--enable-libx264 \--enable-libmp3lame \--extra-cflags="-I/home/xxfc/ffmpeg/build/libfdk-aac/include \-I/home/xxfc/ffmpeg/build/libvpx/include \-I/home/xxfc/ffmpeg/build/libx264/include \-I/home/xxfc/ffmpeg/build/libmp3lame/include" \--extra-ldflags="-L/home/xxfc/ffmpeg/build/libfdk-aac/lib \-L/home/xxfc/ffmpeg/build/libvpx/lib \-L/home/xxfc/ffmpeg/build/libx264/lib \-L/home/xxfc/ffmpeg/build/libmp3lame/lib"
make -j8 and make install
这里的--enable-shared是构建动态库,--enable-static是构建静态库。
--extra-cflags, --extra-ldflags 是用于指定编译 FFmpeg 时所需的头文件路径和库文件路径。相当于cmake中
# 包含头文件路径
include_directories(/home/xxfc/ffmpeg/build/libfdk-aac/include/home/xxfc/ffmpeg/build/libvpx/include/home/xxfc/ffmpeg/build/libx264/include/home/xxfc/ffmpeg/build/libmp3lame/include
)# 添加库文件搜索路径
link_directories(/home/xxfc/ffmpeg/build/libfdk-aac/lib/home/xxfc/ffmpeg/build/libvpx/lib/home/xxfc/ffmpeg/build/libx264/lib/home/xxfc/ffmpeg/build/libmp3lame/lib
)
编译QMPlayer2
clone项目,地址https://github.com/zaps166/QMPlay2.git
使用VSCode打开项目,VSCode安装好CMake插件。
使用编译工具位GCC Mingw32
在VSCode新建文件夹.vscode,创建settings.json,内容如下,具体路径需自己调整。
{"cmake.generator": "Ninja","cmake.configureSettings": {"CMAKE_PREFIX_PATH": "D:\\Qt\\6.5.3\\mingw_64\\lib\\cmake","BUILD_WITH_QT6": "ON","CMAKE_LIBRARY_PATH": "D:\\Dev\\ffmpeg-5.1\\lib;","CMAKE_INCLUDE_PATH": "D:\\Dev\\ffmpeg-5.1\\include;",}
}
在VSCode下ctrl+shift+p,调用命令行,执行CMake:Configure,之后直接build
之后运行会缺少动态库,需要使用Dependencies工具查找可执行文件所需的依赖。工具连接
此时直接运行会出现qt plugin 的依赖缺少。如下
将qt下的plugin platform文件夹复制到可执行文件中。
再次运行
到此编译结束。