Ubuntu22.04编译安装FFmpeg

news2024/11/23 4:53:21

FFmpeg介绍

概述

FFmpeg是一款用C语言编写的跨平台免费开源多媒体处理工具,该软件可实现音视频的采集、编解码、转码、过滤以及流媒体相关操作等功能。

同时,FFmpeg也为其他多种语言和操作系统提供了开发组件,包括Java、Python、C++等和Windows、Linux等,FFmpeg支持Windows、Max OS X和Linux等多种计算机操作系统,并且可以运行在移动设备和嵌入式系统上。

FFmpeg项目最初由Fabrice Bellard发起,后来得到了各个领域的贡献者的积极参与和完善。

FFmpeg中的“FF”指的是“Fast Forward”,意为快进。该名称取自电视机上的快进功能,表明 FFmpeg 向前推进、不断更新、不断进步的信念和决心。而"mpeg"指的则是"Moving Picture Experts Group",是一种数字视频压缩标准的名称。FFmpeg 是以 Mpeg 的编解码技术为基础,并在此基础上扩展了许多功能,如转码、格式转换、录制流媒体等。

音视频工具

FFmpeg是一个开源的音视频编解码器,拥有各种各样的功能和优势。音视频编解码是FFmpeg的核心模块之一。通过支持几乎所有主要的音视频编码标准和容器格式,使用FFmpeg可以方便地将一个输入的媒体文件转码成不同的格式或者对视频进行剪辑、压缩、缩放等操作。另外,该工具还支持性能优异的过滤器(如色彩空间、帧速率调整、降噪等滤镜),可以对视频做出更加精密的编辑和修剪操作。

主要功能

音视频编解码:FFmpeg可以对多种格式的音视频进行编解码并转换格式;支持转换音频格式例如MP3,WAV,FLAC等以及视频格式例如MP4,AVI等。

视频截图:FFmpeg可以方便地从视频中提取出一张图片。

视频剪辑和合并:FFmpeg可以将多个视频文件合并成一个或者将一个长视频剪辑为多个小片段。

视频滤镜和特效:FFmpeg支持各种类型的视频滤镜和特效,并且可以自己编写滤镜和特效。

流媒体处理:FFmpeg可以将音视频数据流推送到服务器或者从服务器拉取流媒体数据。

音视频录制:FFmpeg可以直接从摄像头或者麦克风录制音视频数据。

优势

跨平台:FFmpeg是跨平台的,可以在Windows、Linux、macOS等操作系统中运行。

高效性:FFmpeg是非常高效的,能够在短时间内对大型音视频文件进行处理。

支持几乎所有音视频格式:FFmpeg支持几乎所有音视频格式,包括但不限于MP3、MP4、AVI、WMV、FLV、MOV等。

稳定性:FFmpeg是非常稳定的,即使在处理大型文件时也不容易崩溃或出现错误。

开源自由:FFmpeg是开源软件,任何人都可以免费使用和修改它。

开发组件

FFmpeg 是一套用于处理多媒体数据的开源软件库,它可以实现很多音视频相关功能。其主要包括以下模块:

  1. libavcodec:音视频编解码核心模块。

  2. libavformat:音视频格式封装和解析模块。

  3. libswscale:图像格式转换模块。

  4. libavutil:公共工具类模块,包含了一些数据类型、数学函数等。

  5. libpostproc:后期处理库,包含视频去隔行、去噪点等过滤器

除此以外,FFmpeg 还有其他一些模块如下:

  1. libswresample:音频重采样模块。

  2. libavfilter:音视频过滤器模块。

  3. libavdevice:硬件设备输入输出模块。

总的来说,由于其跨平台性、文档和教程丰富以及支持广泛,FFmpeg已成为音视频行业中的基础开发工具之一,被广泛应用于媒体文件处理、品牌化和在线播放等领域。

下载

方法1,官网下载

Download FFmpeg

 方法2,git拉仓库源码

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg

编译和安装

安装依赖

安装依赖项(暂时还不清楚这个指令是哪里来的)

sudo apt-get update && sudo apt-get -y install \
  autoconf \
  automake \
  build-essential \
  cmake \
  git-core \
  libass-dev \
  libfreetype6-dev \
  libgnutls28-dev \
  libmp3lame-dev \
  libsdl2-dev \
  libtool \
  libva-dev \
  libvdpau-dev \
  libvorbis-dev \
  libxcb1-dev \
  libxcb-shm0-dev \
  libxcb-xfixes0-dev \
  meson \
  ninja-build \
  pkg-config \
  texinfo \
  wget \
  yasm \
  zlib1g-dev \
  libunistring-dev

