VideoView и прогрессивная загрузка - PullRequest
5 голосов
/ 08 июня 2011

В моем приложении мне нужно предоставить пользователю предварительный просмотр при прогрессивной загрузке (видеофайл).

Для этого я использую компонент VideoView для отображения содержимогозагружаемое видео (.mp4, .3gpp).

Проблема в том, что я не могу получить доступ к удаленным носителям по протоколу http:// или rtsp://, поэтому я вынужден использовать VideoView.setVideoPathвоспроизводить локальную копию видео во время загрузки.

К сожалению, на устройствах Android, которые не могут использовать StageFright framework (например, OpenCore и некоторые Tegra2-based устройства по моему опыту), VideoView не может правильно обрабатывать прогрессивную загрузку: он может воспроизводить только ту часть видео, которая была распознана во время инициализации компонента.

Чтобы было ясно: если пользователь нажимает «воспроизвести», когда только 5% видеоПосле загрузки VideoView будет отображаться только 5% видео, независимо от того, было ли загружено больше видео контента.

По моему опыту, эта проблема не касается устройств, использующих StageFright framework (например: Nexus One 2.2, Nexus One 2.3.4).

Может кто-нибудь указать мне на возможное решение?Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 18 августа 2013

Если вы пытаетесь воспроизвести .h264, вам нужно переместить атомы MOV в начало файла.Они сообщают кодеку продолжительность фильма среди прочего.

попробуйте qtfaststart

http://ffmpeg.zeranoe.com/builds/

1 голос
/ 20 июля 2011

VideoView - это готовый класс в Android Application Framework для сценария использования воспроизведения видео.Он внутренне использует класс MediaPlayer для достижения воспроизведения.MediaPlayer использует медиа-фреймворки, доступные внутри, на основе определенных критериев, таких как формат файла, происхождение контента и т. Д.

Таким образом, ограничение связано с базовой платформой, а не с VideoView.Если вы все еще подозреваете VideoView, напишите свой собственный видеоплеер с помощью медиаплеера.Вы увидите тот же результат.

Также не все версии Android (читаются как stagefright) поддерживают прогрессивную загрузку.

Может быть, вы можете использовать класс DownloadManager для загрузки контента с http-сервера и предоставитьПуть к медиаплееру / просмотру видео для быстрого предварительного просмотра.

Shash316

...