Android AudioRecord – использование короткого массива или массива байтов?

Я работаю над приложением для Android, которое записывает звук. Для лучшего качества звука лучше использовать буфер shorts во время чтения?

//aRecorder.read(shortBuffer, 0, shortBuffer.length);
aRecorder.read(byteBuffer, 0, byteBuffer.length);

Использование short[] — это не то же самое, что использование byte[] и рассмотрение выборки из 2 bytes(byteBuf[i] и byteBuf[i+1])? Если я использую short[], я все равно должен преобразовать его в ByteBuffer, чтобы записать в файл.

Я спрашиваю об этом, потому что хочу знать, если я переключусь на буфер из shorts, мои записи будут более точными? Например, shortBuffer[0] содержит ту же информацию, что и byteBuffer[0] и byteBuffer[1] ?

Записи могут быть в 16-битном формате PCM или 8-битном формате PCM (пользователь может выбрать частоту дискретизации, количество каналов, PCM 16 или 8 и т. д.)

Я должен отметить, что выходной файл будет в формате WAV.


person Alexandru Circus    schedule 01.05.2013    source источник


Ответы (1)


Нет никакой разницы между использованием буфера Short или Byte, это всего лишь два представления одних и тех же базовых данных.

Единственная разница, о которой я могу думать, заключается в том, что вы ограничиваете свои возможности доступа к данным во время записи, поскольку вкратце ваше минимальное представление данных будет 16 бит (короткий размер), но опять же вы можете просто xИ любая часть короткого объект, чтобы получить один из его байтов.

если вы выполняете какую-либо обработку звука в реальном времени, вам лучше использовать байт для упрощения минимизации данных.

person Mr.Me    schedule 01.05.2013
comment
Спасибо, я продолжу дальше с массивом байтов, так как мне удалось применить к нему усиление во время записи и вычислить максимальную амплитуду при каждом обратном вызове записи. Переход на короткую позицию потребовал бы изменения моего алгоритма усиления, что, однако, доставило мне много головной боли. - person Alexandru Circus; 02.05.2013
comment
@AlexandruCircus: Удалось ли вам рассчитать максимальное значение из AudioRecord, используя массив байтов. В большинстве рабочих примеров используется короткий массив. Был бы рад, если бы вы помогли мне рассчитать максимум из массива байтов (при записи звука с помощью AudioRecord). ТИА. - person Kingston; 20.07.2016