在 OSX 上更改 AVAudioPlayer 的输出设备

Posted

技术标签:

【中文标题】在 OSX 上更改 AVAudioPlayer 的输出设备【英文标题】:Change the output device for AVAudioPlayer on OSX 【发布时间】:2014-10-21 13:21:48 【问题描述】:

我需要将音频从 AVAudioPlayer 播放到特定的音频设备,例如 USB 耳机。默认情况下,音频将按照系统默认设备设置播放。使用 QTKit,我能够使用 SetMovieAudioContext() 来完成这样的任务,但在 AVFoundation 中看不到等效项。如何在 OSX 上更改此设置?

【问题讨论】:

【参考方案1】:

改用NSSound:

获取具有CoreAudio 功能的音频设备列表。然后获取设备的唯一标识符:

//...
address.mSelector = kAudioDevicePropertyDeviceUID;
CFStringRef uid = NULL;
UInt32 size = sizeof(uid);
AudioObjectGetPropertyData(deviceId, &address, 0, NULL, &size, &uid);
//...

初始化声音项,设置playbackDeviceIdentifier属性值。

【讨论】:

谢谢 - 这是我们采用的方法。【参考方案2】:

向 Apple 开了一个 DTS 案例,他们说这是不可能的(因为我需要支持 10.8)。如果只需要支持 10.9 及以上版本,AVPlayerAudioDeviceSupport 应该可以工作。

【讨论】:

以上是关于在 OSX 上更改 AVAudioPlayer 的输出设备的主要内容,如果未能解决你的问题,请参考以下文章

AVAUdioPlayer - 更改当前 URL

AVAudioRecorder & AVAudioPlayer - 内置扬声器的声音输出,如何更改?

OSX 上 AppDelegate 类的更改

无法使用 AVAudioPlayer 播放专辑

AVAudioPlayer 即时更改声音 URL

iPhone SDK:使用核心音频 AVAudioPlayer 更改播放速度