TaosLife

音视频格式转换工具 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

视频压缩和质量控制

# 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

常用参数说明

视频相关

参数 说明 可选值
-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秒处结束