Probleme beim Erhalten von "RTSP über HTTP"

4350
Muhammad Adeel Zahid

Es gibt eine Achskamera, die über eine One-Click-Verbindungskomponente (die als Proxy fungiert) mit unserer Site (camba.tv) verbunden ist. Wir können mit dieser Kamera nur über http kommunizieren, indem Sie den Proxy auf die Adresse unseres OCCC-Servers setzen. Wenn wir RTSP-Streams (h.264) erhalten möchten, bleibt nur die Option "RTSP über HTTP". Hierzu habe ich die Dokumentation zu Achse VAPIX 3, Abschnitt 3.3, beachtet . Ich stelle Anfragen über Fiddler aus, bekomme aber keine Antwort. Wenn ich jedoch die URL (axrtsphttp: //1.00408CBEA38B/axis-media/media.amp) in Windows Media Player (mit Proxy auf OCCC-Server 212.78.237.156:3128) stelle, kann der Player den RTSP-Stream über HTTP abrufen Einloggen.

 http://1.00408cbea38b/axis-media/media.amp HTTP/1.1  x-sessioncookie: 619  User-Agent: Axis AMC  Host: 1.00408CBEA38B  Proxy-Connection: Keep-Alive  Pragma: no-cache  Authorization: Digest username="root",realm="AXIS_00408CBEA38B",nonce="000a8b40Y0100409c13ac7e6cceb069289041d8feb1691",uri="/axis-media/media.amp",cnonce="9946e2582bd590418c9b70e1b17956c7",nc=00000001,response="f3cab86fc84bfe33719675848e7fdc0a",qop="auth"    HTTP/1.0 200 OK  Content-Type: application/x-rtsp-tunnelled  Date: Tue, 02 Nov 2010 11:45:23 GMT    RTSP/1.0 200 OK  CSeq: 1  Content-Type: application/sdp  Content-Base: rtsp://1.00408CBEA38B/axis-media/media.amp/  Date: Tue, 02 Nov 2010 11:45:23 GMT  Content-Length: 410    v=0  o=- 1288698323798001 1288698323798001 IN IP4 1.00408CBEA38B  s=Media Presentation  e=NONE  c=IN IP4 0.0.0.0  b=AS:50000  t=0 0  a=control:*  a=range:npt=0.000000-  m=video 0 RTP/AVP 96  b=AS:50000  a=framerate:30.0  a=transform:1,0,0;0,1,0;0,0,1  a=control:trackID=1  a=rtpmap:96 H264/90000  a=fmtp:96 packetization-mode=1; profile-level-id=420029; sprop-parameter-sets=Z0IAKeNQFAe2AtwEBAaQeJEV,aM48gA==  RTSP/1.0 200 OK  CSeq: 2  Session: 3F4763D8; timeout=60  Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=060922C6;mode="PLAY"  Date: Tue, 02 Nov 2010 11:45:24 GMT    RTSP/1.0 200 OK  CSeq: 3  Session: 3F4763D8  Range: npt=0-  RTP-Info: url=rtsp://1.00408CBEA38B/axis-media/media.amp/trackID=1;seq=7392;rtptime=4190934902  Date: Tue, 02 Nov 2010 11:45:24 GMT [Binary Stream Content] 

Wenn ich diese Anfrage jedoch an Fiddler kopiere, erhalte ich nur 200 Statuscode, wobei der Inhaltstyp auf application / x-rtsp-tunneled gesetzt ist und keine Stream-Daten vorhanden sind. Das einzige, was ich mit Stream anders mache, ist die Verwendung Basicim Berechtigungsheader anstelle von Digestund ich bekomme keinen 401 (Un-Authorized) -Statuscode. Kann jemand erklären, was hier passiert? Wie schreibe ich Anforderungssequenzen, um Stream in Fiddler zu bekommen? Wenn es erforderlich ist, kann ich irgendwo den Wireshark-Request-Dump hochladen.

2
Ihre Frage ist völlig verstümmelt und schwer zu lesen. Wenn Sie das Format verbessern und einige Details hinzufügen, erhalten Sie möglicherweise einige Antworten. harrymc vor 11 Jahren 0
Ich versuche einfach, dies zu implementieren (https://developer.apple.com/quicktime/icefloe/dispatch028.html). Ich habe die Anforderungs- und Antwortspur zwischen Windows Media Player und der Kamera eingefügt. Ich möchte die gleiche Funktionalität mit einer einfachen HTTP-Anfrage erreichen, ist aber bisher fehlgeschlagen. Was kann ich tun, um die Lesbarkeit des POST zu verbessern? Muhammad Adeel Zahid vor 11 Jahren 0
Zur besseren Lesbarkeit: Teilen Sie Ihre Frage in Absätze auf, fügen Sie Details hinzu (z. B. zu Ihren Anforderungen über Fiddler), entfernen Sie die leeren Zeilen in der Ablaufverfolgung und teilen Sie sie in Teile / Nachrichten auf, während Sie vor jedem Teil die von ihnen verfolgten Aktionen detailliert auflisten. Wir möchten Ihnen gerne helfen, aber unsere Zeit ist begrenzt, Sie müssen es also einfach und schnell machen, damit wir es verstehen können. harrymc vor 11 Jahren 0

1 Antwort auf die Frage

0
Mikhail Melnik

"RTSP über HTTP" besteht eigentlich aus 2 Sitzungen. Die erste ist die GET-Sitzung, die für das Streaming von Daten und für die Beantwortung von Befehlen verwendet wird, und die zweite ist die POST-Sitzung, die zum Senden von Befehlen verwendet wird. Sie haben nur die erste Sitzung beschrieben. Um den RTSP-Stream zu erhalten, müssen Sie auch die zweite Sitzung implementieren. Die Interaktion sollte wie folgt aussehen:

  1. Erstellen Sie die erste Verbindung und senden Sie die GET-Anfrage mit den entsprechenden x-sessioncookie- und Authorization-Headern.
  2. Erstellen Sie eine zweite Verbindung und senden Sie eine POST-Anforderung mit den entsprechenden Kopfzeilen und Ihrem Befehl.
  3. Erhalten Sie die Antwort auf Ihren Befehl in der ersten Verbindung als Teil der GET-Antwort.
  4. Fahren Sie mit dem Senden von Befehlen in der zweiten Verbindung fort und empfangen Sie Daten in der ersten Verbindung.