【问题标题】:How do I set/get the volume level with Core Audio?如何使用 Core Audio 设置/获取音量级别?
【发布时间】:2012-11-04 15:23:58
【问题描述】:
我希望能够使用 Core Audio 获取和设置系统音量。我已经遵循了另一个线程上的代码:
objective c audio meter
但是,我调用 AudioHardwareServiceHasProperty 以查找 kAudioHardwareServiceDeviceProperty_VirtualMasterVolume 属性返回 false。为什么会发生这种情况,我该如何解决?我应该采取什么方法来获取和设置 Core Audio 的系统音量?
【问题讨论】:
标签:
macos
audio
core-audio
volume
【解决方案1】:
您是否尝试过 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