在Mac上录制自己的麦克风声音,早已不是什么难事。但如果你想录下对方的声音——也就是从扬声器里传出的那部分——macOS系统反而会处处给你设限。这篇文章将带你理清背后的音频处理逻辑。
过去多年,唯一的解决办法是安装虚拟音频驱动(如BlackHole),并在每次通话前手动创建一个多输出设备。这个方法确实能用,但它也经常出问题。
我是MeetingRecorder的开发者,这是一款免费Mac应用,可以在本地录制通话双方的声音。自今年1月起,我已经用它完成了636场会议,累计284小时的录制。接下来我要分享的,不是纸上谈兵的架构图,而是经过日常高频使用验证的实战经验:如何用ScreenCaptureKit捕获系统音频,如何将两个独立的时钟校准到同一个文件里,以及如何在实时线程上做到一个样本都不丢。
我之所以开发这个工具,是因为我经历了太多次录音翻车:录完后发现只有我自己的声音,对方那头永远静默,而且常规的修复手段都无法持久生效。我想要的是一个系统音频能直接可用的录音工具——通话前不需要任何路由设置,通话后也不需要记得撤销任何操作。
问题可以用一段话概括:一场会议录音需要两路信号——你的麦克风(你说的话)和系统音频(对方从你的扬声器里传出的声音)。macOS将麦克风的权限直接开放给你,但系统却刻意不允许任何应用静默读取系统音频,因为那会构成隐私漏洞。所以,⌘⇧5和QuickTime只能录制你的麦克风。用这种方式录制通话,你只会得到清晰洪亮的自己,和一片沉默的对方。
旧方案:BlackHole与多输出设备。这个经典的变通做法需要安装一个虚拟音频驱动(例如BlackHole或老旧的Soundflower),让它在系统中显示为一个输出设备。然后你需要创建一个聚合/多输出设备,让Mac同时向你的扬声器和虚拟设备播放声音,再将系统输出指向该聚合设备,最后把虚拟设备当作输入源来录音。
这个方法确实可行,但它也有不少让人头疼的缺陷:
- 通话前需要手动配置,忘了设置就录不到对方;
- 通话后如果忘记恢复输出设备,声音可能会异常;
- 多输出设备偶尔会失联,或出现严重延迟,导致录音不同步;
- 频繁的安装、卸载虚拟驱动,也会让系统音频环境变得越来越脆弱。
正是因为这些痛点,我决定换一条完全不同的技术路径,让系统音频的采集变得稳定而自然,不再依赖手动配置和临时聚合设备。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.