这几天重装了系统,为了保持纯净,软件装的很克制。我偶尔有压缩视频和转换媒体格式的需求,就准备安装个 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
通过命令行使用还是很繁琐,我的方案是通过 快捷指令 的菜单快速调用预设的压缩视频、转换格式、提取音频的命令,省去了手动输入命令的步骤,同时可以直接右键要处理的视频文件在菜单中调用,更方便一些。