找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2831

积分

0

好友

379

主题
发表于 1 小时前 | 查看: 2| 回复: 0

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

在 Ubuntu 或 Debian 系系统上,安装命令非常简单:

sudo apt update && sudo apt install ffmpeg

Ubuntu系统安装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 键退出、左右方向键快进/快退、上下方向键调节音量。这在服务器环境或资源有限的桌面场景下特别实用,因为它的资源占用极低。

ffplay播放视频界面截图

2. 获取媒体详细信息

需要了解视频的编码格式、分辨率、比特率、帧率、时长或音频轨道信息吗?不必依赖 Mediainfo 或 VLC,使用 ffprobe 即可。

快速查看概要信息:

ffmpeg -i input.mp4

ffmpeg -i 命令输出视频元信息

获取更详细的流信息:

ffprobe -show_streams -i input.mp4

ffprobe命令输出详细流信息

输出为 JSON 格式,便于脚本解析:

ffprobe -v quiet -print_format json -show_format -show_streams input.mp4

ffprobe以JSON格式输出媒体信息

这些信息对于后续的转码、剪辑等操作至关重要,能有效避免潜在的兼容性问题。

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.jpgimg002.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 脚本,可以极大提升日常运维和媒体处理工作的效率。




上一篇:广州游戏公司求职指南:盘点2026年值得关注的10家厂商
下一篇:macOS菜单栏管理神器Ice:3M大小实现图标分区、动态隐藏与高效整理
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-30 06:36 , Processed in 0.581434 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表