Das Real-Time Streaming Protocol ( RTSP ) ist ein Anwendungsprotokoll, das für das Multiplexen und Paketieren von Multimedia- Transportströmen (wie interaktiven Medien , Video und Audio ) über ein geeignetes Transportprotokoll entwickelt wurde . RTSP wird in Unterhaltungs- und Kommunikationssystemen zur Steuerung von Streaming- Medienservern eingesetzt . Das Protokoll dient dem Aufbau und der Steuerung von Mediensitzungen zwischen Endpunkten. Clients von Medienservern senden Befehle wie „ Wiedergabe“ , „Aufnahme“ und „Pause“ , um die Medienübertragung vom Server zum Client ( Video-on-Demand ) oder vom Client zum Server ( Sprachaufzeichnung ) in Echtzeit zu steuern .

Geschichte

RTSP wurde von RealNetworks , Netscape und der Columbia University entwickelt . [ 1 ] [ 2 ] Der erste Entwurf des Protokolls wurde im Oktober 1996 von Netscape und Progressive Networks bei der IETF eingereicht . Im Dezember desselben Jahres reichte Henning Schulzrinne von der Columbia University „RTSP՚“ („RTSP prime“) ein. [ 3 ] [ 4 ] Die beiden Entwürfe wurden von der Multiparty Multimedia Session Control Working Group (MMUSIC WG) der Internet Engineering Task Force (IETF) zur Standardisierung zusammengeführt, und weitere Entwürfe wurden von der Arbeitsgruppe veröffentlicht. [ 5 ] [ 6 ] RTSP wurde 1998 als RFC 2326 veröffentlicht. [ 7 ]

RTSP 2.0 wurde 2016 als RFC 7826 als Nachfolger von RTSP 1.0 veröffentlicht. Version 2.0 basiert auf Version 1.0, ist aber (mit Ausnahme des grundlegenden Versionsverhandlungsmechanismus) nicht abwärtskompatibel. [ 8 ]

RTP

Die Übertragung von Streaming-Daten selbst ist keine Aufgabe von RTSP. Die meisten RTSP-Server nutzen das Real-time Transport Protocol (RTP) in Verbindung mit dem Real-time Control Protocol (RTCP) zur Bereitstellung von Mediendatenströmen. Einige Anbieter implementieren jedoch proprietäre Transportprotokolle. Die RTSP-Serversoftware von RealNetworks beispielsweise nutzte auch RealNetworks' proprietäres Real Data Transport (RDT).

Protokollrichtlinien

RTSP ähnelt HTTP in mancher Hinsicht , definiert jedoch Steuersequenzen, die für die Steuerung der Multimedia-Wiedergabe nützlich sind. Während HTTP zustandslos ist , verfügt RTSP über einen Zustand; bei Bedarf wird eine Kennung verwendet, um gleichzeitige Sitzungen zu verfolgen. Wie HTTP nutzt auch RTSP TCP, um eine Ende-zu-Ende-Verbindung aufrechtzuerhalten. Die meisten RTSP-Steuernachrichten werden zwar vom Client an den Server gesendet, einige Befehle werden jedoch in umgekehrter Richtung (d. h. vom Server zum Client) übertragen.

Nachfolgend werden die grundlegenden RTSP-Anfragen dargestellt. Einige typische HTTP-Anfragen , wie die OPTIONS-Anfrage, sind ebenfalls verfügbar. Die Standardportnummer der Transportschicht ist 554 [ 7 ] , sowohl für TCP als auch für UDP , wobei UDP jedoch selten für Steuerungsanfragen verwendet wird.

Optionen

Eine OPTIONS-Anfrage gibt die Anfragetypen zurück, die der Server akzeptiert.
C->S: OPTIONS rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 1 Erforderlich: implizites Spiel Proxy-Require: gzipped-messages S->C: RTSP/1.0 200 OK CSeq: 1 Öffentlich: BESCHREIBEN, AUFBAUEN, ABBAUEN, ABSPIELEN, PAUSE 

BESCHREIBEN

