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

Posted

技术标签:

【中文标题】如何使用 Core Audio 设置/获取音量级别?【英文标题】:How do I set/get the volume level with Core Audio? 【发布时间】:2012-11-04 15:23:58 【问题描述】:

我希望能够使用 Core Audio 获取和设置系统音量。我已经遵循了另一个线程上的代码: objective c audio meter

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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于如何使用 Core Audio 设置/获取音量级别?的主要内容,如果未能解决你的问题,请参考以下文章

Core Audio(音频单元)音频会话和 MPVolumeView

实现 Core Audio API 事件

Core Audio:用于提升信号电平的音频单元

如何在iOS上获得音量级别和音量更改通知?

播放 <video> 时将 <audio> 元素设置为 50% 的音量

java - 如何从java中的麦克风获取dB(或任何类型的音量)级别?