繁体   English   中英

用户名和密码在Android中的RTSP流

[英]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_U‌​RL[?param1=val1[&par‌​am2=val2]...[&paramN‌​=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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM