如何在 Mac 上给你的 iPhone 录屏「套壳」

无论是在文档中还是在网页上,当有手机截屏作为插图出现时,对其套壳往往可以使文章排版更加美观,不至于显得突兀。其实,视频也可以套壳。

视频套壳这个需求,非常适合让自动化工具来完成,比如这样:

我制作了一对 Automator 工作流以及一对 LaunchBar 动作,可以一键生成套壳视频,只需把视频提交给相应的工作流或者 LaunchBar,等待几秒钟,就可以得到完美的套壳视频。安装和使用也不复杂:

  1. 通过 Homebrew 安装视频编辑工具 FFmpeg,即在终端中运行以下命令:
    brew install ffmpeg
  2. 下载安装适合你的版本:
    1. Automator 工作流:
    2. LaunchBar 动作:
  • 如果安装了 Automator 版本,直接把视频拖到 Automator App 上即可;如果安装的是LaunchBar 版本,则选中视频后通过快捷键发送到 LaunchBar、选中所需动作即能实现套壳。
  • 动作思路

    这个动作制作思路非常简单。

    举个例子,我们偶尔会在一些视频网站上看到这样一些无良视频节目:

    放置在背景图上的无良视频节目

    也许是出于害怕在机器审核时被发现涉嫌侵权,这些视频会把原本的视频节目放置在一张背景图片上。而这正是本文介绍的视频套壳方法的灵感来源。

    实现方法

    我曾在 Power+ 中分享了一篇有关 FFmpeg 的使用技巧《利用 FFmpeg 裁剪视频到合适尺寸》,是介绍的是使用 FFmpeg 对视频进行裁剪以及把视频转制成 GIF 动图。同样,利用它也可以轻松完成给视频加壳图的动作。

    首先介绍为 iPhone 8 套壳的动作。

    我选择了 Facebook Design 提供的 iPhone 8 壳图作为这个动作的底图。

    Facebook Design 提供的 iPhone 壳图

    下载完成之后,我选用了其中 Device with Shadow 文件夹中的 Apple iPhone 8 Silver.png,并将其背景填充为白色,原因在于,这张图片背景本身为透明,图片背景中透明的部分会在通过 FFmpeg 往上粘贴视频时作为黑色处理。而我们需要的往往是套壳四周背景为白色的视频。

    再把这张壳图和录屏视频放在同一个路径中。如上文所述安装完成 FFmpeg 之后,就可以在终端中直接通过以下这一条命令将 iPhone 录屏视频粘贴在选中的壳图上了:

    ffmpeg -loop 1 -i Apple\ iPhone\ 8\ Silver.png -i input.mp4 -filter_complex "overlay=100:280:shortest=1" -c:a copy output.mp4
    

    其中 100:280 为视频左上角在图片中的坐标位置:

    座标位置

    而为 iPhone X 的录屏视频套壳,则要比这个方法稍微复杂一点。因为 iPhone X 的屏幕并不是规则的矩形,四角为圆角,且上方有刘海,把录屏视频直接贴在壳图上则会产生如下图中左边的效果:

    左边效果较差

    想要修正得到右边的效果,我想到的一个方法是,把视频粘贴在壳图上,与为 iPhone 8 套壳方法相同。得到如上图所示的视频后,再把壳图贴在这个新生成的视频上。由于壳图中屏幕部分为透明,则会相当于一层蒙板,把视频中展示在屏幕中的内容露出来,而把四边的圆角遮住。具体命令如下:

    ffmpeg -loop 1 -i iphonex_mockup.png -i input.mp4 -filter_complex "overlay=110:142:shortest=1" -c:a copy -y output.mp4
    ffmpeg -i output.mp4 -framerate 1 -i iphonex_mockup.png -filter_complex overlay -c:a copy -y output1.mp4
    

    制作 Automator 工作流

    把以上的动作制作成 Automator 的工作流,即可如前面视频中所示,将文件直接拖放至此工作流应用的图标上,实现视频的快速套壳。

    打开 Automator,按 ⌘Command-N 建立新工作流,在弹出的界面选择 应用程序

    建立工作流

    选取后从在左侧的资源库中通过搜索找到运行 Shell 脚本,双击它加入到右边的流程中。在 Shell 下拉菜单中选择 /bin/bash,并在下面的文本框中写入如下代码:

    OLDIFS="$IFS"
    IFS=$'\n'
    while read f; do
        PATH=$PATH:/usr/local/bin/;
        ffmpeg -loop 1 -i ~/Desktop/iPhone8.png -i $f -filter_complex "overlay=100:280:shortest=1" -c:a copy -y "${f%.*}_mockup.mp4"
    done
    

    如图所示:

    Automator 步骤中的代码

    其中 ~/Desktop/iPhone8.png 是 iPhone 8 的壳图的存放路径。如果你的这张图并不是放在桌面上,需要改成相应的路径。

    完成后保存,这个动作就完成了。

    同理,对于 iPhone X 的视频套壳动作,其代码只需改为:

    OLDIFS="$IFS"
    IFS=$'\n'
    while read f; do
        PATH=$PATH:/usr/local/bin/;
        ffmpeg -loop 1 -i ~/Desktop/iPhoneX.png -i $f -filter_complex "overlay=110:142:shortest=1" -c:a copy -y temp.mp4;
        ffmpeg -i temp.mp4 -framerate 1 -i ~/Desktop/iPhoneX.png -filter_complex overlay -c:a copy -y "${f%.*}_mockup.mp4";
        rm temp.mp4
    done
    

    相应地,其中两处 ~/Desktop/iPhoneX.png 也要改成 iPhone X 壳图的对应路径。

    制作 LaunchBar 动作

    再把以上的命令制作成 Python 脚本分别打包为 LaunchBar 动作,就可以直接通过 LaunchBar 来实现这个功能了。

    至于这个 LaunchBar 动作具体的制作方法,与 Power+ 之前的很多文章中介绍的类似,详细请参阅:

    当然也可以在下载下来的动作中查看 Python 脚本的内容。

    得到套壳的视频后,如果想要把它转换成 GIF 动图,则可以利用上面所提到的 FFmpeg 的技巧文章中分享的把视频转换为动图的动作,完成这个功能。

    转成 GIF

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

    > 下载 少数派 iOS 客户端、关注 少数派公众号,让智能设备更好用 ⚡️