Декодирование Закодированных Аудиоданных (MP3s, и т.д.) на Android, Не Играя Его

Короткая версия: Что лучший способ состоял в том, чтобы закодировать данные в MP3 (и идеально в AAC/Ogg/WMA) в массив Java или ByteBuffer, которым я могу затем управлять?

Я соединяю программу, которая имеет звуковые файлы замедления и ускорения как одну из его функций. Это хорошо работает для файлов WAV, которые являются заголовком плюс точные двоичные данные, который должен быть отправлен динамику, и теперь я должен реализовать его для MP3 (идеально, это также поддерживало бы AAC, Ogg и WMA, но так как это - менее популярные форматы, это не требуется). Android не выставляет интерфейс для декодирования MP3, не играя его, таким образом, я должен создать тот интерфейс.

Три опции представляют себя, хотя я открыт для других:

1) Запишите мой собственный декодер. У меня уже есть функциональный детектор кадра, который я надеялся использовать для опции (3), и теперь должен только должен быть реализовать таблицы декодирования Huffman.

2) Используйте JLayer или эквивалентную библиотеку Java, для обработки декодирования. Я не совсем ясен на том, что разветвления лицензии здесь.

3) Соединитесь с libmedia library/MediaPlayerService. Это - то, что делает SoundPool, и объем использования того сервиса заставляет меня полагать что, в то время как это официально нестабильно, что реализация не идет никуда. Это означает писать код JNI для соединения с сервисом, но я нахожу, что это - глубокая кроличья нора. В поверхности я испытываю затруднения из-за SP <> шаблон.

12
задан David R. 2 March 2010 в 19:56
поделиться

1 ответ

Я сделал это с libmad и NDK. JLayer - это способ замедлить, а медиа-фреймворк - движущаяся цель. Вы можете найти информацию и исходный код по адресу http://apistudios.com/hosted/marzec/badlogic/wordpress/?p=231

1
ответ дан 3 December 2019 в 00:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: