Я хочу декодировать mp3-файл в pcm или wav-данные. (Приложение для Android: API 20)
я использую этот подход для декодирования данных из mp3, но на родной платформе с C ++.
После декодирования я знаю, что из декодера заполнены выходные буферизованные данные в формате «звук / сырье».
Эти буферизованные данные хранятся в uint8_t *, поэтому это массив uint8_t (byte) (значения от 0 до 255).
Как я могу преобразовать эти массивы в формат PCM или WAV, если это возможно?
Все аудиодекодеры в настоящее время возвращают 16-битный звук PCM, так что просто uint8_t*
в int16_t*
, что позволяет считывать образцы PCM. Если у вас есть size
байты данных, вы можете прочитать size/2
образцы из int16_t*
указатель. Вы также можете проверить AMEDIAFORMAT_KEY_CHANNEL_COUNT
из выходного формата — если у вас есть size/2
Всего образцов у вас будет size/(2*channels)
кортежи семплов для каждого канала.