2015-08-14 2 views
0

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

video_stream.setVideoPath("rtsp://MY_IP/stream"); 
    video_stream.requestFocus(); 
    video_stream.start(); 

Если я попытаюсь выполнить это до того, как возникнет поток, я получаю «не могу воспроизвести это видео». Если я запускаю поток перед рукой, он работает нормально.

+0

Предположительно, вам нужно будет найти код клиента RTSP, который вы можете использовать напрямую, чтобы определить, доступен ли поток. Затем, когда это так, начните использовать «VideoView». – CommonsWare

ответ

0

настроить onErrorListener, настроить onCompleteListener, запустить поток, как я сделал выше.

video_stream.setOnErrorListener(new OnErrorListener() { 
     public boolean onError(MediaPlayer mp,int what, int extra) {video_stream.setVideoPath("rtsp://IP/stream"); 
           video_stream.requestFocus(); 
           video_stream.start();} 
    });video_stream.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
     @Override 
     public void onCompletion(MediaPlayer mp) { 
      video_stream.setVideoPath("rtsp://IP/stream"); 
      video_stream.requestFocus(); 
      video_stream.start(); 

     } 
    });video_stream.setVideoPath("rtsp://IP/stream"); 
    video_stream.requestFocus(); 
    video_stream.start(); 

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

Смежные вопросы