我正在从事一个项目,通过RTSP使用VLC媒体播放器插件流视频流/音频。我想提供一个选项来扫描网络中的RTSP摄像头。我确信这将包括查询所有网络设备的列表,并测试端口554。这一切我都能搞定。但是,一旦我做到这一点,我如何通过端口554测试设备,以确保它是一个有效的RTSP摄像头?
我假设在Winsock中应该有一些东西能够做到这一点,但我应该如何测试套接字连接,并确保它是我可以连接到的有效RTSP流?无论使用哪种方法,我都不应该尝试使用任何类型的身份验证通过RTSP连接到每个端口,我正在寻找一种较低级别的方法来确定端口554是否真的提供了RTSP流。
发布于 2012-10-17 06:28:19
没有可靠的方法来扫描网络以查找可用的RTSP流。考虑到以下几点,你仍然可以做一个很棒的搜索:
OPTIONS 无论如何,使用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,您无法从设备中获得任何有意义的东西。
https://stackoverflow.com/questions/12878373
复制相似问题