直接上代码:
/// <summary>获取麦克风音量</summary>
/// <returns>麦克风的音量数值</returns>
private float GetVolume()
{
float levelMax = 0;
if (Microphone.IsRecording(m_deviceNameMIC))
{
float[] samples = new float[128];
int startPosition = Microphone.GetPosition(m_deviceNameMIC) - (128 + 1);
if (startPosition >= 0)
{//当麦克风还未正式启动时,该值会为负值,AudioClip.GetData函数会报错
m_resultClip.GetData(samples, startPosition);
for (int i = 0; i < 128; i++)
{
float wavePeak = samples[i];
if (levelMax < wavePeak)
{
levelMax = wavePeak;
}
}
levelMax = levelMax * 99;
Debug.Log("麦克风音量:" + levelMax);
}
}
return levelMax;
}
m_deviceNameMIC
:需要获取音量的麦克风设备名称m_resultClip
:麦克风的AudioClip
对象
参考链接: