Android如何获取rtsp视频流
时间: 2023-11-10 07:00:51 浏览: 185
在 Android 上获取 rtsp 视频流需要使用 MediaPlayer 类,该类支持 rtsp 协议。下面是代码示例:
```
// 创建 MediaPlayer 对象
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
// 设置数据源
String videoUrl = "rtsp://example.com/video.mp4";
mediaPlayer.setDataSource(videoUrl);
// 设置 SurfaceView 用于显示视频
SurfaceView surfaceView = findViewById(R.id.surface_view);
SurfaceHolder holder = surfaceView.getHolder();
holder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
mediaPlayer.setDisplay(holder);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
// 准备播放视频
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();
}
});
// 可选:设置播放结束监听器
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// 播放结束
}
});
// 可选:设置播放出错监听器
mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
// 播放出错
return false;
}
});
```
在上面的代码中,我们创建了一个 MediaPlayer 对象并设置了数据源为 rtsp 视频流的地址。然后,我们使用 SurfaceView 来显示视频,通过 SurfaceHolder.Callback 接口来监听 SurfaceView 的创建和销毁事件。最后,我们调用 prepareAsync() 方法来准备视频播放并在准备完成后调用 start() 方法开始播放视频。如果需要监听播放结束和播放出错事件,可以设置相应的监听器。
阅读全文