编译配置

#仅配置路径
./configure --enable-shared  --prefix=/usr/local/ffmpeg

#配置某些选项
./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --disable-doc  --enable-gpl --enable-libx264

#配置项查看
./configure --help

安装

make
sudo make install

建立软链接

FFmpeg编译完成后,生成了ffmpeg、ffplay、ffprobe3个可执行程序。

ffmpeg 是用于处理视频和音频文件的命令行工具。它可以合并多个音频/视频流、剪辑、转换格式、调整大小等功能。

ffplay 是一个基于 FFmpeg 库的简单媒体播放器。它支持大多数音频和视频格式,并且可以根据需要进行实时解码和播放。

ffprobe 用于分析媒体文件及其详细信息的多媒体分析工具,旨在提供有关媒体文件内容的详细信息,包括编解码器的详细信息、容器信息等。它是通过 FFmpeg 库调用实现的。

sudo ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/bin/ffmpeg
sudo ln -s /usr/local/ffmpeg/bin/ffprobe /usr/bin/ffprobe
sudo ln -s /usr/local/ffmpeg/bin/ffplay /usr/bin/ffplay

工具路径添加到环境变量

方便使用工具。直接在任意路径下,都可以输入工具名称并执行指令。

#打开.bashrc文件
sudo gedit ~/.bashrc
 
#在文件中添加
export PATH="/usr/local/ffmpeg/bin:$PATH"
 
#使修改生效
source ~/.bashrc

动态库配置到环境变量

方便动态库的使用。开发生成的应用程序可自动查找依赖库。

sudo vi /etc/ld.so.conf
在其中添加路径:/usr/local/ffmpeg/lib

sudo ldconfig#更新环境变量

查看版本

ffmpeg -version

参考:

【ubuntu安装ffmpeg】_weixin_44392845的博客-CSDN博客

Ubuntu上安装ffmpeg_ffmpeg install ubuntu_TracelessLe的博客-CSDN博客

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

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

相关文章

【吴恩达deeplearning.ai】基于LangChain开发大语言应用模型(下)

以下内容均整理来自deeplearning.ai的同名课程 Location 课程访问地址 DLAI - Learning Platform Beta (deeplearning.ai) LangChain for LLM Application Development 基于LangChain开发大语言应用模型(上) 一、LangChain: Q&A over Documents基于文…

SpringMVC原理分析 | Controller配置、RestFul风格

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Controller配置 控制器Controller 控制器复杂提供访问应用程序的行为,通常通过接口定义或注释定义的两种方法实现控制器负责解析用户的请求并将其转换为一…

ModaHub AI模型开源社区——Milvus向量数据库存储相关概念

目录 存储相关概念 分区和数据段 数据段(segment) 分区(partition) 集合、分区和数据段的关系 元数据 常见问题 存储相关概念 分区和数据段 建立集合时,Milvus 根据参数 index_file_size 控制数据段的大小。另…

R+VIC 模型融合实践技术应用及未来气候变化模型预测

目前,无论是工程实践或是科学研究中都存在很多著名的水文模型如SWAT/HSPF/HEC-HMS等。虽然,这些软件有各自的优点;但是,由于适用的尺度主要的是中小流域,所以在预测气候变化对水文过程影响等方面都有所不足。 VIC模型…

“未来之光:揭秘创新科技下的挂灯魅力“

写在前面: 高度信息化当下时代,对电脑及数字设备的需求与日俱增无处不在,随之而来的视觉疲劳和眼睛问题也攀升到了前所未有的高度。传统台灯对于长时间使用电脑的人群来说是完全无法解决这些问题的。一款ScreenBar Halo 屏幕挂灯,…

【Java】Java核心要点总结 71:ThreadPoolExecutor

文章目录 1)为什么需要线程池?2)线程池内部怎么保证线程安全?3)创建线程的方式 newSingleThreadExecutor底层4) ThreadPoolExecutor参数使用5) 线程池的工作机制6)拒绝策略分四种7)队列有哪些? 参考: 1)为什么需要线程池? 重复利…

设计模式之备忘录模式笔记

设计模式之备忘录模式笔记 说明Memento(备忘录)目录白箱备忘录模式备忘录模式示例类图游戏角色类备忘录角色类备忘录对象管理对象测试类 黑箱备忘录模式备忘录模式示例类图备忘录接口游戏角色类备忘录对象管理对象测试类 说明 记录下学习设计模式-备忘录模式的写法。JDK使用版…

JDBC小记——连接池

