【问题标题】:Streaming audio to multiple AirPlay devices将音频流式传输到多个 AirPlay 设备
【发布时间】: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)。那么秘诀是什么? 谢谢

【问题讨论】:

    标签: macos core-audio airplay


    【解决方案1】:

    我在 7 月份就此事向 Apple 提出了错误报告,并在 10 月份得到了答复:

    工程部门已确定没有解决此问题的计划 问题。

    我已经回到 Apple 询问为什么该功能已被删除但不希望(及时)响应。

    对于它的价值,我认为你的方法是正确的,它类似于我过去为应用程序工作的方式。我怀疑 iTunes 使用音频单元或类似的东西来做多个扬声器。

    【讨论】:

    • 嗯,很遗憾,但感谢您的回复。如果您确实找到了另一种使其工作的方法,我将非常感谢您了解如何。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 2017-09-25
    • 1970-01-01
    相关资源
    最近更新 更多