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

news2024/11/28 4:39:37

文章目录

  • 一、创建一个ShiftMediaProject文件夹
  • 二、下载ShiftMediaProject源码 (以下操作最好都要翻墙)
  • 三、下载其他头文件
  • 四、编译
  • 五、参考资料

一、创建一个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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LeetCode题目详解】(一)27.原地移除元素、88.合并两个有序数组

目录 一、力扣第27题:原地移除元素 1.思路一: 2.思路二 3.思路三 二、力扣第88题:合并两个有序数组 1.思路一: 2.思路二: 3.思路三: 总结 一、力扣第27题:原地移除元素 题目链接&#xf…

基于YOLOv3的车辆号牌定位

01 OCR原理分析 本文中采用的车辆号牌识别部分的是采用CNNLSTMCTC组合而成,整个网络部分可以分为三个部分,首先是主干网络CNN用于提取字符的特征信息,其次采用深层双向LSTM网络在卷积特征的基础上提取文字或字符的序列特征,最终引…

基于java+springboot+mybatis+vue+mysql的校园台球厅人员与设备管理系统

项目介绍 校园台球厅人员与设备管理系统采用java技术,基于springboot框架,前端使用vue技术,mysql数据库进行开发,实现了以下功能: 本系统主要包括管理员和用户两个角色组成,主要包括以下功能:…

m基于LMMSE+turbo算法的信道估计均衡器误码率仿真,对比LS,DEF以及LMMSE三种均衡算法误码率

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 本文推导了符号间干扰(ISI)信道的矢量形状因子图表示。结果图具有树形结构,避免了现有图方法中的短周期问题。基于联合高斯近似,我们在LLR&#xf…

CUDA入门和网络加速学习(二)

0. 简介 最近作者希望系统性的去学习一下CUDA加速的相关知识,正好看到深蓝学院有这一门课程。所以这里作者以此课程来作为主线来进行记录分享,方便能给CUDA网络加速学习的萌新们去提供一定的帮助。 1. 基础矩阵乘法 下图是矩阵乘法的示意图&#xff0…

MySQL表的增删查改(上)

作者:~小明学编程 文章专栏:MySQL 格言:目之所及皆为回忆,心之所想皆为过往 前面给大家分享了关于数据库的一些基本的操作,今天分享的是数据库的核心内容,那就是我们常说的增删查改,也是我们数…

达梦数据库,备份目录冲突

问题描述 达梦数据库执行全库备份,BACKUP DATABASE FULL BACKUPSET ‘/data_share/data_back’; 提示备份目录冲突 解决办法 指定的目录必须为一个空目录。 下图,我指定的目录下有一个test文件夹,所以导致失败,把test文件删除m

[附源码]Python计算机毕业设计SSM基于WEB的网上零食销售系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Python OpenCV中的图像阈值处理

1 前言 上一篇介绍了用C如何对一幅图像进行阈值处理,本篇接着用python来做同样的事情。 图像阈值处理是很多高级算法的底层逻辑之一,比如在做图形检测,轮廓识别时,常常会先对图像进行阈值处理,然后再进行具体的检测或…

FreeRTOS使用 — 合理使用内存 “ 任务中创建任务 ”

前言 在我们学习 RTOS 的过程中,很多朋友都不会遇到内存不够的问题,因为大部分的开发板使用的芯片对学习来说,内存 “足够大” 。所以基本上很多人学会了基本功能,到了实际工作中使用,往往会遇到内存不够的问题&#…

pikachu靶场-10 XXE漏洞

XXE漏洞 概述 XXE -“xml external entity injection” 既"xml外部实体注入漏洞"。 概括一下就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题" 也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严…

shell语法总结一(持续补充)

文章目录一、变量1、变量的命名规则2、查看变量3、删除命令4、变量的作用域4.1、局部变量4.2、全局变量4.3、环境变量5、自定义变量6、只读变量二、字符串1、单引号2、双引号(用的多)3、拼接字符串4、获取字符串的长度5、提取子字符串三、shell数组1、定…

必须掌握的数据库面试问题

一、为什么用自增列作为主键 1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引。 如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引。 如果也没有这样的唯一索引,则InnoDB会选择内置…

1990-2021年全国各省产业高级化 数据

1990-2021年全国各省产业高级化数据 1、来源为:统计NJ、各省NJ 2、包括:全国31个省份 3、时间:1990-2021年 4、指标包括: 各地区经纬度、第三产业增加值、第二产业增加值、高级化水平 高级化水平第三产业增加值(亿元) / 第二…

HTTP协议【报文格式】

文章目录HTTP协议什么是HTTP协议HTTP协议格式抓包工具的使用HTTP请求URLURL的组成URL encodeHTTP请求的报文格式HTTP响应的报文格式HTTP方法GET方法POST方法POST方法与GET方法的区别请求报头HTTP响应状态码状态码的组成状态码的类别HTTP协议 什么是HTTP协议 HTTP协议即Hyper T…

m基于GA遗传优化的多因素加权竞价博弈频谱分配算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 假设有M个用户均为MIMO Full Duplex&#xff0c;N个频率&#xff0c;1<N<M&#xff0c;设计算法实现M个用户与N个频率的匹配。 由于在一个MIMO系统中&#xff0c;用户数量M大于可用的频谱个…

web自动化测试入门篇04——selenium+python基础方法封装

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

记录一次解决centos不定时触发oom的经历

前言 前一段时间&#xff0c;业务部门的系统不定时的反馈&#xff0c;系统打开不了&#xff0c;提示&#xff1a; 等技术开发同学反应过来去查看业务状态时&#xff0c;服务又恢复了&#xff0c;由于不是核心的业务&#xff0c;并且出问题差不多1分钟左右&#xff0c;没太在意…

【Vue 快速入门系列】todoList案例小总结

文章目录一、案例效果二、项目介绍三、版本更新迭代末、项目素材1.css样式2.html一、案例效果 如下图所示&#xff0c;制作一个这样的记事本&#xff0c;可以使用这个记事本进行数据的存储以及管理&#xff0c;样式是天禹老师写好的我们直接使用就好了&#xff0c;主要在这个小…

[UE][UE5]零基础学习-学习记录1-UE5安装与基本使用方法

[UE5]学习1-UE5安装与基本使用方法写在前面01.作者碎碎念2.UE5安装方法01.UE5需要的电脑配置02.UE5安装方法001.Epic下载002.下载安装UE503.基本使用方法001.创建项目打开现有的项目&#xff1a;002.文件目录结构003.用户界面介绍1).3D画面视窗2).菜单栏3).内容浏览器4).属性面…