在 Android 上通过身份验证访问 IP 摄像机 (Dlink 930l) 的实时流

Accessing the live stream of an IP camera (Dlink 930l) with authentication on Android

我有一个 IPCamera (Dlink DCS930l) 连接到需要身份验证才能访问流的网络。

是否有任何 Android 库或框架具有访问经过身份验证的网络流的功能?

我能够通过 Wifi 连接对 GoPro 进行类似的操作。

方法一:这个可以用OpenCV来实现。根据使用的身份验证类型,您在提供访问摄像机的 IP 时需要指定相应的协议、用户名和密码。打开摄像头流所需的语法using OpenCV is provided here(1).

您将需要使用 OpenCV for Android and JNI bindings to the native C++ OpenCV API. Some sample applications here 演示如何在 Android 项目中调用本机 API。

xuchong 开发了一个 sample Android application 演示如何在 Android 上通过 OpenCV 本地读取 mp4 文件。使用 (1) 中的语法将 MainActivity.java OnCreate() 方法中的视频路径更新为 IP 摄像机提要,以从需要身份验证的摄像机中读取。

方法 2: An example application 演示不使用 OpenCV 而是使用 mjpeg 库的替代方法可以在此处找到。

方法三:仅使用VideoView,假设你有一个使用Basic Auth认证的http流,你可以设置headers当你提供URI link 如下:

Map<String, String> params = new HashMap<String, String>(1);
byte[] toEncrypt = (username + ":" + password).getBytes();
String encoded = Base64.encodeToString(toEncrypt, Base64.DEFAULT);
final String auth = "Basic " + encoded;
params.put("Authorization", auth);
Log.e(TAG, "Params Encode: " + params);
myVideoView.setVideoURI(vidAddress, params);