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

时间:2017-03-03 07:41:11

标签: java android android-videoview rtsp ip-camera


我的任务是在android中创建一个Android应用程序来检查该城市的一些IP摄像头。使用 rtsp:// admin:pms7112@xxx.xx.xx.xxx:554 / cam / realmonitor?channel = 1& subtype = 0 的现有 RTSP 网址我可以在VLC播放器中获得流,但在android中没有运气。我试过了videoview本地播放器和media player
几乎每个解决方案都给了我

  

MediaPlayer:setDataSource IOException发生:   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流。我听说客户端和服务器之间的握手

3 个答案:

答案 0 :(得分:0)

格式为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标头;        *实现基本身份验证和摘要身份验证。

参考 Authentication-enabled

答案 1 :(得分:0)

我刚刚找到this项目o github使用vlc库打开rtsp streams.This解决了我的问题解决了我的问题

答案 2 :(得分:0)

我建议使用这个库,它的播放时间限制为2分钟,但对我来说这不是问题。

https://github.com/VideoExpertsGroup/MediaPlayerSDK

我测试了多个android libs,这个似乎在android中运行最好。我测试的其他一些在播放时非常不稳定或非常延迟。还有一个测试应用程序,因此您可以确认它将适用于您的流。

https://play.google.com/store/apps/details?id=org.rtspplr.app

相关问题