ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Mac系统声音录制全攻略:从Core Audio到DesktopAudio

Mac系统声音录制全攻略:从Core Audio到DesktopAudio 在 Mac 上最容易被忽略又最让人抓狂的需求之一就是“把电脑正在播放的声音录下来”。截屏录屏大家都会但当你真的想录一段游戏原声、一场线上分享、或者一段流媒体音乐时系统屏幕录制默认只能收到麦克风收不到系统内部的声音。这个问题不解决你可能会被迫用手机去录音或者对着电脑外放继续录最后得到一段充满环境噪音的音频。DesktopAudio 这个项目的定位恰好就是“record what your Mac plays”。从 Hacker News 的展示信息看它要做的不是又一个录音机而是把 Mac 当前正在输出的音频直接捕获下来保存成文件。这类工具过去在 macOS 上一直很碎片化要么依赖虚拟声卡要么依赖付费软件。DesktopAudio 的切入点是把这个过程做成一个更直接的工具。这篇文章不打算只复述项目简介。我更想从 macOS 系统音频的底层逻辑讲清楚为什么 Mac 不能像 Windows 那样直接“录制立体声混音”DesktopAudio 这类工具到底在系统里做了什么如果你也想实现内录应该如何验证、配置和排错读完你会意识到工具只是表层理解音频管线才能真正解决问题。1. 为什么 Mac 系统录音这么麻烦先从一个常见场景说起。你开了一场在线会议里面有人讲了一段很有价值的内容你想把这段分享录成音频保存。打开 QuickTime Player选择“新建录音”点击录制最后发现录下来的全是你自己的麦克风声音对方的声音消失了。这不是你操作不对而是 macOS 的默认设计如此。macOS 的录音入口很单一应用程序通常只能访问“输入设备”也就是麦克风或音频接口。系统正在播放的声音属于“输出设备”它不会自动被当成录音源。想要录到系统播放的声音必须想办法在声音从输出设备出去之前复制一份到输入路径。传统上有几种做法用物理方式把耳机口和麦克风口用音频线连起来利用声卡的环回功能实现内录。使用第三方软件比如虚拟声卡工具在系统里安装一个假的音频设备。使用带“内录”功能的音频接口或声卡硬件。对于普通用户来说物理连线很麻烦而且新版 MacBook 上连 3.5mm 耳机口都要靠转接。虚拟声卡方案是目前最主流、也最可靠的路径。DesktopAudio 这类工具本质上就是在帮你自动完成“虚拟声卡 录音程序”的组合操作。所以第一个结论是Mac 系统录音麻烦根源不是缺少录音软件而是系统没有开放“输出即输入”的直接通道。所有内录工具都是在想办法补上这个缺失的环节。2. DesktopAudio 是什么一个系统声音的“复制通道”从项目名 “DesktopAudio, a tool to record what your Mac plays” 来看它的核心功能非常明确捕获 Mac 播放出来的声音并记录下来。通俗地理解电脑播放音乐时声音信号会从音频应用流向系统音频引擎再由系统音频引擎交给声卡。DesktopAudio 要做的事情就是在这个链条中间插入一个“分流器”它创建一个虚拟音频设备让播放的声音经过这个设备时被复制一份。复制出来的音频流可以继续传给扬声器播放也可以直接写入录音文件。如果看过 Hacker News 上类似项目的讨论你会发现开发者圈子里对“内录”的需求其实一直很旺盛。有人用来做游戏评测截取素材有人用来录在线直播课有人用来给视频会议录音还有人想录制播客单轨。虽然市面上已经有 BlackHole、Loopback、Audio Hijack 等成熟方案但它们的配置路径分散在驱动安装、音频设备设置、录音软件之间。DesktopAudio 这类新工具的优势是尝试把这一整个流程收敛到一个应用里。这里需要说明文章写作时 DesktopAudio 可能还处于比较早期的版本具体支持哪些格式、是否开源、是否免费要以项目主页和实际发布包为准。但无论它怎么实现底层要解决的依然是虚拟音频设备和音频权限问题。第二个结论是DesktopAudio 不是“魔法”它是一个更友好的虚拟音频链路封装工具。真正决定你能不能录到系统声音的是驱动、设备、权限和采样率这些基础配置。3. macOS 音频录制的核心概念要搞懂 DesktopAudio必须先理解几个 macOS 音频概念。它们不复杂但把概念理顺之后再遇到录制失败就不会一头雾水。3.1 Core Audio 与音频设备macOS 的音频功能由 Core Audio 框架驱动。上层无论是音乐播放器、浏览器还是游戏都会把音频数据交给 Core Audio再由 Core Audio 决定把数据送到哪个输出设备。音频设备在系统中分为两类输入设备和输出设备。麦克风是输入设备扬声器、耳机是输出设备。正常情况下输入和输出是两条独立的通道互不相关。内录工具要做的就是用一个虚拟设备把输出通道复制到输入通道。3.2 虚拟声卡的工作方式虚拟声卡是一段运行在系统层的驱动代码。它模拟出一个真实的音频设备对输出应用来说它是一个输出设备对录音应用来说它又是一个输入设备。你可以把它理解为一条“数字音频线”。播放器把声音送到这条线上线的一端连接录音软件另一端还可以选择连接物理扬声器。DesktopAudio 如果内置了虚拟声卡驱动那么安装完它之后你会在“音频 MIDI 设置”里看到一个新增的设备。如果没有看到那说明驱动没有正确加载后续录制一定会失败。3.3 多输出设备录制系统声音时有一个困扰如果系统默认输出被设置为虚拟声卡扬声器就不出声了。你录到了音频但自己听不到播放内容。解决办法是创建一个“多输出设备”Multi-Output Device把同一个音频流同时发送给扬声器和虚拟声卡。macOS 自带的“音频 MIDI 设置”应用就能创建这种聚合设备。这个细节很重要。很多新手录制到一半发现没声音第一反应是音频坏了其实是输出通道被切到了虚拟设备物理扬声器被静音了。3.4 权限问题macOS 对录音和录屏都有隐私保护机制。访问麦克风需要“麦克风权限”录屏需要“屏幕录制权限”。当虚拟声卡被当成输入设备时录音应用也可能触发麦克风权限申请。如果你在系统设置里没有给录音工具授权那么即使虚拟声卡安装正确应用也可能只能看到一个“默认输入设备”却拿不到音频数据。DesktopAudio 首次运行时如果弹出权限提示最好在“系统设置 → 隐私与安全性”中检查一遍对应项。对比维度硬件物理内录虚拟声卡链路系统自带 QuickTime是否需要硬件需要音频线/接口不需要不需要能否录制系统音频可以可以只能录麦克风配置复杂度中中偏上低典型工具声卡/调音台DesktopAudio、BlackHole、LoopbackQuickTime Player4. 环境准备与前置条件在开始配置内录之前先确认你的环境。虽然不同工具要求略有差异但基本前置条件是一致的。4.1 系统版本与硬件DesktopAudio 这类工具通常需要较新的 macOS 版本。如果系统太老可能无法加载新版驱动或者无法通过隐私权限审批。建议使用 macOS 12 Monterey 以上版本但具体兼容性应以项目官方说明为准。如果你的电脑是 Apple SiliconM1/M2/M3注意驱动和安装包必须支持 arm64 架构。部分旧驱动没有适配新系统安装后会出现“未能载入”的提示。4.2 安装 Homebrew下面的命令行演示会用 Homebrew 安装一个示例虚拟声卡 BlackHole。如果你已经安装过 Homebrew可以跳过这一步。/bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)安装过程中会要求输入管理员密码并可能等待较长时间。安装完成后在终端执行brew --version确认安装成功。4.3 下载 DesktopAudio 或同类工具DesktopAudio 如果官方提供了安装包建议优先从项目 GitHub Releases 页面或官方网站下载。不要从第三方论坛下载来路不明的版本尤其不要使用所谓“破解版”macOS 的 Gatekeeper 和恶意软件防护都不是摆设。下载完成后双击安装包按提示拖入 Applications 文件夹或安装驱动。安装过程中如果弹出“系统扩展已更新”或“允许来自 XXX 的软件”需要输入密码确认。4.4 安装虚拟声卡示例为了演示底层链路我们可以先安装 BlackHole。它是一个开源虚拟声卡安装后会在系统中出现名为 “BlackHole 2ch” 的音频设备。brew install blackhole-2ch如果没有 Homebrew 相关安装源也可以从 BlackHole 的官方 GitHub 仓库下载安装包手动安装。安装完成后建议先重启一次系统确保驱动加载正常。5. 核心流程拆解无论你用 DesktopAudio还是用 BlackHole ffmpeg核心流程都是一样的。下面拆成六步方便对照。5.1 安装并确认虚拟音频设备虚拟声卡安装成功后打开“应用程序 → 实用工具 → 音频 MIDI 设置”在左侧设备列表里应该能看到 BlackHole 2ch或 DesktopAudio 自带的虚拟设备。这一步的作用是确保驱动真正被系统识别。看不到设备后面所有操作都不用继续。5.2 设置麦克风/录屏权限如果使用 DesktopAudio 录音首次打开时如果系统提示需要麦克风或屏幕录制权限请在“系统设置 → 隐私与安全性”中允许。如果之前拒绝过需要去设置里手动打开。注意录制系统声音不一定需要屏幕录制权限只有同时录制屏幕时才需要。但有些工具为了监测当前播放状态可能会请求屏幕录制权限。只录音频时麦克风权限是更常见的触发项。5.3 创建多输出设备可选但推荐如果你想在录音的同时能通过扬声器或耳机听到正在播放的内容需要创建一个多输出设备。打开“音频 MIDI 设置”点击左下角的“”号选择“创建多输出设备”然后勾选“BlackHole 2ch”和“扬声器”。在系统偏好设置里把默认输出设备切换到这个多输出设备。这样做的结果是音频播放时既会经过虚拟声卡被录制也会正常从扬声器出来。5.4 启动录制打开 DesktopAudio选择需要录制的应用或系统音频源点击录制按钮。如果使用命令行工具则选择 BlackHole 作为输入设备。这一步的关键是确认应用使用的音频输入确实是虚拟设备。如果你开了一个会议软件但会议软件只录麦克风当然录不到对方声音。5.5 停止录制并检查文件录制结束后停止并保存文件。不要急着发布先用播放器或命令行工具确认文件时长和音量正常。5.6 清理与恢复系统设置录制完成后把系统默认输入/输出设备恢复为原始设备避免影响后续正常使用。这也是很多用户容易忽略的一步。6. 完整示例与代码实现这里用一个可复现的命令行工作流演示 Mac 系统内录。即使你最后不用 ffmpeg这个流程也能帮你理解 DesktopAudio 背后做了什么。6.1 查看当前音频设备先用系统命令确认虚拟声卡是否已被识别。system_profiler SPAudioDataType输出中会列出所有音频设备包括输入、输出和虚拟设备。重点找 “BlackHole 2ch” 是否出现在输入设备列表里。6.2 安装 ffmpeg录制命令行示例用 ffmpeg 完成。先安装 ffmpegbrew install ffmpeg安装时间取决于网络和机器性能通常需要几分钟。6.3 列出所有音频输入设备运行下面的命令可以确认 ffmpeg 能看到的录音源名称。ffmpeg -f avfoundation -list_devices true -i 21 | grep -i audio你会看到类似这样的输出[AVFoundation input device ...] (audio): BlackHole 2ch [AVFoundation input device ...] (audio): MacBook Pro Microphone注意不同系统上的设备名可能不同。如果虚拟声卡没有出现在列表说明驱动没有正确安装或未被授权。6.4 录制一段系统音频将 BlackHole 2ch 作为输入设备录制 30 秒的音频并保存为 m4a 文件。ffmpeg -f avfoundation -i :BlackHole 2ch -t 30 -c:a aac -b:a 192k desktop-audio.m4a参数说明-f avfoundation指定 macOS 的音视频采集框架。-i :BlackHole 2ch输入设备。前面的空冒号表示没有视频输入后面是音频设备名。-t 30录制时长 30 秒。-c:a aac -b:a 192k使用 AAC 编码码率 192kbps。如果录制时需要同时录麦克风和系统声音可以把输入设备写成多个设备或用桌面汇编工具混合。这里不展开先跑通最小流程。6.5 验证录制文件录制完成后用 afinfo 或 ffprobe 查看文件信息。afinfo desktop-audio.m4a输出会包含文件格式、采样率、时长、通道数、码率等信息。重点看时长是否和你预置的 30 秒接近通道数和采样率是否符合预期。也可以用 ffprobe 快速读取时长ffprobe -v error -show_entries formatduration -of defaultnoprint_wrappers1 desktop-audio.m4a如果文件时长明显过短说明录制过程中音频流可能中断需要检查虚拟声卡和系统权限。7. 运行结果与效果验证命令行录制完成后不能只看到文件存在就认为成功。建议按下面顺序验证。检查文件大小是否大于 0。0 字节文件说明没有任何音频数据写入。用 afinfo 查看时长是否和实际播放时长一致。用播放器播放文件确认前几秒和中间段落是否有声音。如果你录的是视频会议回放时要确认系统声音和麦克风声音比例是否合理。一个有效的验证方法是录制前故意播放一段带明显时间戳的音频比如“现在是第 10 秒”然后回放检查对应时间点是否被捕获。这样可以快速区分“没抓到系统音频”和“抓到了但音量太小”。如果录制失败先看你是哪一步出了问题如果系统声音完全没有优先检查默认输出设备是否为虚拟声卡或多输出设备。如果只有麦克风声音检查录音应用选择的输入设备是不是虚拟声卡。如果出现“未授权”提示去系统设置里重新设置隐私权限。8. 常见问题与排查思路下面是 Mac 系统内录时最常遇到的几类问题建议收藏后再配置时对照使用。问题现象可能原因排查方式解决方案录出来的文件没有声音默认输出设备没有指向虚拟声卡打开“音频 MIDI 设置”检查输出设备将虚拟声卡或聚合设备设为默认输出只能录到麦克风没有系统声音录音应用选择的输入设备是麦克风查看录音软件音频设置将输入设备切换到虚拟声卡录音时扬声器没有声音输出设备被直接切换到了虚拟声卡检查物理扬声器是否被静音创建多输出设备同时连接扬声器和虚拟声卡权限弹窗没有出现之前拒绝过权限申请在系统设置中查看隐私权限到“隐私与安全性”手动允许对应应用驱动安装后设备列表没有出现驱动被系统阻止或未加载重启系统查看安装日志重新安装驱动并在安全设置中允许系统扩展采样率不一致导致音调怪异虚拟声卡和应用采样率不匹配检查“音频 MIDI 设置”中设备采样率将多个设备的采样率统一为 48kHzmacOS 升级后工具失效新系统没有兼容旧驱动查看项目更新日志升级到最新版工具或驱动遇到问题时建议先从上到下排除环境因素再怀疑工具本身。很多时候内录失败不是工具的问题而是默认设备或者权限没配对。9. 最佳实践与工程建议经过上面的流程你已经可以把 Mac 的系统音频录制跑通。如果要在真实项目或日常工作中稳定使用还有几个工程层面的建议值得注意。9.1 录音前先建立“默认配置”不要把“临场切换设备”当成习惯。建议在电脑里维护一套固定的录音配置虚拟声卡设备使用固定名称。默认输出永远指向一个“扬声器 虚拟声卡”的多输出设备。录音软件里默认选择虚拟声卡作为输入。这样每次录制前只需要打开工具点开始不需要频繁切换系统设置也能减少误操作。9.2 根据用途选择音频格式如果你是录播客或视频解说AAC 192kbps 已经足够文件小、兼容性好。如果你要进入专业剪辑流程建议录制无损格式比如 WAV 或 ALAC。ffmpeg 录制 WAV 可以这样写ffmpeg -f avfoundation -i :BlackHole 2ch -t 60 -c:a pcm_s16le desktop-audio.wav无损文件体积更大但剪辑时保留的音频细节更多。9.3 注意版权与隐私边界录音系统播放的声音可能涉及音乐版权、会议保密内容、他人隐私。在录制前要先确认是否有合法授权不要在未经授权的情况下传播录制内容。企业培训、课程录制、产品演示等场景最好和涉及方提前沟通。9.4 使用脚本自动化录制如果你经常需要定时或批量录制可以写一个简单的 shell 脚本。把设备名、输出路径、录制时长作为参数传进去配合cron或launchd使用。#!/bin/bash OUTPUT_DIR$HOME/Recordings OUTPUT_FILE$OUTPUT_DIR/$(date %Y%m%d-%H%M%S).m4a ffmpeg -f avfoundation -i :BlackHole 2ch -t $1 -c:a aac -b:a 192k $OUTPUT_FILE echo Saved to $OUTPUT_FILE脚本先创建输出目录再用时间戳生成文件名避免覆盖。执行时传入录制秒数./record.sh 600。9.5 始终从可信渠道获取工具DesktopAudio 如果还处于早期版本代码更新可能很快。使用前关注项目仓库的 Issue 和 Release 页面了解已知 bug 和兼容性说明。不要从搜索引擎广告位下载所谓的最新版更不要安装签名异常的扩展。9.6 为重要录制预留测试时间无论是录制课程还是线上活动提前 5 分钟做一次 10 秒的试录比事后修复更有效。试录时重点检查系统声音有没有进文件播放端是否无声以及文件时长是否正确。这个习惯可以避免 90% 的翻车场景。10. 总结与后续学习方向DesktopAudio 这类工具解决的是 macOS 上长期存在的一个“系统级缺口”默认情况下系统播放的声音无法直接成为录音源。表面上它只是个录音工具实际却涉及 Core Audio、虚拟声卡、多输出设备和隐私权限这一整套链路。如果你已经用命令行跑通了 BlackHole ffmpeg 的内录流程再回去看 DesktopAudio 的界面和配置项会发现很多选项都有了上下文。反过来如果只是想快速录一段系统声音DesktopAudio 提供的“一点即录”体验也比手动配置虚拟声卡和命令行更友好。下一步值得深入的方向包括用 Audio Unit 对录制音频做实时处理用 Aggregate Device 把多个音频源混合成一路或者用 Swift 调用 Core Audio API 自己写一个录制工具。内录只是第一步真正有意思的是看懂 macOS 音频系统之后你还能控制声音从哪里来、到哪里去、经过什么处理。把系统声音录下来听起来是个小需求但它背后是 macOS 一直不太亲民的音频架构。DesktopAudio 的直接价值在于补上这个缺口而更深层的价值是让开发者重新注意到系统音频自动化的可能性。建议你在配置完成后把虚拟声卡、权限、默认输出这三个关键点记在心里下次无论换什么工具都能快速上手。
返回列表