Android MediaPlayer, поддержка прогрессивной загрузки аудио или нет?

В настоящее время я выполняю технико-экономическое обоснование, где один из вопросов касается возможности переключения с потоковой передачи на прогрессивную загрузку аудио. Под прогрессивной загрузкой я подразумеваю, что аудиофайлы, размещенные на стандартном веб-сервере, на котором нет ничего особенного, могут быть загружены с помощью стандартных вызовов http и воспроизведены до полного скачивания файла.

Моя компания заключила контракт с сторонними разработчиками приложений для Android, которые теперь утверждают, что хотя прогрессивная загрузка указанным выше способом отлично работает для файлов MP3, но это невозможно с файлами AAC MP4. У меня нет причин сомневаться в разработчиках, но хотелось бы услышать второе мнение. Я исследовал эту тему (безумно гуглил) и не нашел причин, по которым она не работала. Я также протестировал некоторые существующие проигрыватели на Android Market (например, проигрыватель MX), и они могут воспроизводить файлы во время загрузки.

Итак, мой вопрос в основном заключается в том, знает ли кто на самом деле, что с использованием компонента MediaPlayer в Android (скажем, версий с 2.1 по 4.1) прогрессивная загрузка и воспроизведение до полной загрузки файла AAC MP4 действительно работает?

Кроме того, поскольку кодек AAC и контейнер MP4 намного сложнее, чем MP3, должны ли мы что-то делать с нашими файлами при их кодировании, чтобы обеспечить прогрессивную загрузку с помощью компонента MediaPlayer? При исследовании я нашел некоторую информацию о какой-то опции «быстрого запуска», а также о «подсказках», которые могут быть важны, а могут и не быть (подсказки, кажется, одна из самых «магических» тем... в половине статей / блогов говорится, что вам нужно намекнуть, а другая половина говорит, что намекать точно не надо). Поскольку я могу воспроизводить прогрессивно с помощью MX Player, я предполагаю, что наша кодировка уже выполняет все необходимое, или я ошибаюсь в этом предположении?

Ваше здоровье!


person Linus Proxy    schedule 29.08.2012    source источник
comment
Мне было бы любопытно узнать, на чем вы в итоге остановились. Ваши разработчики придумали, как это сделать?   -  person Fixee    schedule 08.09.2013


Ответы (1)


(отказ от ответственности: это было сделано с видеофайлами, а не с музыкальными)

Я так делал, это вполне осуществимо.

Хитрость с MP4 заключается в том, чтобы поместить индекс в начало файла, а не в его конец, где он обычно находится.

person njzk2    schedule 29.08.2012
comment
Интересно! Вы дали мне несколько новых слов для использования при исследовании. Я нашел это: lists.apple.com/archives/quicktime- users/2010/Jul/msg00002.html, в котором говорится, что для быстрого запуска атом 'moov' (заголовок фильма) должен находиться в начале файла, чтобы он загружался первым, и если вы видите 'moov' в первых нескольких байтах (точнее, в байтах 5-8), все в порядке. Я открыл один из наших аудиофайлов с помощью шестнадцатеричного редактора HxD и увидел ¨™moov...lmvhd.. в пятом байте. Означает ли это, что индекс действительно находится в начале файла? Индекс и фастстарт это одно и то же? - person Linus Proxy; 29.08.2012
comment
я понятия не имею, но атом moov действительно был тем, что мне нужно было поместить в начало файла, чтобы иметь возможность воспроизвести неполный файл. - person njzk2; 30.08.2012
comment
Спасибо. Еще один вопрос, прежде чем я приму ваш ответ: какие версии Android поддерживает ваше приложение? - person Linus Proxy; 30.08.2012
comment
Фройо и выше, если мне не изменяет память. Кстати, вы найдете все фактически поддерживаемые форматы здесь developer.android.com/guide /appendix/media-formats.html - person njzk2; 30.08.2012