FFmpeg是一款功能强大的跨平台的自由软件,可以执行音频和视频多种格式的录制、转换、串流以及丰富的编辑功能等等。你可以在终端通过 Homebrew 直接免费安装它:brew install ffmpeg。

在安装好 FFmpeg 后,就可以直接使用上面提供的动作了。

举一个其官网首页的例子,想要把一个 mp4 视频转换成 avi 格式,只需要在终端输入下面一行短命令即可:

ffmpeg -i input.mp4 output.avi

如果你想要自己动手试一试这条命令,只需把想要转换的文件直接拖到终端里替换掉input.mp4。按下回车,命令的运行效果就是这样的:

文件转换就完成了。

正如 FFmpeg 所言:

 

 

视频/音频转换从未如此简单。

 

用 FFmpeg 裁剪视频

 

把上面的命令加上简单的裁剪参数,就可以完成我的需求:

ffmpeg -i input.mov -vf "crop=width:height:x:y,scale=new_width:-1" -y output.mp4

我们看到,其中增加了-vf "crop=width:height:x:y,scale=new_width:-1" -y这一部分。下面依次来解释它们:

-vf:要对视频加入其它转换参数;

crop=width:height:x:y":对视频进行裁剪,后面的四个参数分别为:

width:裁剪后的宽度,

height:裁剪后的高度,

x:裁剪起始点横坐标,

y:裁剪起始点纵坐标;

scale=new_width:-1:再对视频进行缩放,后面的两个参数分别为:

new_width:缩放后的宽度,

-1:高度与宽度保持原比例;

-y:强制输出,即如果已存在相同名称的文件,不发生询问,直接用新文件将其替换掉。

以我要裁剪的视频为例,全屏录制得到的视频尺寸为 2560x1600,我要对它进行裁剪的方式为,以点 (400, 150) 为左上点(起始点),裁剪出一个 1760x1100 的区域,再将其缩放至 720P 的尺寸(1280x800),则需要使用的命令为:

ffmpeg -i input.mov -vf "crop=1760:1100:400:150,scale=1280:-1" -y output.mp4

只需要打开终端在视频路径下输入上述指令,就可以直接把视频裁剪成想要的尺寸了。

制作 LaunchBar 动作

在制作这个 LaunchBar 动作时,我们选择 Python 作为脚本,在脚本中调用这条命令即可,脚本内容如下:

灰色部分是注释、导入的库以及对运行 FFmpeg 所需要的环境变量的定义;

橙色部分定义了裁剪尺寸,并把它们从数值变成相应的字符串,以待写入命令中,你可以根据自己的需求,修改它们的值;

粉色部分表示对输入的每一个视频文件分别进行操作;

紫色部分表示获取要处理的文件的文件名,并在其后面加上_cropped作为裁剪后的文件名称;

蓝色部分运行上述视频转换命令,先把命令中的每一个部分作为一个字符串,组合成一个列表,再运行它;

棕色部分表示在处理完一个文件之后弹出通知提醒,提醒内容为新生成的文件名,这里调用了一个 AppleScript,其内容比较简单直观,把「Video Cropped!」作为通知的标题,把新生成的视频名称作为通知的内容:

完成动作后,就可以像文章开头的视频所示,选中多个视频文件,对它们进行批量裁剪了。

将视频转换为 GIF 动图

少数派之前也分享过一些其它的 GIF 录制软件,如 @Minja 推荐的Kap,@唐小筑 推荐的Gifox,都可以直接进行屏幕录制并转换为 GIF 动图。如果是直接将现有的视频转换为 GIF,则需要其它一些工具,如 @JasonZone曾介绍过他使用的是一个在线的 GIF 制作工具。再例如 GIF Brewery 3,可以在本地进行转换。在使用了一段 GIF Brewery 3 时间之后,我最后仍是选择卸载了它,因为其转换效果并不理想,转换过程漫长,会引起风扇飞转,而每一次转换所需要的繁琐操作也总是让人心生不快,用 @Minja 的话说:

 

 

GIF Brewery 3 的操作堪比飞机仪表盘了。

 

 

另外一方面,以上谈到的工具,都无法实现批量转换视频,也是一大痛点。

在上面裁剪视频的例子中,我们可以看到,把 LaunchBar 和 FFmpeg 结合起来,就可以轻松对多个视频进行一键批量裁剪。如果转换 GIF 的过程也能像这样完成,那就是我所能想像出的制作动图最轻松最高效的方式了。而 FFmpeg 确实也提供了制作动图的功能,只需要简单的两行命令:

ffmpeg -i vid.mp4 -vf fps=10,scale=960:-1:flags=lanczos,palettegen -y palette.png
ffmpeg -i vid.mp4 -i palette.png -filter_complex "fps=10,scale=960:-1:flags=lanczos[x];[x][1:v]paletteuse" -y output.gif

其中fps=10表示每秒 10 帧,经尝试这也是一个比较合适的数值;与之前的命令参数相同,scale=960 :-1仍表示进行宽度为 960 高度依照原比例的缩放。

再模仿上文所述的制作裁剪视频动作的方法,就可以轻松做出一个转换动图的 LaunchBar 动作。

在这个动作的脚本中我还在这两行命令之后添加了一行命令,用以借助gifsicle对生成的 GIF 文件进行可以接受范围内的进一步压缩:

gifsicle -i output.gif -O3 -o autput.gif

这个动作的运行效果如下:

这里下载这个动作。由于这个动作的脚本的写法与上一个动作的结构一致,故不另行在这里进一步解释,感兴趣的读者可以在这个动作中查看这个脚本。

最后

我通过这次寻找工具而得到的经验是,当我们遇到某种需求而找不到合适而有效的工具时,不妨把目光转向命令行软件,往往都会遇到意想不到的强大工具。而把这些工具与 LaunchBar 结合起来,则可以轻松的组合出一套适合自己的利器,轻松且高效地完成目标。

本文中谈到的 LaunchBar 与命令行工具的结合方法,基本可以适用于其它各种命令行工具。这样的使用方式既充分利用了命令行工具的简洁、高效,也结合了 LaunchBar 出色的启动器属性,免去了记忆和输入这些命令的过程,仍然可以随心所欲地调用它们。

希望本文所分享的经验,也可以对你有所启发。如果你日常也会使用到某些命令行工具,不妨尝试把它们做成 LaunchBar 的动作,以更方便快捷的调用它们。

如果想更系统地了解 LaunchBar 的使用方法,也欢迎你订阅我在少数派上推出的教程《LaunchBar,全方位优化你的 macOS 使用习惯》。