☰
首页
/
FFmpeg命令行使用教程
目录
FFmpeg命令行使用教程
FFmpeg 完全使用教程
目录
1. 基础入门
1.1 什么是 FFmpeg
1.2 安装方式
先启用 EPEL 和 RPM Fusion
1.3 验证安装
1.4 核心概念速览
2. 命令语法详解
2.1 基本命令格式
2.2 选项位置决定作用范围
选项位置至关重要!
2.3 全局选项
2.4 输入选项
2.5 输出选项(核心参数)
2.5.1 视频输出选项
2.5.2 音频输出选项
2.5.3 通用输出选项
3. 格式与封装
3.1 容器格式速查
3.2 基本格式转换
MP4 → MKV(容器切换,不重新编码)
MKV → MP4(注意:MP4 不支持某些编码器)
提取音频(MP4 → M4A)
提取视频(去掉音频)
AVI → MP4(可能需要重新编码)
3.3 流拷贝模式(-c copy)
速度对比:
-c copy:几百 MB/s(仅 IO 限制)
重新编码:10-100 fps(受 CPU 限制)
改变容器格式
裁剪视频片段(使用关键帧精准度)
从 MKV 中删除字幕流
只保留特定流
3.4 元数据操作
查看元数据
设置标题
设置多个元数据
设置音频语言
清除所有元数据
从另一个文件复制元数据
3.5 分片与拼接
=== 分片:把视频切成片段 ===
按时间切分
按关键帧切分
=== 拼接(concat):合并多个视频 ===
方法1:concat 分离器(适用于同格式文件)
先创建文件列表 concat_list.txt:
file 'part1.mp4'
file 'part2.mp4'
file 'part3.mp4'
方法2:concat 协议(最快,仅限 MPEG 格式)
方法3:filter_complex(不同格式需要重新编码)
3.6 MP4 优化选项
网络流式播放(moov atom 移到文件开头)
分片 MP4(适合 DASH/HLS)
分片 + 流式 + 空 moov
4. 视频编码
4.1 编码器选择指南
4.2 H.264 (libx264) —— 主力编码器
=== 基础用法 ===
CRF 模式(推荐:恒质量,文件大小不可预测)
码率模式(目标码率,文件大小可预估)
2-pass 码率模式(更高质量的 VBR)
CRF 值参考
Preset 预设(速度 vs 压缩效率)
Tune 调节
针对内容类型优化
profile 和 level
确保在旧设备上的兼容性
4.3 H.265/HEVC (libx265)
CRF 模式(H.265 的 CRF 与 H.264 不同,28 ≈ H.264 的 23)
高效率预设
10-bit 编码(减少色带)
HDR10 编码
4.4 AV1 —— 新一代编码器
SVT-AV1(速度最快的 AV1 编码器,推荐)
SVT-AV1 preset 范围 0-13(数字越大越快,质量略降)
preset 8 = 速度/质量平衡推荐值
preset 10-13 = 快速编码
preset 4-6 = 高质量归档
libaom-av1(Google 参考实现,质量最好但最慢)
4.5 常见编码场景
=== GIF 制作 ===
=== WebM(网页视频)===
=== 导出帧为图片序列 ===
=== 图片序列合成视频 ===
=== 纯色/测试视频生成 ===
4.6 编码性能优化
多线程加速
流水线加速(解码/滤镜/编码在独立线程中并行)
降低分辨率加速
5. 音频编码
5.1 音频编码器选择
5.2 AAC 编码(主力音频编码器)
内置 AAC(无外部依赖)
指定 AAC profile
高质量 AAC(内置编码器已大幅改进)
libfdk_aac(需编译时启用,非自由软件)
AAC 码率建议
5.3 Opus —— 最先进的音频编码器
Opus 在 64k 就达到 AAC 128k 的质量
Opus 可变码率
提取音频为 Opus
5.4 音频采样率和声道操作
降采样(48kHz → 44.1kHz)
立体声转单声道
提取特定声道(左声道)
双单声道 → 立体声
5.1 → 立体声下混
5.5 无损音频
转码为 FLAC(无损压缩)
提取 CD 原声(WAV → FLAC)
FLAC → ALAC(Apple Lossless,M4A 容器)
从视频中提取无损音频
5.6 音量调整
增加音量(2倍)
减小音量(一半)
以分贝为单位调整
响度归一化(EBU R128 标准)
动态响度归一化(测量后再应用)
根据输出的 JSON 结果填入 measured_* 参数
6. 视频滤镜
6.1 滤镜语法基础
单个滤镜
滤镜链(用逗号连接,从左到右处理)
filter_complex(多输入/多输出)
查看滤镜文档
6.2 核心视频滤镜
缩放 (scale)
固定分辨率
保持宽高比,指定宽度(-1 = 自动计算)
缩放到指定宽度,但限制最大高度
缩放到一半
强制宽高比(加黑边)
高质量缩放算法
裁剪 (crop)
crop=宽:高:x偏移:y偏移
从中心裁剪 1080p → 正方形
裁剪掉上下黑边
自动检测并裁剪黑边
然后使用输出的 crop 值
智能裁剪(自动找内容区域)
帧率 (fps)
设置固定帧率
60fps → 30fps(丢弃一半帧)
24fps → 60fps(补帧,使用帧混合)
运动插值补帧(慢但效果好)
裁剪时间 (trim)
保留 10s-30s 之间的内容(作为滤镜使用,需重新编码)
更好的方式:用 -ss/-t(尽可能保持流拷贝)
旋转与翻转
顺时针旋转 90°
transpose 参数:
0 = 逆时针 90° + 垂直翻转
1 = 顺时针 90°
2 = 逆时针 90°
3 = 顺时针 90° + 垂直翻转
任意角度旋转(保持尺寸)
水平翻转
垂直翻转
补边 (pad)
给视频加黑边(1080p 内容在 1920×1080 中居中)
竖屏加左右黑边变横屏
统一定尺寸输出
6.3 颜色与画面调节
亮度、对比度、饱和度
仅调整亮度(-1 到 1)
色相旋转
色彩平衡
曲线调整
转换为灰度
或更简单的方法
6.4 模糊与锐化
高斯模糊
方框模糊
锐化 (unsharp)
参数: lx=5:ly=5:la=1.0:cx=5:cy=5:ca=0.0
lx/ly=矩阵大小, la=亮度强度(推荐0.5-1.5)
智能模糊(保留边缘)
6.5 去隔行
yadif(最常用)
yadif 模式
bwdif(更好的去隔行)
nnedi(神经网络去隔行,质量最好但慢)
6.6 多画面合成 (filter_complex)
=== 画中画 ===
overlay=x:y —— 小画面位置(右下角)
=== 画面叠加(透明通道)===
overlay 时间控制
=== 并排显示 ===
=== 上下堆叠 ===
=== 2×2 四分屏 ===
=== 淡入淡出 ===
前5秒淡入
最后5秒淡出
交叉淡入淡出(两段视频过渡)
6.7 速度调节
2倍速(视频+音频)
0.5倍速(慢放)
PTS 倍数:0.5=2倍速, 2.0=0.5倍速
atempo 范围:0.5~2.0(超范围可链式使用:atempo=2.0,atempo=2.0 = 4倍速)
6.8 文本与绘图
绘制文本水印
含时间戳的文本
中文字体指定
绘制矩形(边框)
绘制网格
7. 音频滤镜
7.1 常用音频滤镜
音量调节
声道操作
均衡器
f=频率(Hz), t=q(滤波类型), w=宽度, g=增益(dB)
低音增强
动态压缩(减少音量差异)
高通/低通滤波
速度/音调调节
延迟
只延迟右声道(声道0延迟0,声道1延迟500ms)
淡入淡出
回声
7.2 多音轨处理
混合两个音频源
amix 参数:duration=first|shortest|longest
合并两个单声道为立体声
分离声道为独立文件
8. 字幕处理
8.1 字幕类型
8.2 字幕操作
=== 烧录字幕(硬编码到视频)===
SRT 字幕
ASS 字幕(保留样式)
指定字体目录
字幕样式覆盖(SRT)
=== 封装字幕(软字幕,可开关)===
添加 SRT 字幕到 MKV
MKV 更适合软字幕(支持更多格式)
=== 提取字幕 ===
从 MKV 提取字幕流(图形字幕)
=== 移除字幕 ===
8.3 多字幕轨道管理
保留特定字幕轨道
合并多条字幕
设置默认字幕轨
9. 硬件加速
9.1 硬件加速平台
9.2 NVIDIA NVENC(最常见场景)
查看 NVIDIA 编码器支持
H.264 硬件编码
HEVC 硬件编码
NVENC 参数说明:
-preset: p1(最快)~p7(最慢最好), 默认 p4
-cq: 恒质量 0-51(类似 CRF)
-qp: 恒定量化参数(完全恒定码率)
-b:v: 码率控制模式
硬件解码 + 硬件编码(最快转码)
9.3 Intel QSV
查看 Intel QSV 支持
H.264 QSV 转码
HEVC QSV
9.4 AMD AMF
AMD 显卡加速
9.5 VA-API (Linux)
Linux VA-API
9.6 Apple VideoToolbox (macOS)
macOS 硬件加速
9.7 硬件加速滤镜
GPU 缩放(NVENC + CUDA 缩放)
GPU 去隔行
Vulkan 滤镜(9.0+)
10. 流媒体与网络
10.1 网络输入/输出
从网络 URL 读取
RTMP 推流
RTSP 拉流
UDP 推流(MPEG-TS)
SRT 推流(安全可靠传输)
HLS 直播输出
10.2 录制直播流
录制 RTMP 流
录制 HLS 流
定时分段录制
10.3 转码推流
实时转码推流
HEVC 推流(HEVC over RTMP)
多码率转码(适合 HLS/DASH 自适应流)
10.4 屏幕录制/摄像头采集
===== Linux =====
屏幕录制 (X11)
屏幕+音频
===== Windows =====
DirectShow 屏幕录制
特定窗口
===== macOS =====
AVFoundation 屏幕录制
摄像头录制 (Linux V4L2)
摄像头录制 (Windows DirectShow)
摄像头录制 (macOS AVFoundation)
11. ffprobe 媒体分析
11.1 基本用法
查看文件基本信息
隐藏横幅
仅显示错误
显示每个流的信息
显示格式/容器信息
显示所有包(非常大,调试用)
显示所有帧信息(极大)
11.2 结构化输出
JSON 格式(推荐用于脚本解析)
XML 格式
扁平键值对
CSV(便于导入表格)
INI 格式
11.3 选择性提取
只显示特定条目
只显示视频流信息
只显示音频流
获取时长(秒)
获取视频分辨率
11.4 脚本中实用示例
批量检查视频时长
检查视频是否包含音频流
获取关键帧位置
获取 GOP 信息
11.5 帧级分析(高级)
分析每帧大小(检测场景变化)
检测黑帧
检测静音片段
12. ffplay 播放器
12.1 基本用法
播放文件
循环播放
全屏播放
指定窗口标题
静音播放
只播放音频(不显示窗口)
12.2 控制参数
从指定位置开始播放
指定音量
播放时应用滤镜
指定输出分辨率(缩放播放)
固定帧率播放
12.3 键盘快捷键
12.4 交互模式
播放时显示更多信息
低速/快速播放预览
作为预览工具(验证 ffmpeg 滤镜效果)
13. 实用场景大全
13.1 视频编辑类
===== 裁剪片段(不重新编码)=====
===== 精确帧裁剪(重新编码)=====
===== 合并视频 =====
准备 filelist.txt:
file 'part1.mp4'
file 'part2.mp4'
===== 视频去音频 =====
===== 替换音频 =====
===== 分离音视频 =====
===== 视频静音 =====
===== 反转视频 =====
===== 垂直视频转水平(加模糊背景)=====
13.2 压缩与优化类
===== 大幅压缩视频(保持质量)=====
===== 极限压缩 =====
===== 目标文件大小 =====
如要求输出文件为 10MB,时长 120 秒,音频 128k
视频码率 = (10*1024*8 - 128*120) / 120 = 554 kbps
===== 减小 GIF 大小 =====
13.3 社交媒体优化
===== Instagram 正方形视频 (1:1) =====
===== TikTok/Reels 竖屏 (9:16) =====
===== YouTube 推荐设置 =====
1080p60
4K
13.4 分析与调试
===== 生成视频质量报告(PSNR/SSIM)=====
===== 查看编码器参数详情 =====
===== 对比原始/压缩视频 =====
===== 提取运动矢量 =====
===== 检查 GOP 结构 =====
===== 创建缩略图预览 =====
13.5 批量处理
===== 批量转码 MP4 → MKV =====
===== 批量压缩视频 =====
===== 批量提取音频 =====
===== 批量添加水印 =====
===== 批量生成缩略图 =====
13.6 特殊格式处理
===== 视频 → GIF =====
===== GIF → 视频 =====
===== 视频 → APNG(动图)=====
===== PNG 序列 → 视频 =====
===== 图片 + 音频 → 视频 =====
===== 音频可视化 =====
===== 5.1 环绕声测试文件 =====
14. 常见问题排查
14.1 问题与解决方案
问题1:输出文件无法播放
解决方案:确保使用广泛兼容的参数
问题2:音视频不同步
方法1:重新同步
方法2:固定延迟
方法3:提取+合并修复
然后用 ffmpeg 重新合并
问题3:编码速度太慢
使用更快的 preset
使用硬件编码器(不看重体积的话)
跳过滤镜处理
问题4:画质差/块状
降低 CRF
提高码率
使用更好的预设
问题5:透明度丢失
解决方案:使用支持 Alpha 通道的编码器
常见选择:
- ProRes 4444(专业):-c:v prores_ks -profile:v 4
- VP9 + WebM(网页):-c:v libvpx-vp9 -pix_fmt yuva420p
- PNG 序列:frame_%04d.png
问题6:Unsupported codec
查看支持的编解码器
检查是否需要重新编译或安装额外包
14.2 调试命令模板
完整调试信息
只转码前几秒测试
测试滤镜效果(用 ffplay 预览)
查看完整滤镜链对像素格式的影响
码率分析
附录:快速参考卡片
最常用命令 Top 20
1. 格式转换(不重新编码)
2. H.264 高质量压缩
3. 裁剪片段
4. 缩放视频
5. 提取音频
6. 合并视频(同格式)
7. 添加水印(右下角)
8. 视频转 GIF
9. GIF 优化版
10. 查看文件信息
11. 淡入淡出
12. 加减速
13. 图片+音频→视频
14. 批量截图(每10秒)
15. 去音频
16. 替换音频
17. 音量加倍
18. 旋转视频
19. 网络优化(MP4)
20. 查看支持的格式/编码器
滤镜链速查