跳到主要内容

FFmpeg 实用指令

FFmpeg 被誉为多媒体处理领域的“瑞士军刀”。无论是短视频制作、格式转换还是批量压制,掌握几个核心指令就能极大提高效率。本文不仅为你整理了最常用的基础指令,还特别加入了 NVIDIA 显卡Intel 核显 的硬件加速方案,帮你彻底榨干电脑性能!


一、 基础语法结构

在使用指令前,先了解其基本逻辑: ffmpeg [全局参数] -i [输入文件] [参数调整] [输出文件]

注意-i 之前的参数作用于输入文件(例如硬件解码),之后的参数作用于输出文件(例如编码器、分辨率调整)。


二、 常用指令详解

1. 基础转换与信息查询

  • 查看媒体信息

    ffmpeg -i input.mp4 -hide_banner
    • 详细解析-hide_banner 用于隐藏 FFmpeg 软件自身的编译版本等冗长信息,只显示视频的分辨率、编码格式、比特率和帧率等核心数据。
  • 万能格式转换 (CPU与GPU加速版)

    • 纯 CPU 处理(默认,通用性最强)
      ffmpeg -i input.mov output.mp4
    • NVIDIA 显卡加速 (NVENC)
      ffmpeg -i input.mov -c:v h264_nvenc output.mp4
    • Intel 核显加速 (QSV)
      ffmpeg -i input.mov -c:v h264_qsv output.mp4
    • 详细解析:默认情况下 FFmpeg 会使用 CPU 进行计算,耗时较长。通过加上 -c:v h264_nvenc-c:v h264_qsv,可以调用显卡的专用媒体引擎来编码,速度通常能提升 3-10 倍。

2. 视频剪辑与画面处理

  • 无损快速剪切

    ffmpeg -ss 00:00:10 -t 00:00:30 -i input.mp4 -c copy output.mp4
    • 详细解析
      • -ss:起始时间(时:分:秒)。
      • -t:持续时长(此处为剪取 30 秒)。
      • -c copy核心参数。表示直接流拷贝(不重新编码)。因为不需要重新编码,所以此命令无论在什么硬件下都是瞬间完成,且画质 100% 无损。
  • 改变视频分辨率(缩放)

    ffmpeg -i input.mp4 -vf "scale=1280:720" output.mp4
    • 详细解析-vf 是视频滤镜参数。scale=1280:720 将视频强制调整为 720P。如果想等比例缩放,可以写成 scale=720:-1(高度自适应)或 scale=-1:720(宽度自适应)。
    • 注:加上缩放滤镜后视频必须重新编码,建议结合上方提到的 NVIDIA/Intel 硬件编码器一起使用。

3. 音视频提取与合成

  • 提取纯音频

    ffmpeg -i input.mp4 -vn -q:a 0 -map a output.mp3
    • 详细解析
      • -vn:禁用视频流(Video None)。
      • -q:a 0:代表输出最高质量的动态码率音频。
  • 静音视频(移除音轨)

    ffmpeg -i input.mp4 -an -c:v copy output.mp4
    • 详细解析-an 表示禁用音频流(Audio None)。配合 -c:v copy(视频流直拷),可以一秒生成一个无声视频。

4. 进阶应用(高质量压制与 GIF 制作)

  • 视频转高品质 GIF

    ffmpeg -i input.mp4 -t 5 -r 15 -vf "scale=480:-1" output.gif
    • 详细解析
      • -r 15:强制输出帧率为 15 帧/秒,防止生成的 GIF 文件体积过大。
      • scale=480:-1:将画面宽度限制为 480 像素,高度自适应。
  • 视频压制(压缩体积,不同硬件的质量控制) 视频压制不仅要小,还要清晰。不同硬件控制画质的参数有所区别:

    • 方案 A:CPU 极致压制 (H.264)

      ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4
      • 解析-crf 为恒定质量因子(范围 0-51,数值越大质量越低、体积越小)。18-28 是常见范围。CPU 压制速度最慢,但在同等低码率下画质最好。
    • 方案 B:NVIDIA 显卡压制 (NVENC)

      ffmpeg -i input.mp4 -c:v h264_nvenc -preset p6 -cq 28 output.mp4
      • 解析:NVIDIA 硬件编码不使用 -crf,而是使用 -cq(Constant Quality 控制)。-preset p6 表示使用高质量预设(范围 p1-p7,p7 质量最高但较慢)。
    • 方案 C:Intel 核显压制 (QSV)

      ffmpeg -i input.mp4 -c:v h264_qsv -preset veryslow -global_quality 23 output.mp4
      • 解析:Intel QSV 使用 -global_quality 来控制 VBR 的画质,数值逻辑与 -crf 类似。-preset veryslow 让核显在压制时尽可能保留更多细节。

三、 小贴士

  1. 覆盖输出:在命令开头加入 -y(例如 ffmpeg -y -i ...)可以强制覆盖已存在的同名输出文件,省去手动确认的麻烦。
  2. H.265 (HEVC) 编码:如果想要更小的体积,可以将上述指令中的 libx264 替换为 libx265,或者将 h264_nvenc/qsv 替换为 hevc_nvenc/qsv,能在同等画质下缩小约一半的体积(但设备兼容性会稍弱于 H.264)。
  3. 官方文档:更多高级滤镜与封装格式可参考 FFmpeg 官方文档