首页 文章

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

提问于
浏览
0

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

MediaPlayer:setDataSource发生IOException:java.io.FileNotFoundException:没有内容提供者:rtsp:// ...

如果这个问题发生是因为用户名和密码在_2388019中?你如何添加用户名和密码作为查询 string

EDIT
媒体播放器版本
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();
    }

Update:
所以...似乎这是我可以使用网址的唯一方法......我不能以其他方式验证用户 . 拥有相机并为城市设置的公司不允许我们使用其他格式 . 他们说,vlc浏览器插件播放得很好,他们不会改变任何东西......所以有任何库通过身份验证实现rtsp流 . 我听说客户端和服务器之间的握手

3 回答

  • 0

    格式为 rtsp://[username[:password]@]ip_address[:rtsp_port]/server_URL[?param1=val1[&param2=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标头; *实现基本身份验证和摘要身份验证 .

    Reference Authentication-enabled

  • 0

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

  • 0

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

    https://github.com/VideoExpertsGroup/MediaPlayerSDK

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

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

相关问题