Android VideoView 使用 rtsp 仅在视频流可用时启动

Android VideoView using rtsp only start when video stream is available

我试图仅在 rtsp 视频流可用时使用 VideoView 显示视频。我看到很多例子,人们使用按钮启动 VideoView,但没有关于如何监听传入流的内容。

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

如果我尝试在有流之前执行此操作,我会得到 "can't play this video"。如果我事先启动流,它会正常运行。

设置一个 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();

每次出现错误时,我们都会尝试重新连接。如果流结束,我们会尝试立即重新连接。