场景痛点及解决方案
在屏幕分享等应用场景中,常需要共享系统音频给对方,而 Mac 电脑默认声卡不支持采集系统音频,所以在 Mac 电脑上共享系统音频比较困难。基于此,TRTC 提供了在 Mac 端录制系统音频的功能来满足该场景需求,具体接入步骤见下文。
集成说明
步骤1:集成 TRTCPrivilegedTask 库
SDK 需要使用 TRTCPrivilegedTask 库来获取 root 权限,从而将虚拟声卡插件 TRTCAudioPlugin.driver 安装至系统目录
/Library/Audio/Plug-Ins/HAL
。1. 打开您当前项目根目录下的
Podfile
文件,添加下面的内容:platform :osx, '10.10'target 'Your Target' dopod 'TRTCPrivilegedTask', :podspec => 'https://pod-1252463788.cos.ap-guangzhou.myqcloud.com/liteavsdkspec/TRTCPrivilegedTask.podspec'end
2. 执行
pod install
命令安装 TRTCPrivilegedTask 库。1. 下载 TRTCPrivilegedTask 库。
2. 打开您的 Xcode 工程项目,导入解压后的文件 libPrivilegedTask.a 到您的工程。
3. 选择要运行的 target,选中 Build Phases 项,展开Link Binary with Libraries 项,单击底下的**+**,添加依赖库
libPrivilegedTask.a
。
步骤2:取消 App Sandbox 功能
在 App 的 entitlements 描述文件中,删除 App Sandbox 条目。
步骤3:虚拟声卡插件打包
在 集成 TRTCPrivilegedTask 库 和 取消 App Sandbox 功能 后,首次使用系统音频录制功能时,SDK 会从网络下载虚拟声卡插件并安装。如果想加速这个过程,可以将放置在
TXLiteAVSDK_TRTC_Mac.framework
的 PlugIns 目录下的虚拟声卡插件 TRTCAudioPlugin.driver
打包至 App Bundle 的 Resources 目录。如下图:
或者拷贝至 App Bundle 的 PlugIns 目录。如下图:
步骤4:开始系统声音采集
TRTCCloud *trtcCloud = [TRTCCloud sharedInstance];[trtcCloud startLocalAudio];[trtcCloud startSystemAudioLoopback];
注意
集成 TRTCPrivilegedTask 库和取消 App Sandbox 功能后,首次调用 startSystemAudioLoopback 会获取 root 权限。如下图:
在用户单击好后,开始自动安装虚拟声卡插件。
步骤5:停止系统声音采集
TRTCCloud *trtcCloud = [TRTCCloud sharedInstance];[trtcCloud stopSystemAudioLoopback];
步骤6:设置系统声音采集音量
TRTCCloud *trtcCloud = [TRTCCloud sharedInstance];[trtcCloud setSystemAudioLoopbackVolume:80];
集成小结
TRTC 在 Mac 端是通过虚拟声卡插件
TRTCAudioPlugin.driver
来录制系统音频。这个虚拟声卡插件需要拷贝至系统目录 /Library/Audio/Plug-Ins/HAL
并重启音频服务后生效。 可以通过 启动台
的 其他
文件夹中 音频 MIDI 设置
应用来检查虚拟声卡插件是否安装成功。在该应用的设备列表中,有名称为 “TRTC Audio Device” 的设备即表明 TRTC 的虚拟声卡插件安装成功。 上述步骤中的 集成 TRTCPrivilegedTask 库 和 取消 App Sandbox 功能 是为 TRTC SDK 自动安装虚拟声卡插件提供 root 权限。如不集成 TRTCPrivilegedTask 库并保留 App Sandbox 功能, SDK 不会自动安装虚拟声卡插件,但如果系统中已安装好虚拟声卡插件,录制系统音频的功能仍然可以正常使用。
说明
除上述方案外,也可以手动安装虚拟声卡插件来集成该功能:
1. 将放置在
TXLiteAVSDK_TRTC_Mac.framework
的 PlugIns 目录下的 TRTCAudioPlugin.driver
拷贝至系统目录 /Library/Audio/Plug-Ins/HAL
。2. 重启系统的音频服务。
sudo cp -R TXLiteAVSDK_TRTC_Mac.framework/PlugIns/TRTCAudioPlugin.driver /Library/Audio/Plug-Ins/HALsudo kill -9 `ps ax|grep 'coreaudio[a-z]' |awk '{print $1}'`
注意事项
App Sandbox 功能取消后,App 内获取到的用户路径会发生变化。通过 NSSearchPathForDirectoriesInDomains 等系统方法获取到的
~/Documents
、 ~/Library
等目录会从沙盒目录切换成用户目录 /Users/用户名/Documents
、 /Users/用户名/Library
。集成 TRTCPrivilegedTask 库,可能会使 App 无法上架到 Mac App Store。SDK 自动安装虚拟声卡插件时需要关闭 App Sandbox 功能,并获取 root 权限,App 可能会无法上架到 Mac App Store。详情请参见 App Store Review Guidelines 。如需上架 App Store 或者使用 Sandbox 功能,建议选择手动安装虚拟音频插件的方案。