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

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

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

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

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

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

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

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

2 ответа

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

попробуйте qtfaststart

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

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

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

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

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

Shash316

Другие вопросы по тегам