Windosw下VS 2022编译FFmpeg(支持x264、x265、fdk-acc)

FFmpeg7.0 版本移除了 6.0 之前已弃用的 API,无法向下兼容。所以编译的版本选择FFmpeg 6.1.1。

下载msys2

MSYS2

建议安装在c盘

编辑msys2_shell.cmd

安装完之后找到msys2_shell.cmd脚本文件,

将rem set MSYS2_PATH_TYPE=inherit 改为 set MSYS2_PATH_TYPE=inherit

修改的目的是为了MSYS2继承vs的环境.

添加国内镜像,下载源码用

修改C:\msys64\etc\pacman.d中mirrorlist.msys,在## Primary下面添加清华大学的源镜像

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch

环境下载

  1. 右键使用管理员身份打开x64 Native Tools Command Prompt for VS 2022
  2. 进入msys64的安装目录: cd /d c:\msys64
  3. 执行: msys2_shell.cmd -use-full-path
  4. 这样会打开MSYS2 的终端

MSYS2窗口打开后,先把基本的环境安装好

bash 复制代码
pacman -Syu  #中间会退出一次,再次打开重新执行此命令即可
pacman -S make diffutils nasm git vim pkg-config
pacman -S mingw-w64-x86_64-toolchain
mv /usr/bin/link.exe /usr/bin/link.exe.bak #重命名link.exe,目的是避免与MSVC的link.exe冲突

下载源码

建议将源码下载到msys2的home目录下: C:\msys64\home

x264地址:

git clone http://git.videolan.org/git/x264.git

**或 git clone **https://code.videolan.org/videolan/x264.git

x265地址:

**git clone **https://bitbucket.org/multicoreware/x265_git.git

fdk-aac地址:

**git clone --depth 1 **https://gitee.com/mirrors/fdk-aac.git

下载FFmpeg源码

方式一:git clone --depth 1 https://github.com/FFmpeg/FFmpeg.git -b release/6.1

方式二:下载地址: https://ffmpeg.org/download.html#releases

下载SDL2

git clone --depth 1 https://github.com/libsdl-org/SDL.git -b SDL2

编译依赖库

编译x264

配置编译脚本并运行

--enable-shared:编译成动态库(建议)

--enable-static:编译成静态库

C:\msys64\home\x264目录下新建build.sh(-j 线程数量,根据自己电脑情况调整)

bash 复制代码
#!/bin/sh
 
OPTIONS="--enable-shared"
 
BUILD_DIR="./../build64"
 
CC=cl ./configure $OPTIONS --prefix=$BUILD_DIR/
 
make -j16
make install
make clean

在msys2窗口中cd 进入x264目录编译

bash 复制代码
cd x264/
sh build.sh

编译完输出如下文件:

编译x265

编写编译脚本并运行

x265_git\build\msys-cl 目录下修改 make-Makefiles-64bit.sh

bash 复制代码
#!/bin/sh
# This is to generate visual studio builds with required environment variables set in this shell, useful for ffmpeg integration
# Run this from within an MSYS bash shell
 
INSTALL_DIR="./../../../build64/"
target_processor='x64'
path=$(which cl)
 
if cl; then
    echo
else
    echo "please launch 'visual studio command prompt' and run '..\vcvarsall.bat amd64'"
    echo "and then launch msys bash shell from there"
    exit 1
fi
 
if [[ $path  == *$target_processor* ]]; then
    echo
else
    echo "64 bit target not set, please launch 'visual studio command prompt' and run '..\vcvarsall.bat amd64 | x86_amd64 | amd64_x86'"
    exit 1
fi
 
cmake -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR -DCMAKE_CXX_FLAGS="-DWIN32 -D_WINDOWS -W4 -GR -EHsc" -DCMAKE_C_FLAGS="-DWIN32 -D_WINDOWS -W4"  ../../source
if [ -e Makefile ]
then
    nmake
fi
 
nmake install

在msys2窗口中cd进入x265_git/build/msys-cl目录编译