Eine DESCRIBE-Anfrage enthält eine RTSP- rtsp://URL und den Typ der verarbeitbaren Antwortdaten. Diese Antwort umfasst die Präsentationsbeschreibung, typischerweise im SDP-Format ( Session Description Protocol ). Die Präsentationsbeschreibung listet unter anderem die Medienströme auf, die über die aggregierte URL gesteuert werden. In der Regel gibt es jeweils einen Medienstrom für Audio- und Videostreams. Die URLs der Medienströme werden entweder direkt aus den SDP-Steuerfeldern oder durch Anhängen des SDP-Steuerfelds an die aggregierte URL ermittelt.
C->S: DESCRIBE rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 2 S->C: RTSP/1.0 200 OK CSeq: 2 Content-Base: rtsp://example.com/media.mp4 Content-Type: application/sdp Inhaltslänge: 460 m=Video 0 RTP/AVP 96 a=control:streamid=0 a=range:npt=0-7.741000 a=length:npt=7.741000 a=rtpmap:96 MP4V-ES/5544 a=mimetype:string;"video/MP4V-ES" a=AvgBitRate:integer;304018 a=StreamName:string;"angedeutete Videospur" m=Audio 0 RTP/AVP 97 a=control:streamid=1 a=range:npt=0-7.712000 a=length:npt=7.712000 a=rtpmap:97 mpeg4-generic/32000/2 a=mimetype:string;"audio/mpeg4-generic" a=AvgBitRate:integer;65790 a=StreamName:string;"angedeutete Audiospur" 

AUFSTELLEN

Eine SETUP-Anfrage legt fest, wie ein einzelner Medienstream übertragen wird. Dies muss vor dem Senden einer PLAY-Anfrage erfolgen. Die Anfrage enthält die URL des Medienstreams und einen Transportbezeichner. Dieser Bezeichner umfasst typischerweise einen lokalen Port für den Empfang von RTP- Daten (Audio oder Video) und einen weiteren für RTCP -Daten (Metadaten). Die Serverantwort bestätigt üblicherweise die gewählten Parameter und ergänzt fehlende Angaben, wie z. B. die vom Server verwendeten Ports. Jeder Medienstream muss mit SETUP konfiguriert werden, bevor eine aggregierte Wiedergabeanfrage gesendet werden kann.
C->S: SETUP rtsp://example.com/media.mp4/streamid=0 RTSP/1.0 CSeq: 3 Transport: RTP/AVP;unicast;client_port=8000-8001 S->C: RTSP/1.0 200 OK CSeq: 3 Transport: RTP/AVP;unicast;client_port=8000-8001;server_port=9000-9001;ssrc=1234ABCD Sitzung: 12345678 C->S: SETUP rtsp://example.com/media.mp4/streamid=1 RTSP/1.0 CSeq: 3 Transport: RTP/AVP;Unicast;Client-Port=8002-8003 Sitzung: 12345678 S->C: RTSP/1.0 200 OK CSeq: 3 Transport: RTP/AVP;unicast;client_port=8002-8003;server_port=9002-9003;ssrc=1234ABCD Sitzung: 12345678 

SPIELEN

Eine PLAY-Anfrage startet die Wiedergabe eines oder aller Medienstreams. Mehrere PLAY-Anfragen können gestapelt werden. Die URL kann die Gesamt-URL (zum Abspielen aller Medienstreams) oder die URL eines einzelnen Medienstreams (zum Abspielen nur dieses Streams) sein. Es kann ein Bereich angegeben werden. Wird kein Bereich angegeben, wird der Stream von Anfang bis Ende abgespielt oder, falls er pausiert ist, an der Stelle fortgesetzt, an der er pausiert wurde.
C->S: PLAY rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 4 Bereich: npt=5-20 Sitzung: 12345678 S->C: RTSP/1.0 200 OK CSeq: 4 Sitzung: 12345678 RTP-Info: url=rtsp://example.com/media.mp4/streamid=0;seq=9810092;rtptime=3450012 

PAUSE

Eine PAUSE-Anfrage unterbricht vorübergehend einen oder alle Medienstreams, die später mit einer PLAY-Anfrage fortgesetzt werden können. Die Anfrage enthält eine aggregierte URL oder eine URL für einen Medienstream. Ein Bereichsparameter in einer PAUSE-Anfrage gibt an, wann pausiert werden soll. Wird der Bereichsparameter weggelassen, erfolgt die Pause sofort und unbegrenzt.
C->S: PAUSE rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 5 Sitzung: 12345678 S->C: RTSP/1.0 200 OK CSeq: 5 Sitzung: 12345678 

