article_image

工作忙时,我囤下不少演讲视频,几乎撑满了电脑空间。1演讲毕竟不比网课,画面上主要就是些肢体动作表演,不看也罢,基本可以当成播客听;于是,工作告一段落,我把这些利维坦级别的视频稍作处理,导成一段一段音频,轻于存储,敏于聆听。

即便不是影像专业工作者,偶尔也会像我这样,遇上需要把视频转音频的时候:看书时播放的白噪音也不用看画面,锁上手机听声音就好2;新发布的单曲可能还没有上架流媒体音乐,倒是先在 YouTube 上发布了 MV,吊足了胃口……总之,在诸多场合下,都可能要把视频转换成音频。

本文将介绍一套将视频和无损音频批量转换为 MP3 的方法,方便在各种设备上离线播放音频的同时,也大大节省体积。下面还附有 Automator 和 LaunchBar 版动作下载,当然,其中代码完全可以移植到其他常见自动化工具中。

安装和使用动作

本文动作基于一款开源音视频处理工具 FFmpeg 打造。你可能没有听说过 FFmpeg,但肯定接触过使用了 FFmpeg 的产品,包括 MPlayer、VLC、Pot Player,以及 Google 的 YouTube。简言之,基本上你能想到的和音视频有关的功能——从格式转换、压缩尺寸、拼接视频到下载 m3u8 文件——基本都可以用 FFmpeg 实现。

Alt text
FFmpeg 在官网自称“全能跨平台音视频解决方案”

使用本文动作首先需要安装 FFmpeg,为了方便日后统一管理,推荐用 HomeBrew 安装。

brew install ffmpeg

之后,将本文动作放置于 ~/Library/Services/ 文件夹中,稍等即可在右键菜单(在音视频文件上点击右键)中看到对应动作。视频文件的右键菜单中将出现“Video2MP3”,无损音频文件的菜单中则是“Flac2MP3”,运行后可在当前文件夹中获得对应的 MP3 版本。

Alt text
将视频批量转换为 MP3

本文所提供的动作均支持批量处理文件。我们很可能囤了好几期演讲或脱口秀,或者收集了一批白噪音,又或者下载了一份播放清单中的所有视频……借用自动化动作,处理数量再多的视频也没有太大区别,只需要按下按钮,接下来喝点东西等电脑运行就好了。作为参照,我在 2015 的旧笔记本电脑上转换一首流行歌需要 3 秒钟,对于多数读者来说性能应该不成问题。实在不幸遇上电脑卡顿,可以在点击顶部菜单栏的齿轮按钮,结束当前 Automator 动作。3

Alt text
不幸卡住的话,可以关掉当前 Automator 动作

了解 FFmpeg 的格式转换命令

FFmpeg 命令多矣,弱水三千,只取一瓢饮,现在需要的只是格式转换相关命令。这里介绍 FFmpeg 并非为了鼓励诸位使用命令行,一般来说也没有必要;只是,多一些了解,就可以自行调整参数,让导出的音频质量更符合个人需求。这就像多了解一些工程知识,并不是真的为了从零开始造一辆汽车,更多时候是方便日常维护和修理。

以视频转 MP3 的命令为例,它大概长这样:

ffmpeg -i "视频文件的路径" -b:a 128k "MP3 文件的路径"

其中 -i 表示输入文件(可能取自 input 的首字母),-b:a 用于控制生成音频的质量(流量)。输出文件的格式会根据文件名自动调整,我在动作中直接写明输出文件为 某某.mp3,故不再需要手动指定格式。

通常而言,唯一需要调整就是 -b:a 后面的参数,数值越大质量越好,相应的文件体积往往也越大。128k 是一个比较均衡的参数,适合 TAD 演讲、脱口秀、白噪音等“听个响”的音频,这类资源对于音质的要求毕竟不可与音乐同日而语,听者兴许还愿意稍微牺牲一下质量来换取更轻巧的文件体积——它们往往动辄几十分钟几个小时,非常占空间。

另外,FFmpeg 的质量(流量)参数单位除了 k 即 kbits/sec 还有 bits/sec(这种情况的话,在数字后面不带任何单位),可能因 FFmpeg 的版本而有别。通过 HomeBrew 安装的 FFmpeg 一般都是 k,无需修改就能直接使用本文动作。

了解命令结构之后,就可以合上命令行界面,打开自动化工具,将 FFmpeg 命令打包成更易用的自动化动作。

用 Automator 分别处理音频和视频

了解 FFmpeg 的格式转换命令后,原理上完全可以搭配任何支持 Shell 脚本的自动化工具,但我习惯使用 Automator,几乎只有它可以自动区分音频和视频。4另外,FFmpeg 免费开源,Automator 系统原生,这一组合可以不花一分钱。

Alt text
在 Automator 动作中嵌入 FFmpeg 命令

和一般的自动化工具不同,Automator 可以区分不同文件类型,只在右键菜单中呈现有关动作,不会混杂不相关的动作。选中音频文件时不会出现视频动作,处理视频时同样不会被音频动作打搅。

具体设置在 Automator 编辑界面顶部的“Workflow receives current … in …”部分,除了圈定当前工作所接受的文件类型,还可以划定动作需要生效的应用范围,就音频处理而言,一般设置“audio files”和“Finder”,而视频处理则选择“movie files”和“Finder”。如果你还需要在 DEVONthink 等第三方文件管理器中处理音视频,也可以将应用范围扩大到“any application”。

Alt text
Automator 可以区分文件类型和当前应用等场景

其他专用与某一文件类型的自动化动作,也不妨做成 Automator 版本。不少自动化玩家讨论过“给快捷键解压”的话题(本站也有过),指出了自动化动作太多、快捷键“不够用”的现象,其实右键菜单中的 Automator 动作也是出路之一,可以分担快捷键的一部分压力。

较之 FFmpeg 的一身功夫,本文所涉之音视频转换,只是浅尝而已。正如图像处理领域的 imagemagick,或者文本编辑中的 sed 和 awk,FFmpeg 也是十八般武艺俱全。FFmpeg 的开发人员在 采访中 谈到,“FF”是“Fast Forward”(快速推进)之意,至于到底是取自视频播放器的一个常见功能,还是自嘲开发速度太慢,就不得而知。要之,FFmpeg 几乎是目前最可靠的音视频处理工具——无论比较对象是否开源——现成工具力有未逮之事,大可放心交给 FFmpeg“抄底”。


  1. 256GB 的 MacBook,这些演讲大概占了几十个 GB。
  2. 千万别提在线观看,没人乐意听着白噪音即将睡着时被 Grammarly 的广告炸醒。
  3. Automator 可以很方便地查看每个动作工作进度,这也是我使用它的原因之一。
  4. Hazel 也可以区分文件格式,但是 Hazel 一旦检测到文件就会自动运行,除非你有一整个文件夹的待处理文件,否则没有太大必要使用 Hazel。

author_avatar

Lawyer, macOS/iOS Automation Amateur