音视频格式转换工具 FFmpeg
这几天重装了系统,为了保持纯净,软件装的很克制。我偶尔有压缩视频和转换媒体格式的需求,就准备安装个 Permute 之类的传统软件,也是突然想看看有没有更好的选择,然后发现了 FFmpeg,一个可以通过命令行实现几乎所有媒体格式的转换、压缩、剪辑、提取、混合等操作的开源工具,同时性能超强,但使用上可能对大部分人有门槛。
安装方式
推荐使用 Homebrew(macOS):
brew install ffmpeg
常用命令
视频格式转换
ffmpeg -i input.avi output.mp4
ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4
视频压缩和质量控制
ffmpeg -i input.mp4 -crf 23 output.mp4
ffmpeg -i input.mp4 -b:v 1000k -b:a 128k output.mp4
ffmpeg -i input.mp4 -r 30 output.mp4
视频尺寸和分辨率
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
ffmpeg -i input.mp4 -vf scale=1280:-1 output.mp4
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
视频裁剪和分割
ffmpeg -i input.mp4 -ss 00:01:30 -t 00:00:30 output.mp4
ffmpeg -i input.mp4 -ss 00:01:30 output.mp4
音频处理
ffmpeg -i input.mp4 -vn -c:a copy output.aac
ffmpeg -i input.mp4 -an output.mp4
ffmpeg -i input.wav -c:a libmp3lame -b:a 192k output.mp3
图片和视频互转
ffmpeg -i input.mp4 -vf fps=1 output_%03d.png
ffmpeg -framerate 30 -i input_%03d.png -c:v libx264 -pix_fmt yuv420p output.mp4
ffmpeg -i input.mp4 -ss 00:01:23 -frames:v 1 output.png
视频合并和拼接
echo "file 'video1.mp4'" > list.txt
echo "file 'video2.mp4'" >> list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4
常用参数说明
视频相关
参数 |
说明 |
可选值 |
-c:v / -vcodec |
视频编码器 |
libx264 H.264编码
libx265 H.265编码
libvpx-vp9 VP9编码
libaom-av1 AV1编码
copy 复制原始流 |
-b:v |
视频码率 |
1M 1Mbps
500K 500Kbps |
-crf |
恒定质量因子 |
0-51 数值越小质量越好
18 视觉无损
23 默认值
28 可接受质量 |
-preset |
编码速度预设 |
ultrafast 最快速度
fast 快速
medium 中等(默认)
slow 慢速
veryslow 最慢速度 |
-r |
视频帧率 |
24 电影标准
25 PAL标准
30 NTSC标准
60 高帧率 |
-s |
视频分辨率 |
1920x1080
1280x720
640x480 |
-aspect |
宽高比 |
16:9
4:3
1:1 |
-vf |
视频滤镜 |
scale=1280:720 缩放
crop=640:480:0:0 裁剪
rotate=90*PI/180 旋转 |
-frames:v |
输出视频帧数 |
300 输出300帧
1 输出1帧(截图) |
-q:v |
视频质量 |
1 最高质量
5 高质量
10 中等质量
20 低质量 |
音频相关
参数 |
说明 |
可选值 |
-c:a / -acodec |
音频编码器 |
aac AAC编码
libmp3lame MP3编码
libopus Opus编码
flac 无损编码
copy 复制原始流 |
-b:a |
音频码率 |
128k 128kbps标准
192k 192kbps高质量
320k 320kbps最高质量 |
-ar |
音频采样率 |
44100 CD音质
48000 专业音质
22050 低质量
8000 电话音质 |
-ac |
音频声道数 |
1 单声道
2 立体声
6 5.1声道
8 7.1声道 |
-af |
音频滤镜 |
volume=0.5 音量减半
volume=2.0 音量翻倍
highpass=f=200 高通滤波 |
-an |
禁用音频 |
- |
-vn |
禁用视频 |
- |
-frames:a |
输出音频帧数 |
数字值,指定音频帧数 |
-q:a |
音频质量 |
0 最高质量
5 高质量
9 低质量 |
时间相关
参数 |
说明 |
可选值 |
-ss |
开始时间 |
00:01:30 1分30秒
90 90秒
01:30:45.123 精确到毫秒 |
-t |
持续时间 |
00:00:30 30秒
120 120秒
01:00:00 1小时 |
-to |
结束时间 |
00:05:00 5分钟处结束
300 300秒处结束 |