1. FFmpeg CLI命令速查表的价值与定位
在音视频处理领域,FFmpeg就像是一把瑞士军刀,而命令行接口(CLI)则是这把军刀最锋利的刀刃。我从业十年来,从最初在电视台做后期处理,到后来参与互联网视频平台开发,FFmpeg命令行工具始终是我日常工作中不可或缺的利器。
这个速查表不同于官方文档的冗长,也区别于网络上的零散教程。它是我在实际项目中反复验证过的"高频命令合集",特别适合以下场景:
- 紧急处理时快速查阅参数格式
- 学习阶段理解各参数的实际效果
- 开发调试时验证音视频处理逻辑
注意:虽然GUI工具层出不穷,但真正掌握FFmpeg CLI才能在复杂场景下游刃有余。就像专业摄影师即使有自动模式也一定要懂手动调参。
2. 基础命令结构与通用参数解析
2.1 命令格式解剖
一个完整的FFmpeg命令通常包含以下模块:
ffmpeg [全局参数] [输入文件参数] -i 输入文件 [输出文件参数] 输出文件实际案例:将MP4转为MOV并保留元数据
ffmpeg -i input.mp4 -map_metadata 0 -c copy output.mov关键参数说明:
-map_metadata 0:保留所有元数据-c copy:启用流复制模式(不重新编码)
2.2 必知的全局参数
| 参数 | 作用 | 典型值 |
|---|---|---|
| -y | 自动覆盖输出文件 | (无值) |
| -n | 禁止覆盖输出文件 | (无值) |
| -loglevel | 设置日志级别 | warning, error, debug |
| -hide_banner | 隐藏启动信息 | (无值) |
实操心得:调试时建议使用
-loglevel debug,生产环境用-loglevel warning可减少日志干扰。
3. 音视频转码核心命令
3.1 视频转码基础
将H.264视频转码为HEVC(H.265):
ffmpeg -i input.mp4 -c:v libx265 -preset fast -crf 23 -c:a copy output.mp4参数详解:
-c:v libx265:视频编码器选择-preset:编码速度与压缩率平衡(slow/fast/medium)-crf:质量系数(18-28常见)
3.2 音频转码方案
提取音频并转码为AAC:
ffmpeg -i video.mp4 -vn -c:a aac -b:a 192k audio.m4a特殊场景处理:
- 保留多音轨:
-map 0:a - 指定采样率:
-ar 44100 - 声道处理:
-ac 2(立体声)
4. 流处理与滤镜应用
4.1 常用视频滤镜
添加水印(静态图片):
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=10:10" output.mp4画中画效果:
ffmpeg -i main.mp4 -i sub.mp4 -filter_complex "[1:v]scale=iw/4:ih/4 [pip]; [0:v][pip]overlay=main_w-overlay_w-10:10" output.mp44.2 音频滤镜实战
降噪处理(适用采访录音):
ffmpeg -i noisy.wav -af "arnndn=m=model.rnnn" clean.wav音量标准化:
ffmpeg -i input.mp3 -af "loudnorm=I=-16:TP=-1.5:LRA=11" output.mp35. 流媒体与设备交互
5.1 直播推流配置
RTMP推流示例:
ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -maxrate 3000k -bufsize 6000k -g 50 -c:a aac -b:a 160k -f flv "rtmp://live.twitch.tv/app/your-stream-key"关键参数解析:
-re:按原始帧率读取-g:GOP大小(关键帧间隔)-maxrate与-bufsize:码率控制
5.2 屏幕采集与录制
Linux下X11屏幕录制:
ffmpeg -f x11grab -video_size 1920x1080 -framerate 30 -i :0.0 -c:v libx264 -preset ultrafast output.mp4Windows替代方案:
ffmpeg -f gdigrab -framerate 30 -i desktop -c:v libx264 -preset ultrafast output.mp46. 元数据与字幕处理
6.1 元数据操作技巧
查看所有元数据:
ffmpeg -i input.mp4 -f ffmetadata metadata.txt批量添加版权信息:
ffmpeg -i in.mp4 -metadata copyright="(c) 2023 MyCompany" -codec copy out.mp46.2 字幕处理大全
硬字幕烧录:
ffmpeg -i video.mp4 -vf "subtitles=sub.srt:force_style='Fontsize=24,PrimaryColour=&HFFFFFF&'" output.mp4软字幕封装(MP4):
ffmpeg -i video.mp4 -i sub.srt -c copy -c:s mov_text -metadata:s:s:0 language=eng output.mp47. 高级分析与调试命令
7.1 码流分析工具
关键帧分析:
ffprobe -select_streams v -show_frames -show_entries frame=key_frame,pict_type -of csv input.mp47.2 性能测试方法
编码速度基准测试:
time ffmpeg -i input.mp4 -c:v libx264 -preset medium -f null -专业技巧:测试时输出到null可以避免磁盘IO影响结果准确性。
8. 平台适配与常见问题
8.1 Windows特别注意事项
路径处理规范:
ffmpeg -i "C:\Videos\input.mp4" -c copy "D:\Output\output.mp4"8.2 典型错误处理
"Protocol not found"错误:
- 检查FFmpeg编译时是否包含对应协议支持
- 确认网络地址格式正确
- 验证网络连接权限
"Invalid data found"处理:
ffmpeg -err_detect ignore_err -i corrupt.mp4 -c copy fixed.mp49. 效率优化实战技巧
9.1 硬件加速方案
NVIDIA NVENC示例:
ffmpeg -i input.mp4 -c:v h264_nvenc -preset p7 -tune hq -cq 23 -c:a copy output.mp49.2 批量处理脚本
Linux下批量转码:
for f in *.mov; do ffmpeg -i "$f" -c:v libx264 -preset fast "${f%.*}.mp4"; doneWindows批处理对应方案:
for %%i in (*.mov) do ffmpeg -i "%%i" -c:v libx264 -preset fast "%%~ni.mp4"10. 扩展应用场景
10.1 视频会议处理
虚拟摄像头输入(Linux):
ffmpeg -re -i promo.mp4 -f v4l2 /dev/video010.2 监控视频处理
分段录制示例:
ffmpeg -i rtsp://cam_address -c copy -f segment -segment_time 3600 -strftime 1 "record_%Y-%m-%d_%H-%M-%S.mp4"在实际项目中,我发现很多开发者只掌握了FFmpeg 20%的功能就足以应对80%的需求。但这个速查表的价值就在于,当遇到那20%的特殊需求时,它能帮你快速找到专业级的解决方案。比如最近我们处理一个跨国项目时,就是通过-filter_complex中的zmq滤镜实现了分布式视频处理,这些经验都沉淀在了这个速查表中。