VideoView и прогрессивная загрузка

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

Для этого я использую компонент 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).

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


person a.bertucci    schedule 08.06.2011    source источник
comment
Здравствуйте, вы нашли способ исправить эту ошибку? У меня была такая же ошибка. И прямо сейчас я застрял.   -  person Huy Tower    schedule 25.10.2013
comment
Наконец, мы находим причину как решение. Здесь Спасибо,   -  person Huy Tower    schedule 28.10.2013


Ответы (2)


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

попробуйте qtfaststart

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

person Byron Whitlock    schedule 18.08.2013
comment
Здравствуйте, вы нашли способ исправить эту ошибку? У меня была такая же ошибка. И прямо сейчас я застрял. Не могли бы вы дать мне несколько способов закончить эту задачу, потоковое видео с прогрессивной загрузкой. p / s: я могу закодировать видео в .h264, загрузить его на веб-сайт, и я считаю, что мой код тоже в порядке. Устройство: Samsung Galaxy 7 2.2.1 - person Huy Tower; 25.10.2013

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

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

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

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

Шаш316

person Shash316    schedule 20.07.2011
comment
Да, проблема затрагивает различные медиа-фреймворки под MediaPlayer (и так под VideoView). Загрузка видео через DownloadManager не может помочь (я уже использую это), потому что проблема связана с тем, как видеобуфер обрабатывается базовой средой мультимедиа. Спасибо, в любом случае. - person a.bertucci; 21.07.2011