通用基础规则(必看)
- 所有命令基础格式:
ffmpeg -i 输入文件 【参数】 输出文件,-i是输入标识,必须放在输入文件前; - 快速查看文件信息(编码、分辨率、码率等):
ffmpeg -i input.mp4(核心排错/查看参数用); - 静默执行(屏蔽冗余日志):命令末尾加
-hide_banner -loglevel error; - 保留原编码(无损快速处理):加
-c:v copy -c:a copy(视频/音频流直接复制,不重新编码); - 跨平台:Windows/Mac/Linux命令完全一致,仅文件路径写法不同(Windows用
D:\video\input.mp4,Mac/Linux用/Users/xxx/input.mp4)。
一、视频核心操作(最常用)
1. 格式转换(无损/编码,支持所有格式)
无损转换(仅改封装,秒级完成,无画质损失):支持MP4/MOV/MKV/AVI/FLV互转
1
ffmpeg -i input.mp4 -c:v copy -c:a copy output.mkv # MP4转MKV,其他格式同理
通用编码转换(适配所有播放器,如FLV转MP4):
1
ffmpeg -i input.flv output.mp4 # 自动适配编码,默认画质
2. 视频压缩(控制画质/体积,核心参数-crf/-b:v)
FFmpeg压缩核心靠CRF(恒定画质),优先用这个,值越小画质越好(范围18-28,23为默认,18接近无损),体积与画质成反比;适合所有视频格式。
1 | ffmpeg -i input.mp4 -crf 25 -c:a copy output.mp4 # 中等压缩,保留音频原编码 |
备选:固定码率压缩(
-b:v视频码率,-b:a音频码率),适合精准控制体积1
ffmpeg -i input.mp4 -b:v 2000k -b:a 128k output.mp4 # 视频码率2000kbps,音频128kbps
3. 视频剪辑(精准裁剪,无损/编码)
关键参数:-ss 开始时间(时分秒格式00:01:20或秒数80)、-to 结束时间(到某时间)/-t 持续时间(剪多久);
无损剪辑(必须是关键帧位置,否则会自动调整,秒级完成):
1
2ffmpeg -ss 00:00:30 -i input.mp4 -to 00:01:50 -c:v copy -c:a copy output.mp4 # 30秒到1分50秒
ffmpeg -ss 20 -i input.mp4 -t 60 -c:v copy -c:a copy output.mp4 # 从20秒开始,剪60秒通用剪辑(任意位置,重新编码,适配所有场景):把
-ss放在-i后即可1
ffmpeg -i input.mp4 -ss 00:00:30 -to 00:01:50 -c:a copy output.mp4
4. 旋转视频(补全之前的内容,极简版)
无损旋转(改元数据,秒级):
-metadata:s:v rotate=0(重置90°旋转为正常)1
ffmpeg -i input.mp4 -metadata:s:v rotate=0 -c:v copy -c:a copy output.mp4
编码旋转(画面真正旋转,适配所有播放器):
-vf transpose=值1
2ffmpeg -i input.mp4 -vf "transpose=1" -c:a copy output.mp4 # 顺时针90°(最常用)
ffmpeg -i input.mp4 -vf "rotate=PI" -c:a copy output.mp4 # 旋转180°
5. 调整视频分辨率/缩放(适配手机/投屏/上传)
关键参数:-vf scale=宽:高,宽高支持固定值或按比例(用-1表示自动适配,必须为偶数);
1 | ffmpeg -i input.mp4 -vf scale=1920:1080 -c:a copy output.mp4 # 固定1080P |
进阶:强制比例(如16:9),自动裁剪黑边
1
ffmpeg -i input.mp4 -vf "scale=1920:1080:force_original_aspect_ratio=crop" -c:a copy output.mp4
6. 提取视频中的纯画面(去掉音频,无损/编码)
1 | ffmpeg -i input.mp4 -c:v copy -an output.mp4 # 无损去音频(-an=audio none) |
7. 视频合并(无损,仅支持同编码/同分辨率)
分两步,先创建文件列表txt,再执行合并命令,支持MP4/MKV/FLV等;
步骤1:创建
filelist.txt,内容如下(路径不能有中文/空格,或用引号包裹):1
2
3file 'input1.mp4'
file 'input2.mp4'
file 'input3.mp4'步骤2:执行无损合并命令:
1
ffmpeg -f concat -i filelist.txt -c:v copy -c:a copy output.mp4
8. 给视频添加封面/替换封面
1 | ffmpeg -loop 1 -i cover.jpg -i input.mp4 -c:v libx264 -c:a copy -shortest output.mp4 |
- 说明:
-loop 1表示循环播放封面,-shortest表示封面时长与视频一致,cover.jpg建议与视频同分辨率。
二、音频核心操作(独立音频/视频提取音频)
1. 从视频中提取纯音频(无损/编码,支持MP3/AAC/WAV/FLAC)
无损提取(提取视频原音频流,如MP4中的AAC):
1
ffmpeg -i input.mp4 -c:a copy -vn output.aac # -vn=video none,去掉视频
提取并转换为MP3(最常用,适配所有设备):
1
2ffmpeg -i input.mp4 -vn output.mp3 # 默认品质
ffmpeg -i input.mp4 -vn -q:a 0 output.mp3 # 最高品质MP3(-q:a 0为最优)提取为无损WAV/FLAC:
1
2ffmpeg -i input.mp4 -vn output.wav
ffmpeg -i input.mp4 -vn output.flac
2. 音频格式转换(MP3/AAC/WAV/FLAC/OGG互转)
1 | ffmpeg -i input.mp3 output.aac |
3. 音频压缩/调整码率(减小体积)
MP3/AAC常用码率:128k(日常)、192k(高品质)、320k(无损级);
1 | ffmpeg -i input.mp3 -b:a 128k output.mp3 # MP3压缩为128kbps |
4. 音频剪辑/裁剪(与视频剪辑语法一致)
1 | ffmpeg -ss 10 -i input.mp3 -to 50 -c:a copy output.mp3 # 无损剪辑10-50秒 |
5. 给视频添加音频/替换视频音频
1 | ffmpeg -i input.mp4 -i audio.mp3 -c:v copy -c:a aac -shortest output.mp4 |
- 说明:
-c:v copy保留视频原画质,-shortest让输出时长与较短的文件一致(避免音频/视频过长)。
6. 调整音频音量(放大/降低,解决视频音量小/大问题)
关键参数:-filter:a "volume=倍数",倍数支持数字(2=放大2倍,0.5=降低一半)或分贝(如+10dB=放大10分贝);
1 | ffmpeg -i input.mp4 -filter:a "volume=2" -c:v copy output.mp4 # 视频音量放大2倍,保留视频 |
三、视频/音频批量操作(高效处理多个文件)
适合需要处理大量视频/音频的场景,Mac/Linux用Shell脚本,Windows用批处理脚本(.bat),以下为极简版,直接保存为脚本文件执行即可。
1. Windows批量处理(.bat文件)
例:批量将文件夹下所有FLV转MP4,保存到output文件夹(先新建output文件夹);
新建flv2mp4.bat,内容如下,放在视频文件夹中,双击执行:
1 | @echo off |
- 修改后缀可适配其他批量操作:如
*.mp4转*.mkv、*.avi转*.mp4,修改-i "%%i"后的参数可批量压缩/剪辑/缩放。
2. Mac/Linux批量处理(Shell脚本)
例:批量将文件夹下所有MP4压缩为CRF25,保存到output文件夹;
新建compress.sh,内容如下,执行chmod +x compress.sh && ./compress.sh:
1 |
|
四、进阶实用操作(解决实际问题)
1. 去除视频水印/模糊水印(简单处理)
关键参数:-vf delogo=x:y:w:h,x,y是水印左上角坐标,w,h是水印宽高(需自己调试);
1 | ffmpeg -i input.mp4 -vf "delogo=100:50:200:80" -c:a copy output.mp4 |
- 模糊水印:加
blur参数,delogo=100:50:200:80:10(10为模糊度)。
2. 视频添加文字水印(固定位置/自定义样式)
1 | # 基础:添加文字“我的视频”,位置(10,10),白色字体 |
- 说明:Windows字体路径如
C:\Windows\Fonts\msyh.ttc,Mac如/Library/Fonts/Microsoft YaHei.ttc。
3. 视频转GIF动图(高清/压缩)
1 | # 高清GIF:裁剪10秒,分辨率640*360 |
4. 提取视频中的帧(保存为图片,截图/逐帧)
1 | # 提取指定时间的单帧截图(00:01:00位置,保存为jpg) |
- 说明:
-q:v 2是图片最高品质(1-31,值越小画质越好)。
五、关键参数速查(新手必备)
| 参数 | 含义 | 常用场景 |
|---|---|---|
-i |
输入文件标识 | 所有命令基础 |
-c:v copy |
无损复制视频流 | 格式转换、剪辑、去音频 |
-c:a copy |
无损复制音频流 | 格式转换、剪辑、加音频 |
-an |
去掉音频(audio none) | 提取纯视频 |
-vn |
去掉视频(video none) | 提取纯音频 |
-ss |
开始时间 | 剪辑、截图 |
-to |
结束时间 | 剪辑 |
-t |
持续时间 | 剪辑、转GIF |
-vf |
视频滤镜(旋转/缩放/裁剪) | 旋转、分辨率、水印 |
-filter:a |
音频滤镜(音量/混音) | 调整音量 |
-crf |
视频恒定画质压缩 | 视频压缩(优先用) |
-b:v/-b:a |
视频/音频固定码率 | 精准控制体积 |
-shortest |
输出时长与最短输入一致 | 加封面、加音频 |
总结
- FFmpeg核心分无损操作(加
-c:v copy -c:a copy,秒级、无损失)和编码操作(无上述参数,适配所有场景,耗时),优先用无损; - 视频压缩/调整画质优先用
-crf参数(18-28),分辨率调整用-vf scale=宽:-1按比例适配; - 剪辑的关键是
-ss位置:放-i前是无损(关键帧),放-i后是通用(任意位置); - 批量操作Windows用
.bat批处理,Mac/Linux用Shell脚本,仅需修改源/目标格式和处理参数; - 所有命令均可通过加
-hide_banner -loglevel error屏蔽冗余日志,让执行更简洁。
以上是FFmpeg95%的日常使用场景,覆盖视频/音频的所有基础和进阶操作,直接复制命令并替换输入/输出文件即可使用,复杂场景可组合多个参数(如旋转+裁剪+压缩)。