我正在尝试将我的wifi摄像头(SJ6传奇)的视频流显示到安卓设备上。
当从摄像头打开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
而且它在安卓和MediaPlayer
的vlc上运行得很好。
我也尝试过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();
}
谁能给我指点解决方案?
谢谢
发布于 2018-02-18 22:21:36
当我关闭手机的蜂窝网络数据时,它终于起作用了。
不幸的是,我需要接收摄像头流,并有一个网络连接来发送收到的帧,但我想这是另一个问题……
https://stackoverflow.com/questions/48646245
复制相似问题