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

通过Android上的身份验证访问IP摄像头(Dlink 930l)的实时流,android,ip-camera,Android,Ip Camera,我有一个IPCamera(Dlink DCS930l)连接到需要身份验证才能访问流的网络 是否有任何Android库或框架具有访问经过身份验证的网络流的功能?我可以通过Wifi连接使用GoPro做类似的事情 方法1:这可以使用OpenCV实现。根据所使用的身份验证类型,当您提供访问摄像头的IP时,需要指定相应的协议、用户名和密码。打开摄影机流所需的语法(1) 您需要使用本地JC++ OpenCV API来实现JNI绑定。有些演示如何在Android项目中调用本机API 徐冲开发了一个演示如何通过

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


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

我可以通过Wifi连接使用GoPro做类似的事情

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

您需要使用本地JC++ OpenCV API来实现JNI绑定。有些演示如何在Android项目中调用本机API

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

方法2:这里可以找到演示不使用OpenCV而是使用mjpeg库的替代方法

方法3:仅使用
VideoView
,假设您有一个使用Basic Auth进行身份验证的http流,您可以在以下方式提供URI链接时设置头:

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);
Map参数=新的HashMap(1);
字节[]到加密=(用户名+”:“+密码).getBytes();
String encoded=Base64.encodeToString(toEncrypt,Base64.DEFAULT);
最终字符串auth=“Basic”+已编码;
参数put(“授权”,auth);
Log.e(标签,“参数编码:”+Params);
setVideoURI(vidAddress,params);

谢谢您的回答。有没有更简单的方法来实现这一点。与使用视频视图或表面视图一样,此Android项目演示了如何在没有OpenCV的情况下验证和访问IP摄像头,但取决于mjpeg库:这里有一个非常简单的方法通过RSTP将视频流传输到Android:,您可以尝试使用以下格式验证流:RSTP://。然而,我还没有看到这个文件,所以它不能保证工作。很高兴能帮助。请在我的帖子+1上投票,如果有用的话:)。对不起,兄弟,我没有那么高的声誉