【发布时间】:2014-10-21 13:21:48
【问题描述】:
我需要将音频从 AVAudioPlayer 播放到特定的音频设备,例如 USB 耳机。默认情况下,音频将按照系统默认设备设置播放。使用 QTKit,我能够使用 SetMovieAudioContext() 来完成这样的任务,但在 AVFoundation 中看不到等效项。如何在 OSX 上更改此设置?
【问题讨论】:
标签: macos cocoa avfoundation avaudioplayer
我需要将音频从 AVAudioPlayer 播放到特定的音频设备,例如 USB 耳机。默认情况下,音频将按照系统默认设备设置播放。使用 QTKit,我能够使用 SetMovieAudioContext() 来完成这样的任务,但在 AVFoundation 中看不到等效项。如何在 OSX 上更改此设置?
【问题讨论】:
标签: macos cocoa avfoundation avaudioplayer
改用NSSound:
获取具有CoreAudio 功能的音频设备列表。然后获取设备的唯一标识符:
//...
address.mSelector = kAudioDevicePropertyDeviceUID;
CFStringRef uid = NULL;
UInt32 size = sizeof(uid);
AudioObjectGetPropertyData(deviceId, &address, 0, NULL, &size, &uid);
//...
初始化声音项,设置playbackDeviceIdentifier属性值。
【讨论】:
向 Apple 开了一个 DTS 案例,他们说这是不可能的(因为我需要支持 10.8)。如果只需要支持 10.9 及以上版本,AVPlayerAudioDeviceSupport 应该可以工作。
【讨论】: