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
VideoView - это готовый к использованию класс в Android Application Framework для случая использования воспроизведения видео. Он внутренне использует класс MediaPlayer для достижения воспроизведения. MediaPlayer использует медиа-фреймворки, доступные внутри на основе определенных критериев, таких как формат файла, происхождение контента и т. Д.
Таким образом, ограничение исходит из базовой структуры, а не VideoView. Если вы все еще подозреваете VideoView, напишите свой собственный видеоплеер с помощью медиаплеера. Вы увидите тот же результат.
Также не все версии Android (читаются как stagefright) поддерживают прогрессивную загрузку.
Может быть, вы можете использовать класс DownloadManager для загрузки контента с http-сервера и указать путь к медиаплееру / просмотру видео для быстрого предварительного просмотра.
Shash316