AUFZEICHNEN

Diese Methode initiiert die Aufzeichnung verschiedener Mediendaten gemäß der Präsentationsbeschreibung. Der Zeitstempel gibt Start- und Endzeit (in UTC) an. Ist kein Zeitraum angegeben, wird die in der Präsentationsbeschreibung angegebene Start- oder Endzeit verwendet. Beginnt die Sitzung bereits, startet die Aufzeichnung sofort. Der Server entscheidet, ob die aufgezeichneten Daten unter der angeforderten URI oder einer anderen URI gespeichert werden. Verwendet der Server nicht die angeforderte URI, sollte die Antwort den Statuscode 201 haben und eine Entität enthalten, die den Status der Anfrage beschreibt und auf die neue Ressource verweist, sowie einen Location-Header.
C->S: RECORD rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 6 Sitzung: 12345678 S->C: RTSP/1.0 200 OK CSeq: 6 Sitzung: 12345678 

ANMELDEN

Die ANNOUNCE-Methode dient zwei Zwecken:

Wenn ANNOUNCE vom Client an den Server gesendet wird, übermittelt es die Beschreibung einer Präsentation oder eines Medienobjekts, das durch die Anfrage-URL identifiziert wird, an den Server. Wenn ANNOUNCE vom Server an den Client gesendet wird, aktualisiert es die Sitzungsbeschreibung in Echtzeit. Wird einer Präsentation ein neuer Medienstream hinzugefügt (z. B. während einer Live-Präsentation), muss die gesamte Präsentationsbeschreibung erneut gesendet werden, nicht nur die zusätzlichen Komponenten, damit diese gelöscht werden können.
 C->S: ANNOUNCE rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 7 Datum: 23. Januar 1997 15:35:06 GMT Sitzung: 12345678 Content-Type: application/sdp Inhaltslänge: 332 v=0 o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4 s=SDP Seminar i=Ein Seminar zum Sitzungsbeschreibungsprotokoll u= http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps e=mjh@isi.edu (Mark Handley) c=IN IP4 224.2.17.12/127 t=2873397496 2873404696 a=recvonly m=audio 3456 RTP/AVP 0 m=Video 2232 RTP/AVP 31 S->C: RTSP/1.0 200 OK CSeq: 7 

ABREISSEN

Eine TEARDOWN-Anforderung dient zum Beenden der Sitzung. Sie stoppt alle Medienstreams und gibt alle sitzungsbezogenen Daten auf dem Server frei.
C->S: TEARDOWN rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 8 Sitzung: 12345678 S->C: RTSP/1.0 200 OK CSeq: 8 

GET_PARAMETER

Die GET_PARAMETER-Anfrage ruft den Wert eines Parameters einer in der URI angegebenen Präsentation oder eines Streams ab. Der Inhalt der Antwort ist implementierungsabhängig. GET_PARAMETER-Anfragen ohne Antworttext können verwendet werden, um die Erreichbarkeit von Client oder Server zu testen („Ping“).
S->C: GET_PARAMETER rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 9 Content-Type: text/parameters Sitzung: 12345678 Inhaltslänge: 15 empfangene Pakete Zittern C->S: RTSP/1.0 200 OK CSeq: 9 Inhaltslänge: 46 Content-Type: text/parameters Empfangene Pakete: 10 Jitter: 0,3838 

SET_PARAMETER

Diese Methode fordert dazu auf, den Wert eines Parameters für eine durch den URI angegebene Präsentation oder einen Stream festzulegen.
C->S: SET_PARAMETER rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 10 Inhaltslänge: 20 Inhaltstyp: text/parameters barparam: barstuff S->C: RTSP/1.0 451 Ungültiger Parameter CSeq: 10 Inhaltslänge: 10 Inhaltstyp: text/parameters barparam 

UMLEITEN

Eine REDIRECT-Anfrage teilt dem Client mit, dass er eine Verbindung zu einem anderen Server herstellen muss. Sie enthält den obligatorischen Header „Location“, der angibt, dass der Client Anfragen an diese URL senden soll. Optional kann der Parameter „Range“ enthalten sein, der den Zeitpunkt der Umleitung festlegt. Möchte der Client weiterhin Medien für diese URI senden oder empfangen, muss er eine TEARDOWN-Anfrage für die aktuelle Sitzung und eine SETUP-Anfrage für die neue Sitzung am angegebenen Host senden.
S->C: REDIRECT rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 11 Standort: rtsp://bigserver.com:8001 Bereich: Uhr=19960213T143205Z- 

