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-aac、INSTALL

右键 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,重新编译安装

重新编译安装

完成

相关推荐
2601_965619696 分钟前
新闻数据可视化视频:AI自动生成图表动画的完整流程
人工智能·信息可视化·音视频
企业数字化笔记1 小时前
一段视频有两次跳投,动作分析为什么要先做事件分段?
人工智能·python·音视频
2601_955662461 小时前
支持声音克隆的配音工具怎么选?先了解使用条件
人工智能·音视频·语音识别·视频
TK泰妞2 小时前
TikTok 带货素材如何批量测试?从参考视频到内容矩阵的实操方法
线性代数·矩阵·音视频
softlgh3 小时前
猫叫声识别:嵌入式离线猫叫声检测与宠物健康
音视频·猫叫声识别·猫叫声检测·声音识别·声音分类
码流子3 小时前
高速公路视频AI分析,算力该放哪:边缘、中心还是云边协同?
大数据·数据库·人工智能·物联网·音视频
企业数字化笔记4 小时前
AI视频成片怎样做到可追溯?用镜头清单、文件哈希和字幕时间轴复盘交付
人工智能·音视频·哈希算法
TechVoyager_824616 小时前
多形态输入与12 通道音频:IT6615 这颗 HDMI 发射器的接口宽度
音视频·音频芯片·芯片选型·视频发射
Raymond168817 小时前
AI配音工具长文本合成架构技术解析:全局音色锚定与声学状态跟踪
人工智能·架构·实时互动·视觉检测·音视频·语音识别
hflmwl81 天前
Wise Data Recovery找回误删的文档照片音乐和视频
音视频·datarecovery·找回误删的文档照片音乐和视频·找回误删的文档照片音乐视频