我正在开发一个 android 应用程序来监控一些 IP 摄像机。我正在使用MjpegView 类来流式传输视频。
我有三个相机。
- - 摄像头 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:user@iprobocam.marmitek.com/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,而 Camera 1(运行良好的那个)返回更高的值(在 66 和 68 之间)。
我希望这可以让某人了解这里发生的事情......