通过HTTP .NET获取RTSP

时间:2012-06-13 07:21:04

标签: http rtsp vapix

我在asp.net C#中,我希望从通过HTTP隧道传输的轴摄像头获取RTSP流。为此,我正在关注axis api documentation(第16页以后)。我向具有授权标头的摄像机发出了HTTP请求,并且RTSP Describe命令是基于64编码的,并通过POST发送到摄像机URL。这是HTTP请求。

POST http://195.29.168.2:20000/axis-media/media.amp HTTP/1.1
User-Agent: Fiddler
Authorization: Basic VXNlcjpDQG1VNTNy
Host: 195.29.168.2:20000
Content-Length: 214
Content-Type: application/x-rtsp-tunnelled

[Base 64 encoded Describe command]
DESCRIBE rtsp://195.29.168.2:20000/axis-media/media.amp
     ?videocodec=h264&resolution=640x480 RTSP/1.0\r\n
    CSeq: 0\r\n
    User-Agent: Axis AMC\r\n
    Accept: application/sdp\r\n

我打算从Describe命令获取trackId参数,然后在后续Setup命令中使用它来与服务器建立会话,但每次发送此请求时,都会发送400(错误请求)参数通过相机。我做错了什么?
注意:所有请求均来自fiddler

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。事实证明,您需要在一条线上将每个参数发送到摄像机。 如:

DESCRIBE rtsp://195.29.168.2:20000/axis-media/media.amp?videocodec=h264&resolution=640x480 RTSP/1.0
CSeq: 0
User-Agent: Axis AMC
Accept: application/sdp

如果您按照下图所示进行操作,相机会在中间获取换行符并拧紧请求。有点烦人的是,轴页面上的api显示它的格式是这样的。

DESCRIBE rtsp://195.29.168.2:20000/axis-media/media.amp
     ?videocodec=h264&resolution=640x480 RTSP/1.0

我不会使用fiddler,它完全阻止了RTSP为我工作。 Wireshark工作正常。我用puTty与相机沟通。我最终想使用Web浏览器并使用PHP发送/接收命令,但我不知道该怎么做。

我知道如何发送GET请求,如果它看起来如下,因为它只是在网址中

http://myserver/axis-cgi/mjpg/video.cgi?resolution=320x240&compression=25&camera=1

但是当看起来下面的内容我对如何从网络浏览器将其发送到服务器感到困惑。

    SETUP rtsp://myserver/axis-media/media.amp/
trackID=1?videocodec=h264&resolution=640x480 RTSP/1.0
CSeq: 2
User-Agent: Axis AMC
Transport: RTP/AVP;unicast;client_port=20000-20001

如果有人可以提供帮助,那就太棒了,我只是在学习php,我可以使用它吗?