gpt4 book ai didi

c# - 有没有这样的RTSP Ping?

转载 作者:太空宇宙 更新时间:2023-11-03 11:19:28 24 4
gpt4 key购买 nike

我目前正在开发一个 WinForm 应用程序,使用 C# 中的 RTSP 协议(protocol)从 IP 摄像机流式传输视频。一切正常。该应用程序的部分要求包括检查网络摄像机是否在线的功能。

所以我使用 System.Net.NetworkInformation.Ping 类做了一个 ping 函数来 ping IP 摄像机。假设摄像机的 RTSP url 如下 rtsp://[CAMERA IP]:554/Master0-RTSP/1.0,我只需要提取 [CAMERA IP] 部分并使用 Ping 类通过其 IP 查看摄像机是否在线。

最初,它一直有效,直到出现问题,比如如果输入的 IP 可能不是预期的 IP 摄像机(比如计算机的 IP),如果输入的设备的输入 IP 是 ping 功能仍然有效在线。

我试图搜索类似 RTSP ping 的内容,但找不到。希望对此事有任何建议或意见。非常感谢 C# 中的任何示例。感谢您的关注。

最佳答案

OPTIONS 可能有效,但标准规定正确的方法是使用 GET_PARAMETER

RFC2326 清楚地概述了这一点

http://www.ietf.org/rfc/rfc2326.txt

10.8 获取参数

GET_PARAMETER 请求检索一个参数的值 URI 中指定的表示或流。回复内容 并将响应留给实现。 GET_PARAMETER 没有 实体主体可用于测试客户端或服务器的 active (“ping”)。

虽然服务器可能不支持 GET_PARAMETER,但无法判断服务器将如何响应甚至不需要 sessionID 的 OPTIONS 请求。因此不能保证它会让您现有的 session 保持事件状态。

阅读关于 OPTIONS 请求的相同 RFC 可以清楚地看到这一点

10.1 选项

该行为等同于 [H9.2] 中描述的行为。选项 可以随时发出请求,例如,如果客户即将 尝试一个非标准的请求。它不会影响服务器状态。

例子:

 C->S:  OPTIONS * RTSP/1.0
CSeq: 1
Require: implicit-play
Proxy-Require: gzipped-messages

S->C: RTSP/1.0 200 OK
CSeq: 1
Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE

请注意,这些必然是虚构的特征(人们希望 我们不会故意忽略一个真正有用的功能 这样我们就可以在本节中有一个很好的例子。

如果不支持 GET_PARAMETER,那么您将使用要保持事件状态的 session 的 SessionId 发出 PLAY 请求。

即使 OPTIONS 不可用,这也应该有效,因为 PLAY 尊重 session ID,如果您已经在玩游戏,则不会产生不利影响。

对于 C# RtspClient,请参阅我的项目@ https://net7mma.codeplex.com/

CodeProject 上的文章@ http://www.codeproject.com/Articles/507218/Managed-Media-Aggregation-using-Rtsp-and-Rtp

关于c# - 有没有这样的RTSP Ping?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11502856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com