[英]RTSP stream in android with username and password
我的任务是在android中创建一个Android应用程序来检查该城市的一些IP摄像头。 使用现有的RTSP网址rtsp:// admin:pms7112@xxx.xx.xx.xxx:554 / cam / realmonitor?channel = 1&subtype = 0我可以在VLC播放器中获取流但在Android中没有运气。 我尝试过videoview原生播放器和media player
。
几乎所有解决方案都给了我
MediaPlayer:setDataSource IOException events:java.io.FileNotFoundException:没有内容提供者:rtsp:// ...
是否应该发生此问题,因为用户名和密码在string
? 你如何添加用户名和密码作为查询string
?
编辑
媒体播放器版本
MediaPlayer mediaPlayer = new MediaPlayer();
try
{
mediaPlayer.setDataSource("rtsp://admin:pms7112@iphere:554/cam/realmonitor?channel=1&subtype=0");
mediaPlayer.prepare();
mediaPlayer.start();
}
catch (IOException ex)
{
ex.printStackTrace();
}
更新:
所以...似乎这是我可以使用网址的唯一方法......我不能以其他方式验证用户。 拥有相机并为城市设置的公司不允许我们使用其他格式。 他们说,vlc浏览器插件播放得很好,他们不会改变任何东西......所以有没有任何库通过身份验证实现rtsp流。 我听说客户端和服务器之间的握手
格式为rtsp://[username[:password]@]ip_address[:rtsp_port]/server_URL[?param1=val1[¶m2=val2]...[¶mN=valN]]
另一种发送用户名和密码的方法:
Uri source = Uri.parse("rtsp://iphere:554/cam/realmonitor");
Map<String, String> headers = new HashMap<String, String>();
headers.put("SERVER_KEY_TO_PARSE_USER_NAME", "admin");
headers.put("SERVER_KEY_TO_PARSE_PASSWORD", "pms7112");
mediaPlayer.setDataSource(context, source, headers)
只是一个建议和可选尝试调用mediaplayer.prepareAsync()
而不是mediaplayer.prepare()
为了从需要认证的RTSP服务器访问媒体演示,客户端还必须能够执行以下操作:*识别401状态代码; *解析并包含WWW-Authenticate标头; *实现基本身份验证和摘要身份验证。
参考 身份验证已启用
我刚刚发现这个项目o github使用vlc库打开rtsp streams.This解决了我的问题解决了我的问题
我建议使用这个库,它限制为2分钟的播放,但对我来说这不是一个问题。
https://github.com/VideoExpertsGroup/MediaPlayerSDK
我测试了多个android libs,这个似乎在android中运行最好。 我测试的其他一些在播放时非常不稳定或非常延迟。 还有一个测试应用程序,因此您可以确认它将适用于您的流。
https://play.google.com/store/apps/details?id=org.rtspplr.app
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.