FFmpeg - Windows下使用ShiftMediaProject方法编译FFmpeg

一、创建一个ShiftMediaProject文件夹

我创建在: C:\ShiftMediaProject

二、下载ShiftMediaProject源码 (以下操作最好都要翻墙)

  1. 创建一个source文件夹,进入这个文件夹中(C:\ShiftMediaProject\source),下载 FFmpeg:
git clone https://github.com/ShiftMediaProject/FFmpeg.git
  1. 下载其他依赖,进入\FFmpeg\SMP 执行 project_get_dependencies.bat 自动下载ffmepg依赖项目
cd FFmpeg\SMP
project_get_dependencies.bat

脚本执行完成后,会下载到这些:
在这里插入图片描述

备用方案:如果你的网络很慢,经常下载失败,可以自己一个一个下载这些依赖,下载在source文件夹中(C:\ShiftMediaProject\source),依次执行:

git clone https://github.com/ShiftMediaProject/bzip2.git
git clone https://github.com/ShiftMediaProject/fontconfig.git
git clone https://github.com/ShiftMediaProject/freetype2.git
git clone https://github.com/ShiftMediaProject/fribidi.git
git clone https://github.com/ShiftMediaProject/game-music-emu.git
git clone https://github.com/ShiftMediaProject/gmp.git
git clone https://github.com/ShiftMediaProject/gnutls.git
git clone https://github.com/ShiftMediaProject/harfbuzz.git
git clone https://github.com/ShiftMediaProject/lame.git
git clone https://github.com/ShiftMediaProject/libass.git
git clone https://github.com/ShiftMediaProject/libbluray.git
git clone https://github.com/ShiftMediaProject/libcdio.git
git clone https://github.com/ShiftMediaProject/libcdio-paranoia.git
git clone https://github.com/ShiftMediaProject/libgcrypt.git
git clone https://github.com/ShiftMediaProject/libgpg-error.git
git clone https://github.com/ShiftMediaProject/libiconv.git
git clone https://github.com/ShiftMediaProject/libilbc.git
git clone https://github.com/ShiftMediaProject/liblzma.git
git clone https://github.com/ShiftMediaProject/libssh.git
git clone https://github.com/ShiftMediaProject/libvpx.git
git clone https://github.com/ShiftMediaProject/libxml2.git
git clone https://github.com/ShiftMediaProject/mfx_dispatch.git
git clone https://github.com/ShiftMediaProject/modplug.git
git clone https://github.com/ShiftMediaProject/nettle.git
git clone https://github.com/ShiftMediaProject/ogg.git
git clone https://github.com/ShiftMediaProject/opus.git
git clone https://github.com/ShiftMediaProject/sdl.git
git clone https://github.com/ShiftMediaProject/soxr.git
git clone https://github.com/ShiftMediaProject/speex.git
git clone https://github.com/ShiftMediaProject/theora.git
git clone https://github.com/ShiftMediaProject/vorbis.git
git clone https://github.com/ShiftMediaProject/x264.git
git clone https://github.com/ShiftMediaProject/x265.git
git clone https://github.com/ShiftMediaProject/xvid.git
git clone https://github.com/ShiftMediaProject/zlib.git

下载完,再执行 \FFmpeg\SMP 目录下的 project_get_dependencies.bat , 因为上面这些主动下载的也不全,还需要使用这个脚本补充下载



  1. 下载安装yasm nasm,也是下载在source文件夹中(C:\ShiftMediaProject\source)
    下载:https://github.com/ShiftMediaProject/VSNASM/releases/latest
    下载:https://github.com/ShiftMediaProject/VSYASM/releases/latest
    或者
git clone https://github.com/ShiftMediaProject/VSYASM.git
git clone https://github.com/ShiftMediaProject/VSNASM.git

执行nasm 和yasm安装脚本(需要使用管理员权限打开cmd执行安装脚本)

VSNASM\install_script.bat
VSYASM\install_script.bat

在这里插入图片描述

三、下载其他头文件

  1. 创建一个msvc目录(C:\ShiftMediaProject\msvc),目录结构如下:
- msvc 			# (这次创建的,用于放置头文件和编译完FFmpeg后生成的动态库)
- source    	#(这里是前一节下载的FFmpeg和依赖库源文件)
    - FFmpeg	      #(FFmpeg源文件)
    - Any other libraries source code..    #(其他依赖库源文件)

所需要的头文件,我整理上传到资源库了,可以下载我整理出来的: https://download.csdn.net/download/Jay_Xio/87274439

也可以按照下面的步骤自己下载

  1. 下载opengl 的 glext.h wglext.hmsvc/include/gl/ 目录下:
    下载地址:https://registry.khronos.org/OpenGL/api/GL/
    在这里插入图片描述

  2. 下载 opengl 的 khrplatform.hmsvc/include/KHR/ 目录下:
    下载地址:https://registry.khronos.org/EGL/api/KHR/
    在这里插入图片描述

  3. 下载 nv-codec-headers 项目的 include 文件夹下的 ffnvcodec文件夹 内容到 msvc\include 目录下:
    下载地址:https://github.com/FFmpeg/nv-codec-headers
    在这里插入图片描述

  4. 下载 AMF 项目的 amf/public/include 文件夹下的内容到 msvc/include/AMF/目录下:
    下载地址:https://github.com/GPUOpen-LibrariesAndSDKs/AMF
    在这里插入图片描述



四、编译

用visual studio打开 ShiftMediaProject\source\FFmpeg\SMP\ffmpeg_deps.sln

在这里插入图片描述
在这里插入图片描述

编译后的文件在: ShiftMediaProject\msvc 目录



五、参考资料

https://shiftmediaproject.github.io/1-projects/
https://github.com/ShiftMediaProject/FFmpeg/blob/master/SMP/readme.txt
vs2019编译ShiftMediaProject
VS2022编译调试FFmpeg

猜你喜欢

转载自blog.csdn.net/Jay_Xio/article/details/128305347