02-命令行速查:转码、抽帧、拼接、音视频同步¶
目录页:见 FFmpeg 文档目录
这章只追求“能直接抄走用”。建议先用 ffprobe 看清楚容器/编码/时长/帧率/音轨/字幕,再决定要不要转码。
如果你发现自己“会抄但不懂”,先把这两章看一遍:
1. 先看信息:ffprobe¶
看流信息(视频/音频分别是什么编码):
只看时长与关键元信息(输出更干净):
2. 转封装(不转码,最快)¶
只换容器(不重新编码):
只要视频,不要音频/字幕:
只要视频 + 第一条音频(多音轨文件建议显式 map):
3. 常见转码(通用模板)¶
转 H.264 + AAC(最通用的组合之一):
缩放到 720p(保持宽高比):
4. 截取/裁剪(尽量不踩同步坑)¶
从 10s 开始取 5s(最稳的方式:重编码一遍):
如果你只想“无损裁剪”(-c copy),需要接受:不一定从精确帧切、也可能音画有偏差:
5. 抽帧/导出图片序列¶
按帧率抽(每秒 2 帧):
按时间戳抽一张(第 3.5 秒):
6. 图片序列 ↔ 视频¶
图片序列转视频(30fps):
视频转图片序列:
7. 导出音频 / 改格式¶
导出 mp3:
导出 wav(PCM,便于做分析/波形处理):
8. 字幕:封装与烧录¶
把 srt 作为软字幕封装进 mkv:
把字幕烧进画面(硬字幕):
9. 旋转/翻转¶
旋转 90°:
水平翻转:
10. 水印/叠加¶
叠加 logo 到右上角:
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=W-w-20:20" -c:v libx264 -crf 20 -c:a copy out_logo.mp4
11. 常见质量/体积控制¶
CRF + preset(离线压缩常用):
强行卡码率(带宽受限/推流常用):
ffmpeg -i input.mp4 -c:v libx264 -b:v 2500k -maxrate 2500k -bufsize 5000k -g 60 -pix_fmt yuv420p -c:a aac -b:a 160k out.mp4
12. 拼接(concat)¶
同编码参数的 mp4 拼接(推荐先转封装到 TS 再 concat,兼容性更好):
ffmpeg -i a.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts a.ts
ffmpeg -i b.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts b.ts
ffmpeg -i "concat:a.ts|b.ts" -c copy -bsf:a aac_adtstoasc out.mp4
如果你能保证输入文件编码参数完全一致,也可以用 concat demuxer(更标准):
准备一个 list.txt:
然后:
13. 常见同步问题的第一反应¶
- 先用
ffprobe看:是否 VFR(可变帧率)、音频采样率是否一致、是否有多音轨 - 只要你不是强制无损(
-c copy),多数同步问题都能通过“重编码 + 统一参数”解决
如果你经常遇到“选错音轨/字幕/莫名其妙不同步/报错看不懂”,直接看: