delphi – 如何测试网络设备的有效RTSP流?

前端之家收集整理的这篇文章主要介绍了delphi – 如何测试网络设备的有效RTSP流?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个使用VLC Media Player插件通过RTSP流式传输视频/音频的项目.我想提供一个扫描网络RTSP摄像头的选项.我确信这将包括查询所有网络设备的列表,并测试端口554.所有这些我都可以照顾.但是,一旦我做到这一点,我如何通过端口554测试设备,以确保它是一个有效的RTSP相机?

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

解决方法

没有可靠的方法来扫描网络以获取可用的RTSP流.考虑到以下因素,您仍然可以进行大量搜索

>为获得最佳结果(与速度相反),您需要对可用地址进行强力搜索,即检查adapeter地址和掩码,生成地址并在多个线程(或异步套接字)中逐个尝试
>您将需要端口554和/或由用户以交互方式提供;真实设备(数百种型号)可能使用不同的端口,即使使用默认设置
>通过使用UPnP,ZeroConf在网络中搜索实际地址,您可以将更多可能的候选者放在IP地址列表的顶部
>考虑到特定供应商/模型,您还可以实施特定于供应商的搜索,这通常涉及发送广播UDP消息和侦听响应
>选项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

请注意,在不知道magic ch0_unicast_secondstream的情况下,您无法从设备中获得任何有用的信息.

原文链接:https://www.f2er.com/delphi/101812.html

猜你在找的Delphi相关文章