CentOS FFmpeg使用指南 – wiki基地

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 输入文件路径} ... {[输出文件选项] 输出文件路径} ...

  1. 视频格式转换:
    input.mp4 转换为 output.avi。此命令会重新编码视频和音频流。
    bash
    ffmpeg -i input.mp4 output.avi

  2. 从视频中提取音频:
    input.mp4 中提取音频并保存为 output.mp3-vn 选项禁用视频流。
    bash
    ffmpeg -i input.mp4 -vn output.mp3

  3. 调整视频大小:
    input.mp4 的分辨率调整为 1280×720。
    bash
    ffmpeg -i input.mp4 -vf scale=1280:720 output_1280x720.mp4

    为了保持宽高比,您可以将其中一个维度设置为 -1,例如 scale=-1:720 表示高度为 720 像素,宽度自动调整。

  4. 视频压缩 (使用恒定速率因子 – CRF):
    使用 CRF 28 压缩 input.mp4。CRF 值通常在 0 到 51 之间,值越低质量越高(文件越大)。对于 H.264 编码,23 是一个很好的起始点。
    bash
    ffmpeg -i input.mp4 -crf 28 output_compressed.mp4

  5. 从视频中提取帧(图片):
    每秒从 input.mp4 中提取一帧 (-r 1),并保存为 image-001.pngimage-002.png 等。-q:v 2 设置输出图片的质量。
    bash
    ffmpeg -i input.mp4 -r 1 -q:v 2 image-%03d.png

  6. 合并多个视频文件:
    首先,创建一个文本文件(例如 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

  7. 加速或减慢视频:
    将视频速度加倍:
    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

  8. 为视频添加字幕:
    subtitles.srt 字幕文件添加到 input.mp4
    bash
    ffmpeg -i input.mp4 -vf "subtitles=subtitles.srt" output_with_subtitles.mp4

五、总结

FFmpeg 是一个功能极其强大的多媒体处理工具,本指南涵盖了在 CentOS 上安装 FFmpeg 的过程以及一些最常用的操作示例。通过掌握这些基础知识,您可以开始在 CentOS 系统上进行各种音视频处理任务。

要了解更多高级功能和详细选项,强烈建议查阅 FFmpeg 的官方文档。

滚动至顶部