Использование VideoView для потоковой или прогрессивной загрузки видео
Я смущен тем, как VideoView можно использовать для воспроизведения видео: из локального файла, в качестве прогрессивной загрузки и потоковой передачи.
Этот пример работает для меня (по крайней мере, на 1.5 и 2.0), загружая файл и воспроизводя его локально.
Но нужно ли загружать видео перед воспроизведением: возможно ли воспроизводить видео в виде прогрессивной загрузки или потоковой передачи, просто используя setVideoPath или setVideoURI, как в VideoViewDemo в образцах API?
Код VideoViewDemo предлагает использовать setVideoURI для потоковой передачи, но я не понимаю, какой URL я должен использовать. У кого-нибудь есть пример URL-адреса для видео, которое можно транслировать в эмулятор Android с помощью кода VideoViewDemo?
Можно ли использовать прогрессивную загрузку с VideoViewDemo? Я получаю сообщение "извините, это видео не может быть воспроизведено" с помощью setVideoPath с URL-адресами, которые отлично работают с примером блога, связанным с выше. (Это проблема в эмуляторе? Я пробовал 1.5 и 2.0.)
Я нашел много примеров и документации в Интернете, но пока ничего не ответил на этот вопрос.
Ответы
Ответ 1
Можно ли воспроизводить видео как прогрессивная загрузка или потоковая передача, просто используя setVideoPath или setVideoURI, как в VideoViewDemo в образцы API?
Должно. Он, безусловно, работает с MediaPlayer
, а VideoView
- это всего лишь 200 строк обертки вокруг MediaPlayer
и SurfaceView
.
Код VideoViewDemo предлагает использовать setVideoURI для потоковой передачи, но я не ясно, какой URL я должен быть используя.
http://
и rtsp://
могут работать, если видео было правильно закодировано.
Есть ли у кого-то пример URL-адреса для видео, которое можно Android-эмулятор с использованием Код VideoViewDemo?
Это видео работает с MediaPlayer
, за исключением Nexus One.
РЕДАКТИРОВАТЬ: На самом деле эта ссылка работает и с Nexus One.
Ответ 2
Он работает для простых случаев, но только тогда, когда не требуется делать некоторые пользовательские приготовления для запросов для получения потока.
В этом учебном руководстве показан пример ручной эмуляции потоковой передачи звука, но для воспроизведения видео может быть немного рефакторинга:
http://blog.pocketjourney.com/2008/04/04/tutorial-custom-media-streaming-for-androids-mediaplayer/
(не забудьте использовать FileDescriptor
при настройке dataSource
, API немного изменился с тех пор).
Ответ 3
VideoView может воспроизводить только видеоролики Stream 3gp, но я рекомендую этот код для потокового видео.
public void onCreate(Bundle savedInstanceState){
setContentView(R.layout.main);
String videourl = "http://something.com/blah.mp4";
Uri uri = Uri.parse(videourl);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.setDataAndType(uri, "video/mp4");
startActivity(intent);
}
Или Нажмите здесь, чтобы посмотреть учебник по потоковой передаче Android.