我正在尝试将来自我的wifi摄像头(SJ6图例)的视频流显示到Android设备。
当从相机打开wifi并从我的Mac连接到网络时,我可以通过转到文件 - >看到来自vlc的视频流。打开网络并连接到rtsp:// MY_CAM_IP。
然后我从我的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,但是效果不好......
相关代码:
on 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();
}
任何人都可以指出我的解决方案???
由于
答案 0 :(得分:0)
当我关闭手机的蜂窝网络数据时,它终于奏效了。
不幸的是,我需要接收相机流并且有网络连接来发送收到的帧,但我猜这是另一个问题......