CentOS FFmpeg 使用指南
FFmpeg 是一个功能强大、开源的命令行工具和库集合,用于处理各种多媒体数据。它能够解码、编码、转码、复用、解复用、流式传输、过滤以及播放几乎所有媒体文件。对于在 CentOS 系统上进行音视频处理的用户来说,FFmpeg 是一个不可或缺的工具。
本指南将详细介绍如何在 CentOS 系统上安装 FFmpeg,并提供一些常见的用法示例。
一、先决条件
在开始安装之前,请确保您拥有 root 权限或具有 sudo 权限的用户账户。
二、FFmpeg 安装
由于 FFmpeg 不包含在 CentOS 的官方仓库中,因此需要从第三方仓库安装或从源代码编译。最常用且推荐的方法是通过启用 EPEL 和 RPM Fusion 仓库进行安装。安装步骤会根据您的 CentOS 版本(CentOS 7 或 CentOS 8/9 Stream)略有不同。
1. 更新系统包
在安装新软件之前,建议更新系统包以确保所有组件都是最新的。
- 对于 CentOS 7 (使用
yum):
bash
sudo yum update -y - 对于 CentOS 8/9 Stream (使用
dnf):
bash
sudo dnf update -y
2. 安装 EPEL (Extra Packages for Enterprise Linux) 仓库
RPM Fusion 仓库(包含 FFmpeg)依赖于 EPEL 仓库。
- 对于 CentOS 7:
bash
sudo yum install epel-release -y - 对于 CentOS 8/9 Stream:
bash
sudo dnf install epel-release -y
3. 安装 RPM Fusion 仓库
这个仓库提供了 FFmpeg 包。为了更广泛的编解码器支持,建议同时启用 free 和 non-free 仓库。
- 对于 CentOS 7:
bash
sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm -y
sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm -y - 对于 CentOS 8/9 Stream:
bash
sudo dnf install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm -y
sudo dnf install https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-$(rpm -E %rhel).noarch.rpm -y
4. 安装 FFmpeg 和开发包
ffmpeg-devel 包包含了开发库,如果您计划编译其他依赖 FFmpeg 的软件,这将非常有用。
- 对于 CentOS 7:
bash
sudo yum install ffmpeg ffmpeg-devel -y - 对于 CentOS 8/9 Stream:
bash
sudo dnf install ffmpeg ffmpeg-devel -y
5. 验证安装
通过检查 FFmpeg 版本来确认安装是否成功。
bash
ffmpeg -version
您还可以使用 ffmpeg -codecs 命令查看所有可用的编解码器。
三、基本配置 (可选)
通过包管理器安装的 FFmpeg 通常可以直接使用,无需额外的配置文件。FFmpeg 的行为主要通过命令行选项来控制。
如果您的需求超出默认安装所提供的功能(例如需要特定的编码器或高级特性),您可以考虑从源代码编译 FFmpeg。FFmpeg 官方 Wiki 提供了详细的 CentOS 编译指南,允许您进行本地安装并支持各种外部编码库。
四、FFmpeg 使用示例
FFmpeg 是一个功能极其丰富的工具。以下是一些常见的用法示例:
通用命令结构:
ffmpeg [全局选项] {[输入文件选项] -i 输入文件路径} ... {[输出文件选项] 输出文件路径} ...
-
视频格式转换:
将input.mp4转换为output.avi。此命令会重新编码视频和音频流。
bash
ffmpeg -i input.mp4 output.avi -
从视频中提取音频:
从input.mp4中提取音频并保存为output.mp3。-vn选项禁用视频流。
bash
ffmpeg -i input.mp4 -vn output.mp3 -
调整视频大小:
将input.mp4的分辨率调整为 1280×720。
bash
ffmpeg -i input.mp4 -vf scale=1280:720 output_1280x720.mp4
为了保持宽高比,您可以将其中一个维度设置为 -1,例如scale=-1:720表示高度为 720 像素,宽度自动调整。 -
视频压缩 (使用恒定速率因子 – CRF):
使用 CRF 28 压缩input.mp4。CRF 值通常在 0 到 51 之间,值越低质量越高(文件越大)。对于 H.264 编码,23 是一个很好的起始点。
bash
ffmpeg -i input.mp4 -crf 28 output_compressed.mp4 -
从视频中提取帧(图片):
每秒从input.mp4中提取一帧 (-r 1),并保存为image-001.png、image-002.png等。-q:v 2设置输出图片的质量。
bash
ffmpeg -i input.mp4 -r 1 -q:v 2 image-%03d.png -
合并多个视频文件:
首先,创建一个文本文件(例如mylist.txt),列出要合并的视频文件路径:
file 'input1.mp4'
file 'input2.mp4'
file 'input3.mp4'
然后运行以下命令。-c copy选项避免了重新编码,从而加快了处理速度。
bash
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output_concatenated.mp4 -
加速或减慢视频:
将视频速度加倍:
bash
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output_fast.mp4
将视频速度减半:
bash
ffmpeg -i input.mp4 -vf "setpts=2.0*PTS" output_slow.mp4 -
为视频添加字幕:
将subtitles.srt字幕文件添加到input.mp4。
bash
ffmpeg -i input.mp4 -vf "subtitles=subtitles.srt" output_with_subtitles.mp4
五、总结
FFmpeg 是一个功能极其强大的多媒体处理工具,本指南涵盖了在 CentOS 上安装 FFmpeg 的过程以及一些最常用的操作示例。通过掌握这些基础知识,您可以开始在 CentOS 系统上进行各种音视频处理任务。
要了解更多高级功能和详细选项,强烈建议查阅 FFmpeg 的官方文档。