Eingebettete (verschachtelte) Binärdaten

Bestimmte Firewall-Architekturen oder andere Umstände können einen Server dazu zwingen, RTSP-Methoden und Streaming-Daten zu verschachteln. Diese Verschachtelung sollte im Allgemeinen vermieden werden, sofern sie nicht unbedingt erforderlich ist, da sie den Betrieb von Client und Server erschwert und zusätzlichen Aufwand verursacht. Verschachtelte Binärdaten sollten nur verwendet werden, wenn RTSP über TCP übertragen wird.

Streamdaten, wie z. B. RTP-Pakete, werden durch ein ASCII-Dollarzeichen (24 hexadezimal) gekapselt, gefolgt von einer ein Byte langen Kanalkennung und der Länge der gekapselten Binärdaten als zwei Byte lange Ganzzahl in Netzwerk-Byte-Reihenfolge. Unmittelbar im Anschluss folgen die Streamdaten ohne CRLF, jedoch einschließlich der Protokollheader der höheren Schicht. Jeder $-Block enthält genau eine Dateneinheit des Protokolls der höheren Schicht, z. B. ein RTP-Paket.

C->S: SETUP rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 3 Transport: RTP/AVP/TCP;interleaved=0-1 S->C: RTSP/1.0 200 OK CSeq: 3 Datum: 05. Juni 1997 18:57:18 GMT Transport: RTP/AVP/TCP;interleaved=0-1 Sitzung: 12345678 C->S: PLAY rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 4 Sitzung: 12345678 S->C: RTSP/1.0 200 OK CSeq: 4 Sitzung: 12345678 Datum: 05. Juni 1997 18:59:15 GMT RTP-Info: url=rtsp://example.com/media.mp4;seq=232433;rtptime=972948234 S->C: $\000{2 Byte Länge}{"Länge" Bytes Daten, mit RTP-Header} S->C: $\000{2 Byte Länge}{"Länge" Bytes Daten, mit RTP-Header} S->C: $\001{2 Byte Länge}{"Länge" Bytes RTCP-Paket} 

RTSP über HTTP

RTSP über HTTP wurde 1999 von Apple definiert. [ 9 ] Es bettet die RTP-Video- und Audiodaten in die RTSP-Befehlsverbindung (gemäß RFC 2326) ein und sendet diese anschließend über zwei HTTP-Verbindungen. Eine davon ist eine dauerhafte GET-Verbindung, die andere eine dauerhafte POST-Verbindung.

Diese Methode wird auch im ONVIF IP-Kamerastandard verwendet und kann mit HTTPS für sichere und verschlüsselte Video- und Audioübertragung kombiniert werden.

RTSP-Verschlüsselung und RTSPS

Es gibt verschiedene Methoden zur Verschlüsselung von RTSP-Befehlsnachrichten und RTP-Video- und Audiodaten.

