Поиск в потоках AAC на Android

Я получаю поток AAC с HTTP-сервера и использую его в качестве источника данных для MediaPlayer в Android.
Он воспроизводится отлично, но когда я пытаюсь выполнить mediaPlayer.seekTo(int position), я получаю следующие ошибки примерно миллион раз:
WARN/AACDecoder(13889): AAC decoder returned error -1, substituting silence
WARN/AACDecoder(13889): AAC decoder returned error 10, substituting silence
WARN/AACDecoder(13889): AAC decoder returned error 1, substituting silence

Эта ошибка возникает на Android 2.2, но, похоже, она не работает и в более ранних версиях. Поддержка поиска обязательна в моем приложении, и я хотел бы, чтобы она работала для Android 1.5–2.2.

Есть ли хорошее решение о том, как искать в потоках AAC?


person greve    schedule 14.10.2010    source источник


Ответы (1)


Вы не можете искать обслуживаемый поток. Как сервер мог справиться с этим?

Даже если вы сохраните байты, необработанные потоки AAC недоступны для поиска (они не содержат информации о поиске). Некоторые медиаплееры обходят это, анализируя весь файл и индексируя его на лету каждый раз, когда загружают. Лучшее решение — переупаковать поток в контейнер, например MP4. Вот пример использования MP4Box:

MP4Box -add raw_stream.aac -new output_file.mp4
person efotinis    schedule 28.12.2012