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();
每次出现错误时,我们都会尝试重新连接。如果流结束,我们会尝试立即重新连接。
我试图仅在 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();
每次出现错误时,我们都会尝试重新连接。如果流结束,我们会尝试立即重新连接。