ffmpeg编译安装

news2025/7/10 23:26:24

ffmpeg编译安装

  • 前言
  • 一、下载ffmpeg
  • 二、编译安装
    • 2.1 Linux编译ffmpeg
    • 2.2 Windows编译ffmpeg
  • 总结


前言

  Fmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

  FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。 [1] FFmpeg编码库可以使用GPU加速。


一、下载ffmpeg

  • ffmpeg下载地址:https://ffmpeg.org/download.html

  通过上面下载地址我们可以进入到如下界面:

在这里插入图片描述

  • 也可采用最简单的方式:git clone将ffmpeg源码下载下来:
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg

在这里插入图片描述

二、编译安装

2.1 Linux编译ffmpeg

  1. /usr/local目录下新建一个ffmpeg文件夹,我会将ffmpeg安装在这个文件夹下。
  2. 进入git clone下载的ffmpeg源码包,使用./configure --enable-debug=3 --prefix=/usr/local/ffmpeg 进行编译
  3. 这里我使用的是centos7,编译时产生了一个错误:nasm/yasm not found or too old. Use --disable-x86asm for a crippled build,这是因为原因 FFMPEG为了提高编译速度,使用了汇编指令,如MMX和SSE等。如果系统中没有yasm指令的话,就会该错误。
    在这里插入图片描述
  4. 知道了为什么出错,也就有了解决的方向,这里只要安装yasm就可以了,最简单的方法只要yum install yasm就可以了。
  5. 安装好yasm之后,我们继续在ffmpeg的源码包中使用make && make install安装就可以了,安装好之后出现的部分如下:
    在这里插入图片描述

在这里插入图片描述

安装好之后配置好环境变量就能使用了:

  • ① 使用locate bash_profile命令找到bash_profile文件
  • ② 进入配置文件vim ~/.bash_profile 并使用 : 分隔并添加路径,如:
    在这里插入图片描述
  • ③ 保存后,执行 source ~/.bash_profile 使其生效。

2.2 Windows编译ffmpeg

  • 方法一:Cygwin(Cygnus Windows)

  Cygwin是一个在Windows平台上运行的类UNIX模拟环境,是Cygnus Solutions公司开发的自由软件(该公司开发的著名工具还有eCos,不过现已被Redhat收购)。它对于学习UNIX/Linux操作环境,或者从UNIX到Windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用GNU工具集在Windows上进行嵌入式系统开发,非常有用。随着嵌入式系统开发在国内日渐流行,越来越多的开发者对Cygwin产生了兴趣。

  Cygwin 提供一个UNIX 模拟 DLL 以及在其上层构建的多种可以在 Linux 系统中找到的软件包,在 Windows XP SP3 以上的版本提供良好的支持。Cygwin主要由Red Hat及其下属社区负责维护。

  Cygwin下载地址:http://www.cygwin.com/install.html
在这里插入图片描述

  • 方法二(最常使用):MinGW(Minimalist GNU for Windows)+ MSYS2(Minimal SYStem 2)

  • 方法三:VS(Visual Studio 2015/2017…)+ MSYS2(Minimal SYStem 2)


总结

期待大家和我交流,留言或者私信,一起学习,一起进步!

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

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

相关文章

154. SAP UI5 Smart Table 和 Smart Filter Bar 的联合使用方法介绍

本教程第 147 个步骤,我们介绍了 SAP UI5 Smart Table 控件的用法: SAP UI5 应用开发教程之一百四十七 - SAP UI5 SmartTable 控件的使用介绍如下图所示: 本步骤我们在 Smart Table 本身的基础上再进一步,学习如何将 Smart Table 配合 Smart Filter Bar 共同使用。 先看一…

JDK之强软弱虚引用

Java中强软弱虚引用的整体架构: 强引用 当内存不足,JVM开始垃圾回收,对于强引用的对象,就算是出现了OOM也不会对该对象进行回收,死都不收。 强引用是我们最常见的普通对象引用,只要还有强引用指向一个对象…

Fabric.js 元素被遮挡的部分也可以操作

本文简介 点赞 关注 收藏 学会了 题目: 当两个元素有部分重叠时,选中底层元素后,想通过被盖住的部分移动元素,该如何实现? 其实 Fabric.js 已经提供了相应的 API 去完成上面的需求了。但直到今天, Fabr…

动态内存开辟+柔性数组

C/C中程序内存区域划分 (数据段就是静态区) C/C程序内存分配的几个区域: 1.栈区 (stack): 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集…

linux系统中裸机实现RTC的基本方法

大家好,今天主要和大家聊一聊,如何显示RTC实时时钟的方法。 目录 第一:RTC实时时钟简介 第二:利用SNVS_LP的SRTC的具体配置方法 第三:初始化RTC对应的代码 第一:RTC实时时钟简介 在高端芯片中&#xff0…

Docker管理面板Crane开源了!

