Я отображаю измеритель уровня звука для записи и воспроизведения этой записи.Значения уровня от 0 до 1,0.Я рисую полосу, представляющую значение 0 - 1.0 на экране.Чтобы получить уровни звука для записи, я использую:
OSStatus status = AudioQueueGetProperty(aqData.mQueue, kAudioQueueProperty_CurrentLevelMeter, aqLevelMeterState, &levelMeterStateDataSize);
float level = aqLevelMeterState[0].mAveragePower;
Для воспроизведения я использую:
// soundPlayer is an AVSoundPlayer
float level = [soundPlayer averagePowerForChannel:0];
Я нормализую уровень от 0 до 1,0.
Прямо сейчас они выглядят очень по-разному, показывая бар.Шкала индикатора записи находится на нижнем уровне, а индикатор воспроизведения, при воспроизведении того же записанного звука, остается посередине.
Я пытаюсь заставить эти два метра выглядеть одинаково, но я довольно плохо знаком с аудио.Я провел небольшое исследование и знаю, что запись возвращает значение RMS, а воспроизведение возвращает его в децибелах.
Может ли кто-нибудь, кто разбирается в аудио, указать мне на ссылки или документы или дать небольшую подсказку, чтобы разобраться в этих двух значениях, чтобы я мог заставить их выглядеть одинаково?