任何人都知道如何将音频流式传输到多个AirPlay目的地?显然,这可以通过Core Audio在过去的某个时刻实现,但在10.9和10.10,这似乎是不可能的。 iTunes做到了,那么秘诀是什么?这是我试图看到的一些代码,如果我可以让它工作:
OSStatus err = 0;
UInt32 size = sizeof(UInt32);
SSAudioSource * targetSource = airplayDevice.airplaySources[0];
AudioDeviceID airPlayDeviceID = targetSource.deviceID;
SSAudioSource * source1 = airplayDevice.airplaySources[0];
SSAudioSource * source2 = airplayDevice.airplaySources[1];
SSAudioSource * source3 = airplayDevice.airplaySources[2];
AudioDeviceID alldevices[] = {source3.sourceID, source2.sourceID, source1.sourceID};
AudioObjectPropertyAddress addr;
addr.mSelector = kAudioDevicePropertyDataSource;
addr.mScope = kAudioDevicePropertyScopeOutput;
addr.mElement = kAudioObjectPropertyElementMaster;
// Set the 'AirPlay' device to point to all of its sources...
err = AudioObjectSetPropertyData(airPlayDeviceID, &addr, 0, nil, size, alldevices);
AudioObjectPropertyAddress audioDevicesAddress = {
kAudioHardwarePropertyDefaultOutputDevice,
kAudioObjectPropertyScopeGlobal,
kAudioObjectPropertyElementMaster
};
// ...now set the system output to point at the 'AirPlay' device
err = AudioObjectSetPropertyData(kAudioObjectSystemObject, &audioDevicesAddress, 0, nil, size, &airPlayDeviceID);
无论我如何安排阵列中的设备,声音都只来自阵列的第一个设备(索引0)。那么秘密是什么? 感谢
答案 0 :(得分:1)
我在7月份向Apple提出了一个错误报告,并于10月份得到了回复:
工程已确定没有计划解决这个问题 问题。
我已经回到苹果公司,询问为什么功能已被删除,但对(及时)响应没有希望。
我认为你的方法是正确的,它与我过去为应用程序工作的方式类似。我怀疑iTunes使用音频单元或类似的东西做多个扬声器。