Pull to refresh

Особенности работы с VideoView

Reading time2 min
Views11K
Знакомая картина?
Не удается воспроизвести видео

Недавно довелось разрабатывать мобильное приложение, которое должно было воспроизводить видео, поставляемое одним сервисом. И пришлось столкнуться с некоторыми проблемами, о которых хочу сообщить.

Во-первых, видео из Интернета не воспроизводится на эмуляторе. Все попытки приводили только к ошибке «Cannot play video». Это, конечно, неприятно, но не смертельно.
Гораздо хуже второе: VideoView оказался до капризности требовательным к соединению. Чуть что — показывал то, что на картинке. Чаще всего это происходила на prepare, но и в процессе воспроизведения тоже бывало.
Кроме того, странные вещи происходили с буферизацией. Даже при 100% буферизации, если прокрутить видео назад, буфер сбрасывается до той позиции, куда мы перешли.

Пришлось пробовать разные пути решения. Лучшим оказалось полностью скачивать видео и воспроизводить из локального файла. Но при размере файла >20 МБ это занимало продолжительное время, так что от этой идеи тоже пришлось отказаться.

Конечно, мне стало интересно, общая ли это проблема для андроида или это я что-то не так делаю. Пришлось провести ресерч аналогичных софтов.

YouTube native app


У меня хорошо работает, никаких проблем не замечено. Однако в сети обнаружилась масса жалоб на нестабильную работу и периодические падения плеера при плохом соединении. Вот примеры:


GiantBomb


Клиентское приложение для какого-то сервиса GiantBomb. Приложение особенно привлекало тем, что его исходники открыты (http://code.google.com/p/giantbomb-android/). Но, к сожалению, мне так и не удалось посмотреть с его помощью хоть одно видео — были только краши с означенной ошибкой (кстати, скриншот как раз с этого приложения).

SPB TV 2


Работало стабильно, вылетов не замечено. Правда, и сюжеты там не больше минуты.

И чем все закончилось?


Сейчас в моем приложении работает просто VideoView, но везде напиханы проверки на то, что забуферизовано достаточно. Мне стоило сменить тариф у провайдера и ошибка больше не повторялась. Однако, при плохом соединении проблема все-таки иногда появляется.

А цель данной статьи — предупредить тех, кто собрался работать с VideoView, и получить комментарии тех, кто имеет соответствующий опыт.
Tags:
Hubs:
Total votes 12: ↑9 and ↓3+6
Comments9

Articles