2012-06-13 141 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我可以使用它?