1

我在 asp.net C# 中,我想从通过 HTTP 隧道传输的轴相机获取 RTSP 流。为此,我正在关注轴 api 文档(从第 16 页开始)。我向带有授权标头的相机发出 HTTP 请求,RTSP Describe命令是 base 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(错误请求)参数。我究竟做错了什么?
注意:所有请求都是从提琴手发出的

4

1 回答 1

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

我不会使用提琴手,它完全停止了 RTSP 为我工作。Wireshark 工作正常。我使用腻子与相机进行通信。我最终想使用网络浏览器并使用 PHP 来发送/接收命令,但我不知道该怎么做。

如果 GET 请求如下所示,我知道如何发送它,因为它只是在 url 中

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,我可以使用它吗?

于 2012-06-28T21:15:02.647 回答