bash 复制代码
cd x265_git/build/msys-cl
sh make-Makefiles-64bit.sh

编译完后输出如下文件:

编译fdk-aac

cmake-gui配置cmake

下载地址: https://cmake.org/download/

配置

修改输出目录

生成

Visual Studio2022(有问题请用管理员权限)打开生成的工程 fdk-aac.sln

依次编译生成 fdk-aacINSTALL

右键 fdk-aac点击生成

完成

右键 INSTALL点击生成

生成完成

编译完成后输出如下:

编译SDL2 (ffplay需要)

cmake-gui 配置cmake

同上

vs2022编译生成

操作同上, 依次编译生成 SDL2、INSTALL, 记得更换 Release 版本

完成

编译FFmpeg

修改pkgconfig

修改 C:\msys64\home\build64\lib\pkgconfig 内的 fdk-aac.pc、x264.pc、x265.pc、sdl2.pc 内 prefix 值

重命名动态库

进入目录 C:\msys64\home\build64\lib,将 libx264.dll.lib 重命名为 libx264.lib ,libx265.lib 重命名为 x265.lib

修改 FFmpeg 配置文件

修改 fftools/opt_common.c (或 cmdutils.c) 源码文件, 注释掉 CC_IDENT 所在行,如下所示:

修改 fftools/ffprobe.c 源码文件, 注释掉 CC_IDENT 所在行,如下所示

在 msys 中切换到 FFmpeg 目录: cd FFmpeg/

配置pkg-config:

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/c/msys64/home/build64/lib/pkgconfig

export PKG_CONFIG_PATH="/c/msys64/home/build64/lib/pkgconfig:$PKG_CONFIG_PATH"

验证

pkg-config --libs x264

pkg-config --libs x265

pkg-config --libs fdk-aac

pkg-config --libs sdl2

编译安装

plain 复制代码
CC=cl ./configure --prefix=/c/msys64/home/build64/ffmpeg \
--toolchain=msvc \
--arch=x86_64 \
--enable-cross-compile \
--enable-gpl \
--enable-nonfree \
--enable-libfdk-aac \
--enable-libx264 \
--enable-libx265 \
--enable-filter=delogo \
--enable-debug \
--disable-optimizations \
--enable-shared \
--enable-sdl2 \
--extra-cflags="-I/c/msys64/home/build64/include" \
--extra-ldflags="-LIBPATH:C:/msys64/home/build64/lib"

make -j16
make install

生成动态库及可执行程序即大功告成

报错

编译失败可以在 C:\msys64\home\ffmpeg\ffbuild\config.log 中查看失败原因,不会就ai

sdl2未找到:

打开看看lib:

发现后缀带d,说明是Debug版本,应该是vs编译安装时未使用Release,重新编译安装

重新编译安装

完成

相关推荐
F_D_Z2 小时前
Causal Forcing:自回归扩散蒸馏与高质量实时交互视频生成
数据挖掘·回归·音视频
骨子里的偏爱2 小时前
.raw后缀的文件转为jpg(压缩视频流转图片)
音视频
码云数智-园园2 小时前
告别Flash:HTML5音视频播放器实战指南
前端·音视频·html5
热爱专研AI的学妹12 小时前
Seedance 2.0(即梦 2.0)深度解析:AI 视频正式迈入导演级精准可控时代
大数据·人工智能·阿里云·音视频
byte轻骑兵17 小时前
从收音机到蓝牙:LE Audio核心BASS服务解析与实战
人工智能·音视频·语音识别·le audio·低功耗音频
大猫会长18 小时前
AudioContext给音频提高音量
前端·javascript·音视频
开开心心就好19 小时前
无需安装的单机塔防游戏轻松畅玩
人工智能·游戏·pdf·音视频·智能家居·语音识别·媒体
开开心心就好19 小时前
这款工具批量卸载软件并清理残留文件
人工智能·游戏·音视频·语音识别·媒体·程序员创富·高考