想要在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目录。
-
把
OpenGL-Registry\api\GL\里的glext.h跟wglext.h放入msvc/include/gl/中 -
把
EGL-Registry\api下的KHR目录放入msvc/include/下 -
把
nv-codec-headers\include里的ffnvcodec目录复制到/msvc/include中 -
把
AMF\amf\public\include里的两个文件夹复制到/vs2022/msvc/include/AMF中 -
把
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文件。我就是按照其中的内容一步一步来的。
2155

被折叠的 条评论
为什么被折叠?



