将音频流式传输到多个 AirPlay 设备
Posted
技术标签:
【中文标题】将音频流式传输到多个 AirPlay 设备【英文标题】:Streaming audio to multiple AirPlay devices 【发布时间】:2014-10-23 16:06:23 【问题描述】:有人知道如何将音频流式传输到多个 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)。那么秘诀是什么? 谢谢
【问题讨论】:
【参考方案1】:我在 7 月份就此事向 Apple 提出了错误报告,并在 10 月份得到了答复:
工程部门已确定没有解决此问题的计划 问题。
我已经回到 Apple 询问为什么该功能已被删除但不希望(及时)响应。
对于它的价值,我认为你的方法是正确的,它类似于我过去为应用程序工作的方式。我怀疑 iTunes 使用音频单元或类似的东西来做多个扬声器。
【讨论】:
嗯,很遗憾,但感谢您的回复。如果您确实找到了另一种使其工作的方法,我将非常感谢您了解如何。以上是关于将音频流式传输到多个 AirPlay 设备的主要内容,如果未能解决你的问题,请参考以下文章
Airplay:从 MPMoviePlayerController 播放电影只会导致音频流式传输到 Apple tv