目录 连接池介绍 常用连接池 DBCP连接池 硬编码方式 配置文件方式 C3P0连接池 C3P0和DBCP的区别 硬编码方式 配置文件方式 Druid连接池 硬编码方式 配置文件方式 DBUtils 连接池介绍 由于建立数据库连接是一种非常耗时、耗资源的行为,所以预先通过连接…

在vite+vue3项目中配置使用css预处理器(less/sass)以及路径别名

一、在vite项目中使用css预处理器 vite已经将这些预处理器的loader内置了,我们不用再像在webpack项目中那样,需要下载和配置一堆相关的loader,我们只需要下载less,sass依赖,就能直接在项目中使用啦 使用npm或者yarn来…

Springboot-- 注解字段校验,并统一设置返回值

Springboot-- 注解字段校验&#xff0c;并统一设置返回值 引包&#xff1a;import org.springframework.validation.annotation.Validated; <!--web--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-star…

配置鼠标右键菜单功能 :一键csv转excel

配置右键菜单功能 &#xff1a;一键csv转excel 无需点开文件&#xff0c;双击即可以生成新的excel文件 步骤&#xff1a; 1、配置Python&#xff0c;安装依赖库 pip install openpyxl pip install pandas2、创建Python文件 csv_to_excel.py # -*- coding:utf-8 -*- impor…

【计算机组成原理】函数栈帧

目录 一、源代码理论分析 二、主函数的创建 三、c语言代码的汇编 注&#xff1a;不同编译器环境的函数栈帧存在一定差异&#xff0c;本文使用VS2019 一、源代码理论分析 源代码&#xff1a; int Add(int x, int y) {int z 0;z x y;return z; }int main() {int a 10;…

u盘安装centos 7

1.下载 通过阿里云站点&#xff1a;http://mirrors.aliyun.com/centos/7/isos/x86_64/&#xff0c;下载iso文件。 2.制作启动u盘镜像 2.1 下载制作工具 下载u启动 http://uqidong.als98.cn/ 。 2.2 制作镜像 准备u盘&#xff0c;插入机器&#xff0c;运行u启动。 注意…

机器学习之基于PCA的人脸识别

目录 PCA人脸数据降维 matlab代码实现 思路分析 PCA人脸重构 matlab代码实现 思路分析 PCA人脸可视化 matlab代码实现 思路分析&#xff1a; PCA人脸识别 matlab代码实现 思路分析 PCA人脸数据降维 matlab代码实现 picturesdir(C:\Users\Yezi\Desktop\机…

数字逻辑与模拟电子技术-部分知识点(2)——模电部分-半导体三极管、基本线性运放电路、正弦波振荡电路

目录 半导体三极管 三极管的放大的条件 基本放大电路计算 基本线性运放电路 同相放大电路 反相放大电路 加法器放大电路 正弦波振荡电路 正弦波振荡的条件 半导体三极管 三极管的放大的条件 主要是依靠它的发射极电流能够通过基区传输&#xff0c;然后到达集电极而实现…

【KMP算法】时间复杂度O(N)的字符串匹配算法

目录 案例&#xff1a;假定我们给出字符串 ”ababcabcdabcde”作为主串&#xff0c; 然后给出子串&#xff1a; ”abcd”,现在我们需要查找子串是否在主串中 出现&#xff0c;出现返回主串中的第一个匹配的下标&#xff0c;失败返回-1 ; 1.BF算法&#xff08;暴力算法&#x…

java8新特性之--强大的Stream API详细讲解

强大的Stream API Stream API说明 Java8中有两大最为重要的改变。第一个是 Lambda 表达式&#xff1b;另外一个则 是 Stream API。Stream API ( java.util.stream) 把真正的函数式编程风格引入到Java中。 这是目前为止对Java类库最好的补充&#xff0c;因为Stream API可以极…

CVPR 23 | 高分辨率缺陷异常定位新范式:PyramidFlow

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/abs/2303.02595 论文代码&#xff1a;暂未发布 0. 背景 由于复杂的工业制造过程中的不可控因素&#xff0c;不可避免地会给产品带来不可预见的缺陷。由于人类视觉系…

使用亮数据Bright Data解决出境电商问题

目录 一、出境电商的困境和问题1、困境一&#xff1a;获取准确的市场数据&#xff08;1&#xff09;数据的时效性和可靠性&#xff08;2&#xff09;数据的全面性和多样性&#xff08;3&#xff09;数据的实时更新和持续监测 2、困境二&#xff1a;克服地域限制和语言障碍&…

scratch数星星 2023年5月中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析

目录 scratch数星星 一、题目要求 1、准备工作 2、功能实现 二、案例分析