2012-06-13 176 views
1

我在asp.net C#中,我想从通过HTTP隧道传输的轴摄像头获取RTSP流。为此,我正在关注axis api documentation(从第16页开始)。我向授权头的摄像头发出了HTTP请求,并且RTSP Describe命令被base 64编码并通过POST发送到摄像头URL。这是HTTP请求。通过HTTP获取RTSP .NET

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(坏请求)参数是由摄像机发送建立会话。我究竟做错了什么?
说明:所有的请求均来自提琴手

回答

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工作正常。我用puTty与相机沟通。我最终想使用Web浏览器并使用PHP发送/接收命令,但我没有得到如何去做。

我知道如何,如果它看起来像下面发送GET请求,因为它只是在url

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

但是,当它看起来像下面这里IM困惑,你会如何将其发送到从网络浏览器的服务器..

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