首页 > 其他分享 >Windosw下Visual Studio2022编译FFmpeg(支持x264、x265、fdk-acc)

Windosw下Visual Studio2022编译FFmpeg(支持x264、x265、fdk-acc)

时间:2024-07-26 09:54:20浏览次数:18  
标签:Windosw acc git FFmpeg -- 编译 enable build https

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

一、安装Visual Studio2022

可参考另外一篇文章:Windows安装Visual Studio2022 + QT5.15开发环境_qt5.15.2 vs2022-CSDN博客

 二、安装MSYS2

下载地址:https://www.msys2.org/

 

百度网盘链接:https://pan.baidu.com/s/1DWarXxYEXn5HsLPc32eY_g?pwd=imcs 
提取码:imcs 

安装完成之后,先把安装⽬录(默认路径 c:\msys64下的msys2_shell.cmd中注释掉的 rem set MSYS2_PATH_TYPE=inherit 改成 set MSYS2_PATH_TYPE=inherit ,这是为了将vs的环境继 承给MSYS2

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

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

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

三、安装编译环境
 1、右键使用管理员身份打开x64 Native Tools Command Prompt for VS 2022

 

进入msys64的安装目录,执行msys2_shell.cmd -use-full-path

 

这样会打开MSYS2 的终端:  

 

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

#pacman -Syu 一键安装和升级所有的库
pacman -Syu
#安装编译ffmpeg所需的包
pacman -S gcc
pacman -S make
pacman -S pkg-config
pacman -S diffutils
pacman -S yasm
pacman -S nasm

#避免与msvc的link冲突
mv /usr/bin/link.exe /usr/bin/link.exe.bak
2、安装git:

pacman -S git

3、下载源码
  • 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下载地址往后看(此处可忽略)

新建D:\build文件夹并将源代码复制至此

四、编译依赖库 
1、编译x264 

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

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

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

#!/bin/sh

OPTIONS="--enable-shared"

BUILD_DIR="./../build64"

CC=cl ./configure $OPTIONS --prefix=$BUILD_DIR/

make -j16
make install
make clean

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

cd /d/build/x264
sh build.sh

编译完后输出如下文件 :

2、编译x265 

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

#!/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目录编译

cd /d/build/x265_git/build/msys-cl
sh make-Makefiles-64bit.sh

编译完后输出如下文件 :

3、编译fdk-aac

安装cmake-gui,下载地址:

https://cmake.org/download/

点击Finish,然后修改输出目录

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

 

依次编译生成fdk-aac、INSTALL 

编译完成后输出如下: 

 

4、编译SDL2 (ffplay需要,不编译ffplay请跳过)

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

Visual Studio2022(用管理员权限)打开生成的工程SDL2.sln

  依次编译生成SDL2、INSTALL

五、编译FFmpeg 

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

 

进入目录D:\build\build64\lib,将 libx264.dll.lib 重命名为 libx264.lib ,libx265.lib 重命名为 x265.lib 

下载FFmpeg源码

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

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

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

static void print_program_info(int flags, int level)
{
    const char *indent = flags & INDENT? "  " : "";

    av_log(NULL, level, "%s version " FFMPEG_VERSION, program_name);
    if (flags & SHOW_COPYRIGHT)
        av_log(NULL, level, " Copyright (c) %d-%d the FFmpeg developers",
               program_birth_year, CONFIG_THIS_YEAR);
    av_log(NULL, level, "\n");
    //av_log(NULL, level, "%sbuilt with %s\n", indent, CC_IDENT);

    av_log(NULL, level, "%sconfiguration: " FFMPEG_CONFIGURATION "\n", indent);
}

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

static void ffprobe_show_program_version(WriterContext *w)
{
    AVBPrint pbuf;
    av_bprint_init(&pbuf, 1, AV_BPRINT_SIZE_UNLIMITED);

    writer_print_section_header(w, NULL, SECTION_ID_PROGRAM_VERSION);
    print_str("version", FFMPEG_VERSION);
    print_fmt("copyright", "Copyright (c) %d-%d the FFmpeg developers",
              program_birth_year, CONFIG_THIS_YEAR);
    //print_str("compiler_ident", CC_IDENT);
    print_str("configuration", FFMPEG_CONFIGURATION);
    writer_print_section_footer(w);

    av_bprint_finalize(&pbuf, NULL);
}

在msys中切换到ffmpeg目录 

cd /d/build/ffmpeg/

配置pkg-config 

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/d/build/buil64d/lib/pkgconfig 

CC=cl ./configure --prefix=/d/build/build64/ffmpeg \
--toolchain=msvc \
--arch=x64 \
--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/d/build/build64/include" \
--extra-ldflags="-L/d/build/build64/lib"

编译:make -j16

安装:make install

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

标签:Windosw,acc,git,FFmpeg,--,编译,enable,build,https
From: https://blog.csdn.net/u012959478/article/details/140662619

相关文章

  • 鸿蒙Accessibility Kit无障碍服务开发指南(一)
    鸿蒙AccessibilityKit无障碍服务开发指南(一)文章目录鸿蒙AccessibilityKit无障碍服务开发指南(一)前言一、无障碍框架原理二、使用步骤1.继承AccessibilityExtensionAbility2.配置无障碍服务3.开启无障碍服务4.管理无障碍服务上下文前言无障碍模式是指任何人在任......
  • 流量回放新形态:基于网关 Access Log 发起
    作者:休祯背景为什么需要流量回放无论是面向即将上线的新版本做最后的性能测试,还是在遇到棘手的故障时帮助开发人员快速定位问题原因,流量回放技术都发挥着不可或缺的作用。使用真实世界的流量数据进行回放能使性能测试过程更加接近实际运行状态,确保新版本的性能真正满足用户的预......
  • 基于LVGL9.0、FFmpeg、OpenCV的Linux智能家居监控安防系统(含演示视频)
    文章目录介绍硬件层面软件层面技术栈驱动程序应用程序项目设计可优化项演示视频介绍智能家居监控安防系统是一个集成监控、安防、人脸识别、环境监测、家居控制的一体化系统。它包含5大模块,分别是:视频监控:支持查看摄像头、拍照、录像、直播和检测到人体时自动拍......
  • php 访问网站时 如何不直接显示index.php,而是显示目录? .htaccess 文件
    想要的效果输入网址后显示目录,而不是indxe.phpapache的方法修改“.htaccess文件DirectoryIndexindex.phpindex.html 参考:https://www.php.cn/faq/693671.html其他.htaccess文件的使用https://www.cnblogs.com/helloworld3/p/4468582.html nginx的方法https:/......
  • SAP中冲销会计凭证的BAPI【BAPI_ACC_DOCUMENT_REV_POST 】的使用方法
    BAPI_ACC_DOCUMENT_REV_POST支持的参数以下是BAPI_ACC_DOCUMENT_REV_POST支持的一些关键参数及其说明:OBJ_TYPE:对象类型,通常指凭证类型。OBJ_KEY:对象键,通常指凭证编号。OBJ_SYS:对象系统标识,指SAP系统的逻辑系统编号。COMP_CODE:公司代码。PSTNG_DATE:过账日期,冲销凭证的过......
  • 解锁Nginx日志的宝藏:GoAccess——你的实时、交互式Web日志分析神器!
    在当今数字化的时代,网站的流量和用户行为数据就像是一座蕴藏着无尽秘密的宝藏。而如何有效地挖掘和分析这些数据,成为了许多网站管理者和开发者头疼的问题。GoAccess,一款开源的实时Web日志分析工具,或许能为我们提供一扇窥探这些秘密的窗口。GoAccess:你的流量分析好帮手GoAccess......
  • nvenc 用于 ffmpeg 硬件加速,使用 moviepy 生成损坏的 mp4
    我一直在尝试创建一个Python应用程序,它需要一个mp4文件、一个mp3文件和一个字幕字典来生成一个输出mp4文件。我让它工作得很好,但我发现libx264编解码器调用write_videofile()时会非常慢,尤其是使用CompositeVideoClip对象时。我想使用我的GPU来......
  • FFmpeg 常用功能
    1.无损快速分割视频1.1:从01:45秒开始截取,一直到结束。备注:这个执行过程非常快。cdC:\MyFiles\FFmpeg\ffmpeg-v2022-03-09\ffmpeg\binffmpeg-i"D:\周星驰《功夫》.mp4"-ss00:01:45-codeccopy"D:\周星驰《功夫》_裁剪后.mp4"  1.1:从01:45秒开始截取,持续一分......
  • 【CentOS】CentOS7上安装使用ffmpeg
    安装CentOS7核心存储库中不提供FFmpeg:方案一、源码编译安装FFmpeg,方案二、使用NuxDextop存储库中的yum安装它。本文采用方案二 步骤一:启用EPEL仓库Nux存储库依赖于Epel软件存储库sudoyuminstallepel-release 步骤二:启用NuxDextop仓库sudorpm--importht......
  • Sales Accreditation (Business)
    AWSPartner:SalesAccreditation(Business)(SimplifiedChinese)模块0:课程欢迎辞概览和欢迎辞模块1:云概念与AWS服务云计算为什么客户选择AWSAWS服务简介推动数字化转型模块2:商业价值商业价值和基准测试AWSCloudValueFramework:成本节省AWSCloudValueFr......