如何使用Core Audio设置/获取音量?

时间:2012-11-04 15:23:58

标签: macos audio core-audio volume

我希望能够使用Core Audio获取和设置系统音量级别。我已经按照其他线程上的代码: objective c audio meter

但是,我调用AudioHardwareServiceHasProperty来查找kAudioHardwareServiceDeviceProperty_VirtualMasterVolume属性会返回false。为什么会发生这种情况,我该如何解决这个问题?我应该采用什么方法来获取和设置Core Audio的系统音量?

1 个答案:

答案 0 :(得分:3)

您是否尝试过kAudioDevicePropertyVolumeScalar:

UInt32 channel = 1; // Channel 0  is master, if available
AudioObjectPropertyAddress prop = { 
    kAudioDevicePropertyVolumeScalar, 
    kAudioDevicePropertyScopeOutput,
    channel 
};

if(!AudioObjectHasProperty(deviceID, &prop))
    // error

Float32 volume;
UInt32 dataSize = sizeof(volume);
OSStatus result = AudioObjectGetPropertyData(deviceID, &prop, 0, NULL, &dataSize, &volume);

if(kAudioHardwareNoError != result)
    // error