【问题标题】:How to test a network device for a valid RTSP stream?如何测试网络设备的有效 RTSP 流?
【发布时间】:2012-10-14 00:48:50
【问题描述】:

我正在开发一个使用 VLC 媒体播放器插件通过 RTSP 流式传输视频/音频的项目。我想提供一个选项来扫描网络以查找 RTSP 摄像机。我确信这将包括查询所有网络设备的列表,以及测试端口 554。所有这些我都可以处理。但是,一旦我走到这一步,我如何通过端口 554 测试设备以确保它是有效的 RTSP 摄像头?

我假设Winsock 中应该有一些东西能够做到这一点,但是我应该如何测试套接字连接并确保它是我可以连接的有效 RTSP 流?无论使用哪种方法,我都不必尝试通过 RTSP 连接到每个使用任何类型的身份验证,我正在寻找一种较低级别的方法来确定端口 554 是否实际上提供了 RTSP 流。

【问题讨论】:

  • 这是 TCP PORT 554 还是 UDP PORT 554?除了连接到套接字之外,我看不出你还能做任何事情。这就像说,“有没有比实际打电话询问他们更底层的方法来检查某人是否在家”。没有。 WInSock 只是移植到 Windows 的 BSD 套接字层。它对 RTSP 一无所知。
  • 听起来相机是通过软件层 (VLC) 访问的,在 (Windows) 计算机上运行。摄像机计算机是否也可以运行基于 UDP 的 IP 多播服务,宣布这台计算机上有一台摄像机——在广播消息中包括它自己的 IP 地址? IP 多播可以使用 Indy UDP 组件完成,我已经完成了 client part (full source)
  • 疯狂猜测。发送OPTIONS * RTSP/1.0 看看会发生什么。该请求不会改变状态。你读过 RFC 了吗?
  • @WarrenP 实际上这更像是在说“有没有更底层的方法来检查某人的电话号码是手机还是家庭电话或传真?”
  • @DavidHeffernan 刚刚尝试过,没有得到任何回报。

标签: delphi winapi winsock rtsp tcp-ip


【解决方案1】:

没有可靠的方法来扫描网络以查找可用的 RTSP 流。考虑以下因素,您仍然可以进行出色的搜索:

  1. 为了获得最佳结果(而不是速度),您需要对可用地址进行强力搜索,即检查适配器地址和掩码、生成地址并在多个线程(或异步套接字)中一个接一个地尝试李>
  2. 您需要端口 554 和/或由用户以交互方式提供;真实设备(数百种型号)可能使用不同的端口,即使是默认设置
  3. 您可以通过使用 UPnP、ZeroConf 在网络中搜索真实地址,将更有可能的候选人放在 IP 地址列表的顶部
  4. 考虑到特定的供应商/型号,您还可以实现特定于供应商的搜索,这通常涉及发送广播 UDP 消息和侦听响应
  5. OPTIONS RTSP 命令应该足够测试了,你可以使用interactive RTSP tool 看看它是如何工作的。无论如何,都没有任何保证,因为设备可能要求您进行身份验证。

OPTIONS 无论如何,你最有机会收到任何有意义的东西。 DESCRIBE 可能已经要求您登录,甚至可能需要对 OPTIONS 进行身份验证。您仍然有 RTSP 响应,假设那里存在某些东西。

Connection to 192.168.0.59:554 using TCP

OPTIONS * RTSP/1.0
CSeq: 1

RTSP/1.0 401 Unauthorized
CSeq: 1
Date: Tue, Oct 16 2012 22:22:53 GMT
WWW-Authenticate: Basic realm="RTSP/RTP stream"

要发出成功的DESCRIBE 命令并接收有意义的结果,您需要知道设备上的资源 URI,这并不总是显而易见的。更好的供应商(显然是少数)灵活地支持传入请求,其他供应商假设客户端知道设备特定。例如,

Connection to 192.168.0.59:554 using TCP

OPTIONS * RTSP/1.0
CSeq: 1

RTSP/1.0 200 OK
CSeq: 1
Date: Tue, Oct 16 2012 22:26:54 GMT
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE

DESCRIBE rtsp://192.168.0.59/ch0_unicast_secondstream RTSP/1.0
CSeq: 2
Accept: application/sdp

RTSP/1.0 200 OK
CSeq: 2
Date: Tue, Oct 16 2012 22:27:22 GMT
Content-Base: rtsp://192.168.0.59/ch0_unicast_secondstream/
Content-Type: application/sdp
Content-Length: 506

v=0
o=- 1350426392586736 1 IN IP4 192.168.0.59
s=Session of second stream
i=Second Codec Stream
t=0 0
a=tool:LIVE555 Streaming Media v2007.08.03
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:Session of second stream
a=x-qt-text-inf:Second Codec Stream
m=video 0 RTP/AVP 26
c=IN IP4 0.0.0.0
a=control:track1
m=audio 0 RTP/AVP 97
c=IN IP4 0.0.0.0
a=rtpmap:97 PCMU/16000
a=control:track2
m=metadata 0 RTP/AVP 98
c=IN IP4 0.0.0.0
a=rtpmap:98 METADATA/64000
a=control:track3

DESCRIBE rtsp://192.168.0.59 RTSP/1.0
CSeq: 3
Accept: application/sdp

RTSP/1.0 404 Stream Not Found
CSeq: 3
Date: Tue, Oct 16 2012 22:27:29 GMT

请注意,如果不了解魔法ch0_unicast_secondstream,您将无法从设备中获得任何有意义的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多