RTSP 2.0 (RFC7826) definiert verschiedene Verschlüsselungsmethoden und führt eine neue rtsps://URL ein. Viele davon wurden in RFC2326 RTSP 1.0 Clients und Server integriert.

  • RTSP-URL (über die rtsps://URL) – Diese Methode verwendet einen TLS- Socket (standardmäßig Port 322), um eine verschlüsselte Verbindung zwischen dem RTSP-Client und dem RTSP-Server herzustellen. Video und Audio können dann auf zwei Arten übertragen werden:
    • TCP Video/Audio - Das RTP-Video und -Audio wird zusammen mit den RTSP-Befehlen über die bereits verschlüsselte TLS -Verbindung gesendet .
    • UDP und Multicast-UDP Video/Audio - das RTP-Video und -Audio wird mit dem Secure RTP (SRTP) -Protokoll verschlüsselt und parallel zur RTSPS -TLS -Verbindung gesendet.
  • RTSP über HTTPS – diese Methode bettet die RTP-Video- und Audiodaten in die RTSP-Befehlsverbindung (gemäß RFC 2326) ein und sendet diese anschließend über zwei verschlüsselte HTTPS-Verbindungen. Standardmäßig wird Port 443 verwendet.

rtsps://Die IANA hat das URL-Präfix und Port 322 für RTSP reserviert . [ 10 ] Stand September 2024 ist RTSP über HTTPS in mehreren ONVIF-IP-Kameras implementiert, und RTSP (über die rtsps://URL) wird von Axis- und Bosch-Überwachungskameras [ 11 ] , FFmpeg , GStreamer , MediaMTX [ 12 ] , Ant Media Server [ 13 ] und SharpRTSP [ 14 ] unterstützt.

Anpassung der Tarife

RTSP unter Verwendung von RTP und RTCP ermöglicht die Implementierung der Ratenanpassung. [ 15 ]

Implementierungen

Server

Many CCTV / Security cameras, often called IP cameras, support RTSP streaming too, especially those with ONVIF profiles G, S, T.

Client

Referenzen

  1. ^ InfoWorld Media Group, Inc. (2. März 1998). InfoWorld . InfoWorld Media Group, Inc. S. 18. ISSN 0199-6649 . 
  2. ^ Rafael Osso (1999). Handbuch der neuen Kommunikationstechnologien: Das nächste Jahrzehnt . CRC Press. S. 42. ISBN 978-1-4200-4962-6Die
  3. ^ Rao, Anup; Lanphier, Rob. „Real Time Streaming Protocol (RTSP)“ . IETF Datatracker . Abgerufen am 23.02.2021 .
  4. ^ Henning Schulzrinne (Dezember 1996). „RTSP prime“ . Columbia University .
  5. ^ Schulzrinne, Henning ; Rao, Anup; Lanphier, Rob (24.02.1997). „Real Time Streaming Protocol (RTSP) (draft-ietf-mmusic-rtsp-01.txt)“ . IETF Datatracker . Abgerufen am 23.02.2021 .
  6. ^ Schulzrinne, Henning ; Rao, Anup; Lanphier, Rob (15.01.1998). „Real Time Streaming Protocol (RTSP) (draft-ietf-mmusic-rtsp-08.txt)“ . IETF Datatracker . Abgerufen am 23.02.2021 .
  7. ^ a b H. Schulzrinne ; A. Rao; R. Lanphier (April 1998). Real Time Streaming Protocol (RTSP) . Network Working Group. doi : 10.17487/RFC2326 . RFC 2326 .Veraltet. Ersetzt durch RFC  7826 .
  8. ^ H. Schulzrinne ; A. Rao; R. Lanphier; M. Westerlund (Dezember 2016). M. Stiemerling (Hrsg.). Real-Time Streaming Protocol Version 2.0 . Internet Engineering Task Force . doi : 10.17487/RFC7826 . ISSN 2070-1721 . RFC 7826 . Vorgeschlagener Standard. Ersetzt RFC  2326 .
  9. ^ „Entwickler – QuickTime – Briefe von der Eisscholle“ . 1. Mai 2013. Archiviert vom Original am 1. Mai 2013. Abgerufen am 22. September 2024 .Tunneling QuickTime RTSP and RTP over HTTP at the Wayback Machine (archived 2024-02-15)
  10. ^ "Register für Dienstnamen und Transportprotokoll-Portnummern" .
  11. ^ "Sicheres RTSP-Streaming - SRTP/RTSPS" .
  12. ^ MediaMTX
  13. ^ Ant Media Server Community
  14. ^ "Ngraziano/SharpRTSP" . GitHub .
  15. ^ Santos, Hugo; Cruz, Rui Santos; Nunes, Mário Serafim (2010), „Rate Adaptation Techniques for WebTV“, User Centric Media , Vorlesungsunterlagen des Instituts für Informatik, Sozialinformatik und Telekommunikationstechnik, vol. 40, S.  161–168 , doi : 10.1007/978-3-642-12630-7_19 , ISBN 978-3-642-12629-1
  16. ^ ant-media/Ant-Media-Server , Ant Media, 12.12.2024 , abgerufen am 13.12.2024
  17. ^ „YouTube Mobile – Ein Reinfall! (3GP/RTSP auf WM5 zum Laufen bringen)“ . Chris Duke . 23.06.2007 . Abgerufen am 29. Mai 2021 .
  18. ^ cURL — Änderungen
  19. ^ „FFmpeg-Dokumentation“ . Das FFmpeg-Projekt. 11. September 2012. Abschnitt 20.19 . Abgerufen am 11. September 2012 .