首先声明本文仅介绍该工具的部分内容,更多内容请 前往 FFmpeg 官网

前言

FFmpeg 是一个简单的视频编辑命令行工具,可以实现简单的视频编辑工作。相比于大型的视频剪辑软件,其优势是轻量。

我认为 FFmpeg 最大的优势莫过于其便捷的视频格式转换,在这种场景下图形界面显得多余。本文也将重点介绍这一部分的功能。

你还可以将它嵌入到代码中,可以使用命令行接口,也可以使用库支持,如 pythonffmpy

优化

在正文开始之前,我一定要将 优化 放在前面,否则你的 ffmpeg 会跑得非常慢。

在你的所有命令最后加上 -vsync 2,例如:

1
ffmpeg -i example.webm -vsync 2 example.mp4

打开前后效率对比(数据仅供参考):

状态 转换倍率 CPU 占用
None 1.5×\approx 1.5 \times 40%\approx 40\%
-vsync 2 15×\approx 15 \times 25%\approx 25\%

常用命令

视频格式转换

1
2
ffmpeg -i {源文件.源后缀} {目标文件.目标后缀}  # -i 表示输入, ffmpeg 会自动识别文件格式进行转换, 也可以转换图片
# ffmpeg -i "example.webm" "example.mp4"

视频编码转换

1
2
ffmpeg -i {源文件.源后缀} -strict -2 -vcodec h264  {目标文件.目标后缀}  # h264
ffmpeg -i {源文件.源后缀} -strict -2 -vcodec mpeg4 {目标文件.目标后缀} # mpeg4

视频长宽比转换

1
2
ffmpeg -i {源文件.源后缀} -aspect {横高比} {目标文件.目标后缀}
# ffmpeg -i "example.webm" -aspect 16:9 "example.mp4"

视频压缩

1
2
3
4
ffmpeg -i {源文件.源后缀} -vf scale={横像素}:-2 {目标文件.目标后缀}  # -2 表示自动计算最合适的偶数高度
# ffmpeg -i "example.webm" -vf scale=720:-2 "example.mp4"
ffmpeg -i {源文件.源后缀} -an {目标文件.目标后缀} # 去除音频流
ffmpeg -i {源文件.源后缀} -vn {目标文件.目标后缀} # 去除视频流