- PVSM.RU - https://www.pvsm.ru -
Как показывает мой скромный опыт, родные MediaPlayer, MediaMetadataRetriever, а так же другие классы, которые так или иначе основываются на них (VideoView, ThumbnailUtils, к примеру), являются крайне ненадежными в использовании. Возможно, проблема в том, что они реализованы нативно, и меняются от версии к версии, но факт остается фактом — их поведение на разных устройствах предсказать невозможно, причем это даже не зависит от мощности железа.
Хорошим примером стал небольшой проект, где требовалось реализовать воспроизведение видео. Формат и кодек можно было выбрать любой, я проводил тесты на mp4 и avi с различными кодеками. На всех попавшихся под руку устройствах, воспроизведение шло гладко и без нареканий. Старые устройства и версии ОС <4.0 поддерживать не требовалось, и я думал, что на данных форматах проблем уже не будет. Затем на HTC desire V обнаружилось, что несколько видео не воспроизводятся, встроенным проигрывателем в галерее тоже. Была мысль, что устройство слабовато, но сюрпризом стало то, что на Nexus 5 не воспроизводились вообще почти никакие тестовые видео. Хоть какую-то закономерность мне найти не удалось — даже с одинаковыми кодеками один файл мог читаться, а другой — нет. Файлы не были повреждены, поэтому грешить оставалось только на VideoView с MediaPlayer внутри.
К счастью, нашлись хорошие альтернативы, которые работают не только надежнее, но и быстрее:
В общем, я крайне не рекомендую использовать стандартные классы даже для небольших проектов и «обычных» распространенных форматов видеоаудио. Кто-то может не согласиться и сказать, что у него и так все хорошо работает. Тут можно посоветовать только тестирование на большем количестве файлов и устройств… с помощью Genymotion, например.
Автор: Dimezis
Источник [1]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/android/80874
Ссылки в тексте:
[1] Источник: http://habrahabr.ru/post/249051/
Нажмите здесь для печати.