FFmpeg
是用于转码多媒体文件的强大工具。它是一个开源 CLI 工具,可用于所有主要平台。该程序支持多种音视频库,包括libavformat
、libavutil
、libavcodec
等。FFmpeg
可以将音频和视频转换为不同的格式。格式、调整大小和配置采样率等等。
本指南将向您展示如何在 Ubuntu 20.04
中安装和使用 FFmpeg
。
在 Ubuntu 中安装 FFmpeg
在 Ubuntu
上安装 FFmpeg
有两种官方方法:从 Ubuntu 存储库 (v7.x)
和从 snap (v4.x)
。根据您的需要,您应该选择最适合您的方法。
也可以从源代码编译和安装 FFmpeg
。但是,此方法有点复杂,建议不要采用此方法,除非您有特定原因这样做。
从 Ubuntu Repo
安装 FFmpeg
这是安装 FFmpeg
的默认方法。您所要做的就是告诉 APT
从默认的 Ubuntu 软件存储库中获取并安装该程序。
启动终端,更新 APT 缓存,然后安装 FFmpeg。
$ sudo apt update
$ sudo apt install ffmpeg
我们来验证一下是否安装成功。首先,通过以下命令测试FFmpeg版本:
$ ffmpeg -v
不要忘记检查可用的编码器和解码器。通过输入以下命令来执行此操作:
$ ffmpeg -encoders
$ ffmpeg -decoders
从 snap
安装 FFmpeg
FFmpeg 还可以作为 snap 包使用。如果您没有配置 snap,那么您可以通过发出以下命令立即安装它:
$ sudo apt update && sudo apt install snapd -y
$ sudo snap install core core20 && sudo systemctl restart snapd
现在,您的系统应该已准备好从 Snapcraft
商店获取并安装 Snap
软件包。在 Snapcraft
上查看 FFmpeg
。
$ sudo snap install ffmpeg
输入以下命令来测试 FFmpeg 的安装:
$ ffmpeg -version
$ ffmpeg -encoders
$ ffmpeg -decoders
从源代码安装 FFmpeg
FFmpeg 是一个开源工具。因此可以从源代码手动构建该程序。仅当您愿意创建自定义构建、想要尝试最新版本或希望测试错误时才建议使用此方法。对于一般用途,请按照其他方法安装此程序。查看 Ubuntu
的官方 FFmpeg
编译指南。
从源代码构建 FFmpeg 需要多个依赖项。输入以下命令下载依赖项:
$ sudo apt update
$ sudo apt install \
$ autoconf \
$ automake \
$ build-essential \
$ cmake \
$ git-core \
$ libass-dev \
$ libfreetype6-dev \
$ libgnutls28-dev \
$ libsdl2-dev \
$ libtool \
$ libva-dev \
$ libvdpau-dev \
$ libvorbis-dev \
$ libxcb1-dev \
$ libxcb-shm0-dev \
$ libxcb-xfixes0-dev \
$ pkg-config \
$ texinfo \
$ wget \
$ yasm \
$ zlib1g-dev
现在,准备一个专门的目录来存放源代码和编译后的二进制文件。
$ mkdir -pv ~/ffmpeg_source ~/bin
现在是时候准备一些第三方库了。这些是 FFmpeg
最常用的。如果您不需要这些库中的一个或多个,请跳过相关部分并忽略关联的./configure
选项
- NASM:一些库依赖的汇编器。
$ sudo apt install nasm
- libx264:H.264 视频编码器。
$ sudo apt install -y libx264-dev
- libx265:H.265 视频编码器(也称为 HEVC)。
$ sudo apt install -y libx265-dev libnuma-dev
- libvpx:VP8/VP9 视频编码器/解码器。
$ sudo apt install -y libvpx-dev
- libfdk-aac:AAC 音频编码器。
$ sudo apt install -y libfdk-aac-dev
- libmp3lame:MP3 音频编码器。
$ sudo apt install libmp3lame-dev
- libopus:Opus 音频编码器/解码器。
$ sudo apt install libopus-dev
- libaom:
AV1
视频编码器/解码器。请注意,如果您要使用这个,编译可能会失败。根据FFmpeg
官方 wiki,这个包似乎还没有稳定的API
。建议避免这种情况。
$ sudo apt install -y libaom-dev
现在您已准备好开始从源代码构建 FFmpeg
。通过发出以下命令来获取源代码:
$ cd ~/ffmpeg_source
$ wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
$ tar -xvf ffmpeg-snapshot.tar.bz2
$ cd ffmpeg
更新PATH环境变量并运行配置脚本。
$ PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
$ --prefix="$HOME/ffmpeg_build" \
$ --pkg-config-flags="--static" \
$ --extra-cflags="-I$HOME/ffmpeg_build/include" \
$ --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
$ --extra-libs="-lpthread -lm" \
$ --bindir="$HOME/bin" \
$ --enable-gpl \
$ --enable-gnutls \
$ --enable-libaom \
$ --enable-libass \
$ --enable-libfdk-aac \
$ --enable-libfreetype \
$ --enable-libmp3lame \
$ --enable-libopus \
$ --enable-libvorbis \
$ --enable-libvpx \
$ --enable-libx264 \
$ --enable-libx265 \
$ --enable-nonfree
在此过程中,您可能会遇到错误“使用 pkg-config
找不到 gnutls
”。 ” 为了解决这个问题,系统中必须存在某个包。您可以通过发出以下命令来安装相关软件包并修复此错误
$ sudo apt install -y libunistring-dev
现在,再次运行配置脚本。
运行make命令开始编译FFmpeg
。使用“-j”
标志运行并行编译以加快进程。
$ PATH="$HOME/bin:$PATH" make -j4
现在,您可以通过以下命令安装刚刚从源构建的 FFmpeg 版本:
$ sudo make install
$ hash -r
重新加载 bash shell 以识别新的 FFmpeg 二进制位置
$ source ~/.profile
通过以下命令测试 FFmpeg 安装:
$ ffmpeg -version
$ ffmpeg -encoders
$ ffmpeg -decoders
使用 FFmpeg
按照上述步骤,您现在已经成功安装了 FFmpeg。是时候学习如何使用它了。本节将向您展示该工具的一些最常见用途。
首先,将视频文件从 MP4
转换为 WebM
格式。 FFmpeg
的美妙之处在于您不必指定输入和输出格式。 FFmpeg
将自动检测源和目标格式并采取相应措施。这里,“-hide_banner”
标志用于禁用 FFmpeg 在每次运行时报告的配置信息。$ ffmpeg -hide_banner -i <input> <output>
现在让我们看一下音频文件的转换。将 MP3 转换为 OGG。
$ ffmpeg -hide_banner -i demo.mp3 demo.ogg
转换文件时,还可以指定编解码器。使用“-c”标志,后跟任何支持的编码器/解码器的名称,或特殊值副本。例如,您可以使用 libvpx 视频编解码器和 libvorbis 音频编解码器将 MP4 转换为 WebM 格式。
$ ffmpeg -hide_banner -i demo.mp4 -c:v libvpx -c:a libvorbis demo.webm
类似地,也可以使用指定的编解码器来转换音频格式。例如,您可以使用 libopus 编解码器将 MP3 文件转换为 OGG。
$ ffmpeg -hide_banner -i demo.mp3 -c:a libopus demo.ogg
最后的想法
FFmpeg 是处理媒体文件的强大工具。有大量关于 FFmpeg 的各种功能及其用途的教程。请随意探索有关这个神奇工具的更多信息。获取几个演示媒体文件并用它们练习来掌握 FFmpeg。查看这个有趣的教程,了解如何将多个图像转换为视频文件。
想想你的文章写的特别好