2015-08-14 100 views
0

我試圖僅在rtsp視頻流可用時才使用VideoView顯示視頻。我看到很多人在那裏使用按鈕來啓動VideoView,但沒有關於如何監聽傳入流的示例。使用rtsp的Android VideoView僅在視頻流可用時啓動

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(); 

每當我們收到錯誤,我們嘗試重新連接。如果流結束,我們嘗試立即重新連接。