【问题标题】:Determining if an RTSP server is running and needs authentication确定 RTSP 服务器是否正在运行并需要身份验证
【发布时间】:2016-01-30 01:47:42
【问题描述】:

我知道端口 554(通常是 RTSP)在某个 IP 地址处打开。我希望能够确定:

  • 这真的是 RTSP 服务器吗?
  • 是否可以在不进行身份验证的情况下访问视频流?

我还想以尽可能轻量级的方式做到这一点。我不需要访问视频流。

查看 RTSP 规范后,我意识到我可以简单地打开一个 TCP 套接字并发送以下命令:

OPTIONS * RTSP/1.0<CRLF>
CSeq: 1<CRLF>

当我对许多服务器尝试此操作时,我发现少数响应

RTSP/1.0 200 OK
CSeq: 1
<a bunch of other stuff>

这是意料之中的。但是,我提出的大多数请求都超时了。这让我相信这些资源需要身份验证,或者我在做一些根本错误的事情。

我猜如果需要身份验证,大多数服务器都会以 401 响应,所以我可能做错了什么。有什么想法吗?

【问题讨论】:

    标签: tcp video-streaming rtsp


    【解决方案1】:

    请参考RTSP协议的RFC2326:RFC2326

    D.1.2 启用身份验证

    为了从 RTSP 服务器访问媒体演示, 需要身份验证,客户端必须另外能够做到 以下:

     * recognize the 401 status code;
     * parse and include the WWW-Authenticate header;
     * implement Basic Authentication and Digest Authentication.
    

    【讨论】:

    • 如果我收到 401,那就太好了。我知道我正在与 RTSP 服务器通话,它已启动并正在运行,并且需要身份验证。我的问题是,几乎从来没有这种情况。我发现我什么也没收到,而且我的请求超时了,这让我相信我做错了什么。我的方法有什么不正确的吗?
    • 你可以试试(live555.com/liveMedia)。该库具有 openRTSPTM 客户端应用程序。尝试使用“-v”选项连接到您的服务器并跟踪所有 RTSP 消息。或者您也可以尝试使用 vlc。
    • 原来我的代码不正确。我说我正在用 终止我的所有命令,但我的代码只发送“\n”。当我开始使用“\r\n”时,事情开始变得更好。
    • @SanderSmith * 真的支持 URL 路径吗?对我来说,海康威视说,这是一个糟糕的要求
    猜你喜欢
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 2013-09-01
    相关资源
    最近更新 更多