FFmpeg 是 Linux 系统生态中功能极为全面的多媒体处理工具,几乎能应对所有与音视频相关的操作:从简单的播放、信息提取,到复杂的编辑、格式转换、字幕烧录,甚至屏幕录制。它完全免费、开源、跨平台,且在大多数主流发行版(如 Ubuntu、Fedora、Arch)的官方软件仓库中可直接安装。
在 Ubuntu 或 Debian 系系统上,安装命令非常简单:
sudo apt update && sudo apt install ffmpeg

对于 Fedora 用户:
sudo dnf install ffmpeg
Arch 用户则使用:
sudo pacman -S ffmpeg
安装完成后,直接在终端中即可调用。下面分享 10 个实用且高频的技巧,每个都配有具体的命令和场景解释,熟练掌握后,许多图形化音视频软件或许就不再是必需品了。
1. 快速播放视频
当你想快速预览一个视频文件,而不愿启动庞大的图形界面播放器时,FFmpeg 自带的 ffplay 工具是绝佳选择。
基本播放命令:
ffplay input.mp4
如需循环播放(0 代表无限循环):
ffplay -loop 0 input.mp4
其快捷键直观易用:空格键暂停/播放、q 键退出、左右方向键快进/快退、上下方向键调节音量。这在服务器环境或资源有限的桌面场景下特别实用,因为它的资源占用极低。

2. 获取媒体详细信息
需要了解视频的编码格式、分辨率、比特率、帧率、时长或音频轨道信息吗?不必依赖 Mediainfo 或 VLC,使用 ffprobe 即可。
快速查看概要信息:
ffmpeg -i input.mp4

获取更详细的流信息:
ffprobe -show_streams -i input.mp4

输出为 JSON 格式,便于脚本解析:
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4

这些信息对于后续的转码、剪辑等操作至关重要,能有效避免潜在的兼容性问题。
3. 终端录屏
虽然 Linux 下有 Kazam、SimpleScreenRecorder 等录屏工具,但 FFmpeg 以其零依赖和高度可定制的参数成为另一个强力选择。
录制全屏 10 秒(适用于 X11 环境):
ffmpeg -f x11grab -video_size 1920x1080 -r 30 -i :0.0+0,0 -t 10 output.mp4
同时录制系统音频(使用 PulseAudio):
ffmpeg -f x11grab -video_size 1920x1080 -r 30 -i :0.0+0,0 -f pulse -i default -t 10 output.mp4
注意:Wayland 用户使用上述命令可能会遇到黑屏问题,建议临时切换到 Xorg 会话,或探索基于 PipeWire 的抓取方案。
你可以通过以下命令查询当前屏幕的精确尺寸:
xdpyinfo | grep dimensions
FFmpeg 录屏的优势在于无水印、无广告,且帧率、比特率等参数可自由调节,非常适合快速制作教程或复现 Bug。
4. 从视频提取帧图
需要从视频中每秒抽取一张图片制作预览图集?
ffmpeg -i input.mp4 -r 1 frame_%04d.jpg


其中,-r 1 表示每秒提取 1 帧,%04d 会使序号自动填充为 4 位数字(例如 0001、0002)。
如果只想抽取特定时间点的一帧(例如 1分23秒处):
ffmpeg -i input.mp4 -ss 00:01:23 -frames:v 1 thumbnail.jpg
这个技巧常用于生成视频封面或进行关键帧分析。
5. 图片序列转视频
反过来,将一系列按顺序命名的图片(如 img001.jpg、img002.jpg)合成为视频:
ffmpeg -framerate 1 -i frame%03d.jpg -c:v libx264 -r 30 -pix_fmt yuv420p slideshow.mp4
-framerate 1 表示输入图片的速率为每秒 1 张,而输出视频的帧率 -r 30 使其播放更流畅。
为幻灯片视频添加背景音乐,并以较短的输入(图片或音频)为准结束:
ffmpeg -framerate 1 -i img%03d.jpg -i bgm.mp3 -c:v libx264 -r 30 -shortest -pix_fmt yuv420p output.mp4
此方法常用于制作照片回顾、产品展示或科学数据可视化视频。
6. 视频转 MP3 / GIF
提取视频中的音频并转换为 MP3 格式(-vn 参数用于丢弃视频流):
ffmpeg -i input.mp4 -vn -acodec libmp3lame -q:a 2 output.mp3
-q:a 2 指定音频质量等级(0 最高,9 最低),通常 0 到 5 之间的值能取得不错的效果。
将视频转换为 GIF(简单转换,文件可能较大):
ffmpeg -i input.mp4 output.gif
截取视频特定片段并转换为高质量 GIF(从第30秒开始,持续5秒):
ffmpeg -ss 30 -t 5 -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos" -c:v gif output.gif
添加 fps(帧率)和 scale(缩放)滤镜可以显著减小 GIF 文件体积,同时保持良好的视觉效果。
7. 硬字幕 / 软字幕
硬字幕(永久烧录到视频画面中,无法关闭):
ffmpeg -i input.mp4 -vf subtitles=subtitle.srt output.mp4
软字幕(作为独立轨道嵌入,播放时可开关,推荐使用):
ffmpeg -i input.mp4 -i subtitle.srt -c copy -c:s mov_text output.mp4
如果遇到字幕乱码,可以尝试指定字幕编码,例如 -sub_charenc GBK 或 -sub_charenc UTF-8。
8. 修复损坏视频索引
遇到视频播放卡顿、无法拖拽进度条的情况,通常是视频文件的索引(moov atom)损坏。可以尝试重新封装来修复:
ffmpeg -i damaged.mp4 -c copy -copyts fixed.mp4
-c copy 表示进行流复制而非重新编码,因此处理速度极快且画质无损,仅重构容器结构。
9. 视频缩放 / 改变分辨率
将视频缩放至 720p 分辨率:
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4


保持原始宽高比,仅指定宽度(高度自动计算,-2 确保结果为偶数以满足编码器要求):
ffmpeg -i input.mp4 -vf scale=640:-2 output.mp4
10. 剪切与裁剪视频
精准剪切(截取 10 秒到 30 秒的内容,使用流复制避免重编码):
ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:30 -c copy trimmed.mp4

画面裁剪(去除黑边,从画面左上角(0,0)开始,裁出 640x480 的区域):
ffmpeg -i input.mp4 -vf "crop=640:480:0:0" cropped.mp4
crop 滤镜的参数格式为:宽度:高度:起始x坐标:起始y坐标。
将这些技巧组合使用,能发挥巨大威力。例如,一个典型的处理流水线可以是:先用 ffprobe 分析视频 -> 裁剪黑边 -> 缩放分辨率 -> 添加字幕 -> 最后转换为 GIF,一站式完成短视频素材的处理。
FFmpeg 的滤镜系统(-vf 用于视频,-af 用于音频)功能异常强大,结合官方文档和社区示例,几乎能实现你能想到的任何效果。建议将常用的复杂命令设置为 alias(别名)或写成 Shell 脚本,可以极大提升日常运维和媒体处理工作的效率。