Знакомая картина?
Недавно довелось разрабатывать мобильное приложение, которое должно было воспроизводить видео, поставляемое одним сервисом. И пришлось столкнуться с некоторыми проблемами, о которых хочу сообщить.
Во-первых, видео из Интернета не воспроизводится на эмуляторе. Все попытки приводили только к ошибке «Cannot play video». Это, конечно, неприятно, но не смертельно.
Гораздо хуже второе:
Кроме того, странные вещи происходили с буферизацией. Даже при 100% буферизации, если прокрутить видео назад, буфер сбрасывается до той позиции, куда мы перешли.
Пришлось пробовать разные пути решения. Лучшим оказалось полностью скачивать видео и воспроизводить из локального файла. Но при размере файла >20 МБ это занимало продолжительное время, так что от этой идеи тоже пришлось отказаться.
Конечно, мне стало интересно, общая ли это проблема для андроида или это я что-то не так делаю. Пришлось провести ресерч аналогичных софтов.
У меня хорошо работает, никаких проблем не замечено. Однако в сети обнаружилась масса жалоб на нестабильную работу и периодические падения плеера при плохом соединении. Вот примеры:
Клиентское приложение для какого-то сервиса GiantBomb. Приложение особенно привлекало тем, что его исходники открыты (http://code.google.com/p/giantbomb-android/). Но, к сожалению, мне так и не удалось посмотреть с его помощью хоть одно видео — были только краши с означенной ошибкой (кстати, скриншот как раз с этого приложения).
Работало стабильно, вылетов не замечено. Правда, и сюжеты там не больше минуты.
Сейчас в моем приложении работает просто
А цель данной статьи — предупредить тех, кто собрался работать с
Недавно довелось разрабатывать мобильное приложение, которое должно было воспроизводить видео, поставляемое одним сервисом. И пришлось столкнуться с некоторыми проблемами, о которых хочу сообщить.
Во-первых, видео из Интернета не воспроизводится на эмуляторе. Все попытки приводили только к ошибке «Cannot play video». Это, конечно, неприятно, но не смертельно.
Гораздо хуже второе:
VideoView
оказался до капризности требовательным к соединению. Чуть что — показывал то, что на картинке. Чаще всего это происходила на prepare, но и в процессе воспроизведения тоже бывало.Кроме того, странные вещи происходили с буферизацией. Даже при 100% буферизации, если прокрутить видео назад, буфер сбрасывается до той позиции, куда мы перешли.
Пришлось пробовать разные пути решения. Лучшим оказалось полностью скачивать видео и воспроизводить из локального файла. Но при размере файла >20 МБ это занимало продолжительное время, так что от этой идеи тоже пришлось отказаться.
Конечно, мне стало интересно, общая ли это проблема для андроида или это я что-то не так делаю. Пришлось провести ресерч аналогичных софтов.
YouTube native app
У меня хорошо работает, никаких проблем не замечено. Однако в сети обнаружилась масса жалоб на нестабильную работу и периодические падения плеера при плохом соединении. Вот примеры:
- http://code.google.com/p/android/issues/detail?id=4330
- http://forum.xda-developers.com/showthread.php?t=485797
GiantBomb
Клиентское приложение для какого-то сервиса GiantBomb. Приложение особенно привлекало тем, что его исходники открыты (http://code.google.com/p/giantbomb-android/). Но, к сожалению, мне так и не удалось посмотреть с его помощью хоть одно видео — были только краши с означенной ошибкой (кстати, скриншот как раз с этого приложения).
SPB TV 2
Работало стабильно, вылетов не замечено. Правда, и сюжеты там не больше минуты.
И чем все закончилось?
Сейчас в моем приложении работает просто
VideoView
, но везде напиханы проверки на то, что забуферизовано достаточно. Мне стоило сменить тариф у провайдера и ошибка больше не повторялась. Однако, при плохом соединении проблема все-таки иногда появляется.А цель данной статьи — предупредить тех, кто собрался работать с
VideoView
, и получить комментарии тех, кто имеет соответствующий опыт.