2013-05-03 3 views
0

Я хочу знать, в чем разница между установкой частоты дискретизации звука в классе Android AudioRecord и классом записи Media? В аудио класса звукозаписывающих мы устанавливаем частоту дискретизации при создании объекта класса, какЧастота дискретизации в Android Audio Класс записи и класс MediaRecord

recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, 
              SampleRateInHz, RECORDER_CHANNELS,RECORDER_AUDIO_ENCODING, bufferSize); 

в то время как в классе MediaRecorder мы устанавливаем явно через вызов функции. т.е.

mrec.setAudioSamplingRate(samplingRate); 

Я попробовал оба, но эффект частоты дискретизации можно увидеть только во время записи звука во время записи не mediaRecorder класса через в. Я не могу понять, в чем разница между ними.

ответ

1

AS android sdk documentation, MediaRecord Используется для записи аудио и видео. Управление записью основано на простой машине состояний. Вы всегда будете использовать MediaRecord для записи звуков , если только вам необходимо получить доступ к исходным аудиоданным и обработать их (например, применить собственные эффекты DSP). В этом сценарии вы будете использовать AudioRecord. setAudioSamplingRate из MediaRecord делает то же самое, что и передавать SampleRateInHz на AudioRecord, устанавливая желаемую частоту дискретизации. Чем выше частота дискретизации, тем лучше качество звука и диапазон частот, которые вы получите. Идеальное ухо умов может слышать звук от 20 до 20000 Гц. Если вы установите частоту дискретизации до 4100 Гц, тогда ваш частотный отклик будет равен 4100/2, что составляет почти 20000 Гц. Однако поддерживаемый диапазон частот устройствами отличается. вы всегда должны проверить, поддерживает ли устройство требуемую частоту.

Для того, чтобы проверить, является ли конкретная частота работы, вы можете использовать следующий фрагмент кода:

int bufferSize = AudioRecord.getMinBufferSize(rate[i],AudioFormat.CHANNEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT); 

если значение BufferSize больше, чем 0, то Вам requency вы предоставили поддерживается устройством.

+0

Спасибо за подробный ответ, но я все еще сталкиваюсь с той же проблемой, что и setAudioSamplingRate не влияет на звук звука, а затем фоновый шум уменьшается, поскольку частота дискретизации выше. но если вы измените значение в звуковом классе записи, его частота и шаг также будут изменены. это причина, по которой я должен записывать аудио и видео отдельно. –

+0

Какова ваша проблема со звуком? Пожалуйста, дайте нам код на вашем «MediaRecord». Какие эффекты вы хотите применить к звуку? Изучали ли вы AudioFx? –