音视频格式转换工具 FFmpeg

这几天重装了系统,为了保持纯净,软件装的很克制。我偶尔有压缩视频和转换媒体格式的需求,就准备安装个 Permute 之类的传统软件,也是突然想看看有没有更好的选择,然后发现了 FFmpeg,一个可以通过命令行实现几乎所有媒体格式的转换、压缩、剪辑、提取、混合等操作的开源工具,同时性能超强,但使用上可能对大部分人有门槛。

安装方式

推荐使用 Homebrew(macOS):

BASH
brew install ffmpeg

常用命令

视频格式转换

BASH
# 基本格式转换
ffmpeg -i input.avi output.mp4

# 指定编码器
ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4

视频压缩和质量控制

BASH
# 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

视频尺寸和分辨率

BASH
# 改变分辨率
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

视频裁剪和分割

BASH
# 按时间裁剪
ffmpeg -i input.mp4 -ss 00:01:30 -t 00:00:30 output.mp4

# 从指定时间到结尾
ffmpeg -i input.mp4 -ss 00:01:30 output.mp4

音频处理

BASH
# 提取音频
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

图片和视频互转

BASH
# 视频转图片序列
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

视频合并和拼接

BASH
# 创建文件列表(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

简化使用

通过命令行使用还是很繁琐,我的方案是通过 快捷指令 的菜单快速调用预设的压缩视频、转换格式、提取音频的命令,省去了手动输入命令的步骤,同时可以直接右键要处理的视频文件在菜单中调用,更方便一些。