Извлечь образец из аудиофайла RAW на Android

У меня есть приложение для Android, которое записывает АУДИО в необработанном формате, как я могу извлечь образец записи? например, если в необработанном файле записано 3 минуты звука, я хотел бы извлечь 20 секунд содержимого из произвольной начальной позиции, возможно ли это?


person Hector    schedule 13.06.2013    source источник


Ответы (1)


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

Количество байт аудиоданных в секунду равно sampleRate * bytesPerSample * numChannels.

Тогда начальное смещение в байтах будет равно bytesPerSecond * offsetInSeconds, а размер фрагмента для чтения (в байтах) будет равен bytesPerSecond * lengthInSeconds.

person Michael    schedule 13.06.2013
comment
Майкл, спасибо за ваш ответ, я узнаю частоту дискретизации и количество каналов, откуда мне взять байты на выборку? это байты, которые мне нужны в моем извлеченном файле или исходной полной записи? - person Hector; 13.06.2013
comment
Я предполагаю, что вы указали, использовать ли 8 или 16 бит на семпл, когда создавали свой рекордер. Количество байтов на выборку равно битовой глубине, деленной на 8. - person Michael; 13.06.2013
comment
я использую 16 бит. Должен был упомянуть, что я записываю файлы формата .WAV. Еще раз спасибо. - person Hector; 13.06.2013