Tcp 确定RTSP服务器是否正在运行且需要身份验证

Tcp 确定RTSP服务器是否正在运行且需要身份验证,tcp,video-streaming,rtsp,Tcp,Video Streaming,Rtsp,我知道端口554(通常是RTSP)在某个IP地址打开。我希望能够确定: 这真的是一个RTSP服务器吗 是否可以在不进行身份验证的情况下访问视频流 我也希望以尽可能轻的方式来做这件事。我不需要访问视频流 查看RTSP规范后,我意识到我可以简单地打开TCP套接字并发送以下命令: OPTIONS * RTSP/1.0<CRLF> CSeq: 1<CRLF> 选项*RTSP/1.0 CSeq:1 当我在许多服务器上尝试这种方法时,我发现有少数服务器响应了 RTSP/1.0

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

  • 这真的是一个RTSP服务器吗
  • 是否可以在不进行身份验证的情况下访问视频流
我也希望以尽可能轻的方式来做这件事。我不需要访问视频流

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

OPTIONS * RTSP/1.0<CRLF>
CSeq: 1<CRLF>
选项*RTSP/1.0
CSeq:1
当我在许多服务器上尝试这种方法时,我发现有少数服务器响应了

RTSP/1.0 200 OK
CSeq: 1
<a bunch of other stuff>
RTSP/1.0 200正常
CSeq:1
这是意料之中的。然而,我提出的大多数请求都超时了。这让我相信这些资源需要身份验证,否则我就做错了


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

请参考RTSP协议的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服务器交谈,它正在启动和运行,并且需要身份验证。我的问题是,这种情况几乎从未发生过。我发现我什么也没收到,我的请求也超时了,这让我相信我做错了什么。我的方法中有什么不正确的地方吗?你可以试试()。此库具有openRTSPTM客户端应用程序。尝试使用“-v”选项连接到服务器,并跟踪所有RTSP消息。或者你也可以用vlc来试试,结果证明我的代码是错误的。我说我正在用终止所有命令,但我的代码只发送“\n”。当我开始使用“\r\n”时,情况开始好得多了。@SanderSmith*真的支持URL路径吗?海康威视表示,对我来说,这是一个糟糕的要求