Windows编译FFmpeg

想要在MSVC使用。我们可以使用GitHub上的ShiftMediaProject FFmpeg的源码进行编译。

编译之前我们需要创建一个编译所需要的目录,例如我在D盘创建了FFmpegBuild目录,你在其他位置创建也可以。然后需要在该目录下创建msvc和source目录

源码下载

源码压缩包可以从ShiftMediaProject FFmpeg下载

使用Git下载源码,因为国内访问GitHub网站有限制,clone有时候会失败,失败的话就继续重复该命令。我这已经下载好了。

下载库依赖

进入FFmpeg源码中的SMP目录下

打开Git在里面运行project_get_dependencies.bat,他会开始自动下载所需要的依赖库,因为国内访问GitHub网站有限制,依赖可能会下载失败,失败的话就继续重复该命令。如果你是下载的源码包解压出来的,记得使用git init命令来初始化仓库,否则依赖无法拉取

如果依赖下载失败可以去网上手动下载依赖包,然后把下载好的依赖包放到source目录下

依赖包如下:

     bzlib
     iconv
     zlib
     lzma
     libxml2
     sdl2
     libmp3lame
     libvorbis
     libspeex
     libopus
     libilbc
     libtheora
     libx264
     libx265
     libxvid
     libvpx
     libgme
     libmodplug
     libsoxr
     libfreetype
     fontconfig
     libfribidi
     libass
     gnutls
     libgcrypt
     libssh
     libcdio
     libcdio_paranoia
     libbluray
     opengl
     ffnvcodec
     libmfx

下载外部库

以下是外部库的下载地址

 https://github.com/KhronosGroup/OpenGL-Registry
 https://github.com/KhronosGroup/EGL-Registry
 https://github.com/FFmpeg/nv-codec-headers
 https://github.com/GPUOpen-LibrariesAndSDKs/AMF
 https://github.com/KhronosGroup/Vulkan-Headers

下载完成之后在msvc目录下创建一个include目录。然后再include目录中创建gl目录和AMF目录。

  1. OpenGL-Registry\api\GL\ 里的glext.hwglext.h放入 msvc/include/gl/

  2. EGL-Registry\api下的KHR目录放入msvc/include/

  3. nv-codec-headers\include里的ffnvcodec目录复制到/msvc/include

  4. AMF\amf\public\include里的两个文件夹复制到/vs2022/msvc/include/AMF

  5. Vulkan-Headers\include中的2个目录拷贝到include目录中

最后的include目录如下

下载编译工具链

下载地址

 https://github.com/ShiftMediaProject/VSNASM
 https://github.com/ShiftMediaProject/VSYASM

下载完成之后把VSNASM和VSYASM放入到msvc目录中

下载nams并安装,不安装的话无法编译ffmpeg

开始编译

使用管理员方式打开cmd命令行,进入到msvc目录中。

进入VSNASM目录下运行里面的install_script.bat

再进入VSYASM目录中,运行install_script.bat

接下来进入FFmpeg源码目录下的SMP目录,双击打开ffmpeg_deps.sln。在VS中先去生成它的依赖项,然后再去编译lffmepg相关的库,最后编译ffmpeg和ffplay这些可执行程序。因为这些库有依赖顺序。不能直接去编译ffmpeg,直接编译就会报错。

生成完毕之后FFmpeg的库会在在msvc目录下生成

不同的ffmpeg编译所需的依赖可能不太一样,可以去看看SMP目录中的readme文件。我就是按照其中的内容一步一步来的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值