这几天重装了系统,为了保持纯净,软件装的很克制。我偶尔有压缩视频和转换媒体格式的需求,就准备安装个 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
# CRF质量控制(推荐)
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
# 创建文件列表(list.txt)
echo "file 'video1.mp4'" > list.txt
echo "file 'video2.mp4'" >> list.txt
# 合并视频
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4
通过命令行使用还是很繁琐,我的方案是通过 快捷指令 FFmpeg Tool 的菜单快速调用预设的压缩视频、转换格式、提取音频的命令,省去了手动输入命令的步骤,同时可以直接右键要处理的视频文件在菜单中调用,更方便一些。
| 参数 | 说明 | 可选值 |
|---|---|---|
-c:v / -vcodec |
视频编码器 | libx264 H.264编码libx265 H.265编码libvpx-vp9 VP9编码libaom-av1 AV1编码copy 复制原始流 |
-b:v |
视频码率 | 1M 1Mbps500K 500Kbps |
-crf |
恒定质量因子 | 0-51 数值越小质量越好18 视觉无损23 默认值28 可接受质量 |
-preset |
编码速度预设 | ultrafast 最快速度fast 快速medium 中等(默认)slow 慢速veryslow 最慢速度 |
-r |
视频帧率 | 24 电影标准25 PAL标准30 NTSC标准60 高帧率 |
-s |
视频分辨率 | 1920x10801280x720640x480 |
-aspect |
宽高比 | 16:94:31: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秒处结束 |