Ubuntu22.04编译安装FFmpeg

news/2024/7/10 20:57:33 标签: ffmpeg, java, 开发语言

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.niftyadmin.cn/n/468295.html

相关文章

2023全国滋补健康产业创新发展交流会八月相聚上海

简介:2023全国滋补健康产业创新发展交流会,愉极2023年“优秀滋补品牌商”精英班&鲜炖鱼胶师培训考核班 愉极&燕博会 2023年“优秀滋补品牌商”精英班&鲜炖鱼胶师培训考核班 前言 在国家提倡全民养生,国民健康意识增强&#xf…

西门子变频器G120XA的快速调试方法分享

以西门子变频器G120XA为例,接着为大家介绍一下G120X和G120XA系列变频器的快速调试方法。 西门子发布的Sinamics G120X和G120XA系列变频器,专为风机和泵的应用而设计,实现高效节能、可靠稳定和简单易用。以G120XA为例,通过下面的调…

RocketMQ 常见面试题(四)

RocketMQTemplate 常用方法以及介绍 RocketMQTemplate是SpringBoot整合RocketMQ的核心类,它封装了RocketMQ的Java SDK,提供了一系列方便的方法用于发送消息。常用的方法如下: 同步发送消息:SendResult syncSend(String destinati…

Apikit 自学日记:导入、导出文档

一、导入API文档 功能入口:API管理应用 / 选中某个项目 / API文档菜单 / 点击“ API”按钮旁的下拉按钮 / 选中“导入API” Eolink提供一键导入已有API文档的功能,支持多种产品格式。常用于新项目创建后,需要对旧项目或旧软件内数据进行迁移…

fastAPI的form-data类型,以及...` 用于指定值是必填的,并充当默认值,如果省略了这个参数,`body` 中缺少此参数,则会引发验证错误

如果您正在使用 Python 3.8,可以使用 type hinting 的标准语法来进行类型注释。Form() 类型仍然可用,但需要从 fastapi 模块中导入。在这种情况下,上面的代码可以修改为以下方式: from fastapi import FastAPI, Formapp FastAPI…

【真题解析】系统集成项目管理工程师 2021 年上半年真题卷(综合知识)

本文为系统集成项目管理工程师考试(软考) 2021 年上半年真题(全国卷),包含答案与详细解析。考试共分为两科,成绩均 ≥45 即可通过考试: 综合知识(选择题 75 道,75分)案例分析(问答题 4 道,75分)综合知识(选择题*75)1-10 题11-20 题21-30 题31-40 题41-50 题51-60 …

【AUTOSAR】CCP协议的代码分析与解读(二)----CCP协议格式和命令代码

CCP协议介绍 CCP的全称是CAN Calibration Protocol (CAN标定协议),是基于CAN总线的ECU标定协议规范。CCP协议遵从CAN2.0通信规范,支持11位标准与29位扩展标识符。 CCP通信方式 CCP协议采用主从通信方式,如上图所示,其中从设备是…

JavaScript知识点DOM 模型详细讲解

DOM 模型 DOM 全称是 Document Object Model 文档对象模型 大白话,就是把文档中的标签,属性,文本,转换成为对象来管理。 Document 对象 Document对象的理解: ​ 第一点:Document 它管理了所有的 HTML 文…