首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试网络设备的有效RTSP流?

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

Stack Overflow用户
提问于 2012-10-14 08:48:51
回答 1查看 20.9K关注 0票数 8

我正在从事一个项目,通过RTSP使用VLC媒体播放器插件流视频流/音频。我想提供一个选项来扫描网络中的RTSP摄像头。我确信这将包括查询所有网络设备的列表,并测试端口554。这一切我都能搞定。但是,一旦我做到这一点,我如何通过端口554测试设备,以确保它是一个有效的RTSP摄像头?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-17 06:28:19

没有可靠的方法来扫描网络以查找可用的RTSP流。考虑到以下几点,你仍然可以做一个很棒的搜索:

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

无论如何,使用OPTIONS接收任何有意义的内容的机会最多。DESCRIBE可能已经要求您登录,即使是OPTIONS,您也可能需要进行身份验证。尽管如此,你仍然有RTSP响应,它假设某些东西在那里存在。

代码语言:javascript
复制
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,而这并不总是显而易见的。较好的供应商(显然是少数)灵活地支持传入请求,其他供应商则假设客户端知道特定于设备的请求。例如,

代码语言:javascript
复制
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,您无法从设备中获得任何有意义的东西。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12878373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档