Ubuntu22.04编译安装FFmpeg
FFmpeg基础功能的介绍及其下载、编译和安装
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 是一套用于处理多媒体数据的开源软件库,它可以实现很多音视频相关功能。其主要包括以下模块:
-
libavcodec:音视频编解码核心模块。
-
libavformat:音视频格式封装和解析模块。
-
libswscale:图像格式转换模块。
-
libavutil:公共工具类模块,包含了一些数据类型、数学函数等。
-
libpostproc:后期处理库,包含视频去隔行、去噪点等过滤器
除此以外,FFmpeg 还有其他一些模块如下:
-
libswresample:音频重采样模块。
-
libavfilter:音视频过滤器模块。
-
libavdevice:硬件设备输入输出模块。
总的来说,由于其跨平台性、文档和教程丰富以及支持广泛,FFmpeg已成为音视频行业中的基础开发工具之一,被广泛应用于媒体文件处理、品牌化和在线播放等领域。
下载
方法1,官网下载
方法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
参考:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)