我目前正在C#(服务器/客户端)中实现RTSP标准,但在重新阅读RFC 2326一千次之后,还有一件事我不清楚。
看起来RTSP只是一个[C - S]控制协议。但是,如果我正在尝试为网络中的多个客户端/服务器设备构建管理,该怎么办?例如:
我有一个管理应用程序,它是一个RTSP客户端。我想告诉另一个客户他应该连接到不同的服务器。类似的东西:
SETUP rtsp://192.168.1.12 RTSP/1.0
CSeq: 302
Transport: RTP/AVP;rtsp-redirect:192.168.1.155
RFC对传输属性非常严格。我也考虑过“REDIRECT”,但这只是S-> C,例如负载平衡使用。 有没有办法实现客户< - >用于重定向的客户端通信(例如,告诉客户端他必须在另一台服务器上删除命令?)
答案 0 :(得分:2)
你想要做的事情就是聚合...你不想将公众重定向到公司防火墙后面的摄像头......你会想先在媒体服务器上设置摄像头,然后允许通过密码保护媒体服务器上的流,通过媒体服务器访问任何人。
查看我在c#中的实现,该实现与VLC @ https://net7mma.codeplex.com/兼容,并支持我上面提到的所有内容!
这里有一篇CodeProject文章 - > http://www.codeproject.com/Articles/507218/Managed-Media-Aggregation-using-Rtsp-and-Rtp
实际上有......
@ http://www.ietf.org/rfc/rfc2326.txt
10.10 REDIRECT
重定向请求通知客户端它必须连接到另一个 服务器位置。它包含必需的标题位置 表示客户端应发出该URL的请求。有可能 包含参数Range,表示重定向的时间 生效。如果客户想继续发送或接收 对于这个URI的媒体,客户端必须发出一个TEARDOWN请求 当前会话和指定的新会话的SETUP 主机。
此示例请求将此URI的流量重定向到新服务器 在给定的比赛时间:
S->C: REDIRECT rtsp://example.com/fizzle/foo RTSP/1.0
CSeq: 732
Location: rtsp://bigserver.com:8001
Range: clock=19960213T143205Z-
如果您还需要其他信息,请告诉我们!