导读数人云容器管理面板 Crane 开源啦!Crane 包含着数人云工程师对 Docker 最新技术的热爱和实践。希望借助开源社区的力量,让 Crane 完善自身,更好地成长起来,让更多的国内用户体验并参与到最新的容器技术中。在 Docker 内置 Swa…

Java HashMap

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。 HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。 HashMap 是无序的&#x…

2023年天津理工大学中环信息学院专业课考试具体安排

天津理工大学中环信息学院2023年高职升本科专业课考试时间地点及防疫须知 一、考试时间地点 考试时间:2022年12月29日上午。 具体考试时间以准考证上显示的为准。 考生可提前半小时入场,考试开始(铃声)后,禁止入场&…

【python绘制地图——folium实用功能进阶】

Python使用folium制作地图并生成png图片 第一章 folium的方法和类的介绍(思维导图) 第二章 使用folium制作地图 第三章 folium实用功能进阶 第三章 使用Html2Image生成png图片 第四章 使用reportlab制作pdf报告 文章目录Python使用folium制作地图并生成…

基于C++实现对UNet图像分割的部署

本博文利用UNet介绍图像分割的部署,重点介绍采用warpaffine对图像进行预处理,以及后处理decode部分的代码。 1. Unet网络介绍 UNet它是一个encoder - decoder的结构,那么encoder对应就是这个u型网络左边这半部分,也就是我们特征提取及下采样这部分。decoder解码就是右边部…

华为机试_HJ41 称砝码【中等】【menset】【多重背包】【动态规划】【收藏】

目录 描述 输入描述: 输出描述: 解题过程 提交代码 学习代码 代码一 动态规划 代码二 代码三 收藏点 1. menset函数 2. 动态规划-多重背包问题 描述 现有n种砝码,重量互不相等,分别为 m1,m2,m3…mn ; 每种…

【程序人生】我填写《2022年国内软件质量调查问卷》的感想

1、前言 说一下为啥会参加这个问卷,其实初衷是本着自身感受,和希望能学习到更好的软件质量方案去填写的。所以,最后也是建议本次问卷的内容,能够提供更多切实可行的提高软件质量的实践方案。 2、参与问卷后的所思所想 2.1 经历过…

nginx 解决跨域问题——(CORS)

跨域前世今生 跨域是一种安全机制。 在开发阶段与上线前就必须提前考虑到的安全问题并且采取合适的手段去避免这个问题带来的程序错误。 ![aHR0cDovL2ZpbGUubWljcm9hbnN3ZXIuY24vYmxvZ181M18xLnBuZw.png](https://img-blog.csdnimg.cn/img_convert/1803660cf39d7222197f9bd7ae…

电磁场的变化方式 工程电磁场 P27

小小纪念一下 我们要注意 我们不研究瞬态过程,只关心稳态过程 瞬态过程的长短取决于电路的结构还有伏安特性,只要我们的激励是周期的,如果是一个周期性的信号,可以分解成一系列的正弦分量,对于我们的电磁场也一样 如…

嵌入式学习之Linux驱动:IO模型(1)概览

文章目录什么是IO呢?IO执行过程IO模型引入IO模型的种类阻塞IO非阻塞IOIO多路复用信号驱动IO异步IO什么是IO呢? IO的英文全称是input和output,翻译过来就是输入和输出。 在冯诺依曼结构中,将计算机分成为5个部分:运算器…

太阳能电池板自动清洗机器人的制作分享

本文素材来源于宁夏大学 作者:李伟荣、李学辉、金茹芳、沙小平 指导老师:康彩、张冬 一、执行总结 1.1项目概述 在“十三五”发展的大形势下,由于现在国家大力发展清洁能源,而太阳能发电受到了很大重视,但是目前并没…

Cartesian product

In mathematics, specifically set theory, the Cartesian product of two sets A and B, denoted A  B, is the set of all ordered pairs (a, b) where a is in A and b is in B.[1] In terms of set-builder notation, that is {\displaystyle A\times B{(a,b)\mid a\in …

线性模型-优化方法及推导过程

本文包含大量不严谨的公式写法,只是推式子时候打草记录一下… 线性模型(Linear Model)是机器学习中应用最广泛的模型,指通过样本特征的线性组合来进行预测的模型。给定一个DDD维的样本特征的线性组合来进行预测的模型,给定一个DDD维样本x[x1,…

接口自动化测试(Python+Requests+Unittest)

(1)接口自动化测试的意义、前后端分离思想 接口自动化测试的优缺点: 优点: 测试复用性。 维护成本相对UI自动化低一些。 为什么UI自动化维护成本更高? 因为前端页面变化太快,而且UI自动化比较耗时(比如等待页面元素的…

回眸 2022,展望 2023

回眸 2022,展望 2023 回眸 2022 先进行回眸吧!2022 感觉过得太快了,就好像昨天刚刚过年一样!但是时间不会欺骗任何人,过了多久就是多久!它不会管你是因为什么而耽误,也不会管你是因为什么而荒…