8

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

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

4

1 回答 1

3

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

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

无论如何,你最有机会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您不会从设备中获得任何有意义的东西。

于 2012-10-16T22:28:18.600 回答