我正在开发一款android应用程序来监视某些IP摄像机。 我使用MjpegView Class来传输视频。尝试在android中流式传输IP摄像头时出现黑色屏幕
我有三个摄像头。
-
- 相机1:我在互联网上找到的公共相机,没有用户/密码。
-
- 相机2:一个公共相机,但这个需要用户名/密码。
-
- 相机3:我将最终在我的应用程序中使用的相机。它也将要求凭证。
在我的主要活动的代码如下:
public class MainActivity extends Activity {
private MjpegView mv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Camera 1
String URL = "http://216.62.222.101/mjpg/video.mjpg";
//Camera 2
// String URL = "http://user:[email protected]/cgi/mjpg/mjpg.cgi";
//Camera 3
// String URL = "http://MyIp:MyPort/mjpg/video.mjpg";
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
mv = new MjpegView(this);
setContentView(mv);
mv.setSource(MjpegInputStream.read(URL));
mv.setDisplayMode(MjpegView.SIZE_BEST_FIT);
mv.showFps(true);
}
public void onPause() {
super.onPause();
mv.stopPlayback();
}
我可以流相机1没有问题。当我使用相机2或3运行应用程序时,没有错误,但没有警告,但我得到的最多是黑屏。我认为这是一个验证问题,但如果我从相机中删除它,我会得到与黑屏相同的结果。
这些摄像机之间的区别是什么使它们中的一些工作而不是其他人?
在此先感谢您的帮助。
---编辑---
我发现一些奇怪的运行时用相机2 的应用程序,我捕捉异常,在MjpegView
类时,它调用的方法MjpegInputStream.readMjpegFrame
。 更深入地看,我注意到方法getEndOfSeqeunce
总是返回1,而摄像机1(效果很好的那个)返回更高的值(66和68之间)。
我希望这可以给别人这里发生了什么的想法...