Java 带身份验证的Rtsp视频流

Java 带身份验证的Rtsp视频流,java,android,rtsp,android-videoview,Java,Android,Rtsp,Android Videoview,我想用ip地址连接到straming ip摄像头。我试图联系: rtsp://username:password@ip_camera 但是视频视图不喜欢它。我尝试过地图,比如: Uri source = Uri.parse("rtsp://ipcamera"); headers = new HashMap<String, String>(); headers.put("Username", "user"); headers.put("Password", "password");

我想用ip地址连接到straming ip摄像头。我试图联系:

rtsp://username:password@ip_camera
但是视频视图不喜欢它。我尝试过地图,比如:

Uri source = Uri.parse("rtsp://ipcamera");
headers = new HashMap<String, String>();
headers.put("Username", "user");
headers.put("Password", "password");
videoView.setVideoURI(source, headers);
没什么。同样的错误

E/MediaPlayerNative: error (1, -2147483648)
这意味着未知错误(?)

有没有找到工作方法的建议? 谢谢

编辑


通过chrome network analyze,我发现这款相机使用摘要授权。这是生成它的一种方法?

用于流式传输rtsp的库必须支持摘要身份验证

这并不像添加标题那么简单

使用RTSP进行摘要身份验证 启用摘要功能的RTSP服务器应使用
401 unauthorized
响应
descripe
请求,在
WWW-Authenticate
头中返回一个nonce,例如

WWW-Authenticate: Digest realm="GStreamer RTSP Server", nonce="1c91a068811f1029"
然后,客户端使用nonce生成可用于身份验证的授权标头

Authorization: Digest username="admin", realm="GStreamer RTSP Server", nonce="1c91a068811f1029", uri="rtsp://0.0.0.0:8554/live.sdp", response="ef18317f111b1446dc4c6a11b4f4ebf3"
通过如下散列一些信息,每个RTSP请求再次生成上面的响应值

HA1 = MD5(username:realm:password)
HA2 = MD5(method:digestURI)
response = MD5(HA1:nonce:HA2)

您确定密钥是
用户名吗
我不是。尝试使用用户名,结果相同。您是否在VLC Players中尝试过此url,类似urlrtsp://user:pass@谢谢你的回复,我明天会测试。一个问题:如何生成HA1和HA2?我引进了海绵城堡,但我不知道这条路是否正确。Android studio建议使用以下静态字符串:import static org.spongycastle.bcpg.HashAlgorithmTags.MD5;
HA1 = MD5(username:realm:password)
HA2 = MD5(method:digestURI)
response = MD5(HA1:nonce:HA2)