Получить уровень звука с устройства во время записи в C ++ - PullRequest
0 голосов
/ 10 октября 2010

Я хочу получить уровень звука, чтобы отображать его в своем приложении SDL (платформа Linux) при записи звука.Как я могу это сделать?Я использую FMOD API в своем приложении, но для записи я использую SoX (разветвление и использование exec () для его настройки - возможно, это можно сделать лучше, но я не знаю как :(). Должен ли я использовать некоторыеФункция SoX, FMOD API или, возможно, прямой доступ к / dev / dsp для получения звуковых данных?

Ответы [ 2 ]

1 голос
/ 11 октября 2010

Вы можете сделать запись в FMOD, если хотите.Можно использовать API-интерфейсы FMOD, такие как System :: recordStart и System :: getRecordDriverInfo.FMOD поставляет примеры записи, которые вы можете использовать в качестве основы для вашего решения.

Специально для получения уровня звука, если вы хотите сделать это во время выполнения, вы можете использовать Channel :: getWaveData, который даст вамснимок текущего воспроизводимого аудио, для этого вам нужно будет воспроизвести записанные данные.

Или же вы можете использовать Sound :: lock / Sound :: unlock, чтобы получить доступ к записанным звуковым данным, если это не так.Не воспроизводите.

Если у вас есть доступ к звуковым данным любым из этих способов, вы можете прочитать значения, чтобы получить информацию об уровне звука / пике.

1 голос
/ 10 октября 2010

Нет, по крайней мере, вы должны использовать «безопасный» ALSA API.Но вы должны рассмотреть возможность использования чего-то более высокого, такого как Gstreamer или PulseAudio.

...