【发布时间】:2018-07-16 16:57:37
【问题描述】:
我正在尝试将来自我的 wifi 摄像头 (SJ6 Legend) 的视频流显示到 Android 设备。
当从相机打开 wifi 并从我的 mac 连接到其网络时,我只需转到文件 -> 打开网络并连接到 rtsp://MY_CAM_IP 即可看到来自 vlc 的视频流。
然后我从我的 android 设备连接到 wifi,我尝试使用 MediaPlayer 或 VideoView,但它不起作用。
vlc for android 也不显示视频。
为了确保播放 RTSP 没有问题,我尝试了这个文件: rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov
它在 vlc for android 和使用 MediaPlayer 上运行良好。
我还尝试了一个用于 android lib 的 vlc,但效果不佳...
相关代码:
在 onCreate 中:
SurfaceView surfaceView = (SurfaceView)
findViewById(R.id.am_surface_view);
mSurfaceHolder = surfaceView.getHolder();
mSurfaceHolder.addCallback(this);
mSurfaceHolder.setFixedSize(320, 240);
和:
/**
* {@link MediaPlayer.OnPreparedListener} interface methods
*/
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mMediaPlayer.start();
}
/**
* {@link SurfaceHolder.Callback} interface methods
*/
@Override
public void surfaceChanged(final SurfaceHolder holder, final int format, final int width, final int height) {}
@Override
public void surfaceCreated(SurfaceHolder sh) {
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDisplay(sh);
// Context context = getApplicationContext();
// Map<String, String> headers = getRtspHeaders();
// Uri source = Uri.parse(RTSP_URL);
try {
// Specify the IP camera's URL and auth headers.
// mMediaPlayer.setDataSource(context, source, headers);
// mMediaPlayer.setDataSource(context, source);
mMediaPlayer.setDataSource(RTSP_URL); // RTSP_URL = "rtsp://MY_CAM_IP"
// Begin the process of setting up a video stream.
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.prepareAsync();
} catch (Exception e) {}
}
@Override
public void surfaceDestroyed(SurfaceHolder sh) {
mMediaPlayer.release();
}
谁能给我指点解决办法???
谢谢
【问题讨论】: