Technologieaustausch

[Audio und Video |. RTSP] Detaillierte Erläuterung des RTSP-Protokolls und Analyse von Paketerfassungsbeispielen (ausführlich, ohne auf Details einzugehen)

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀
🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C 、数据结构、音视频🍭
🤣本文内容🤣:🍭介绍RTSP协议 🍭
😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭
⏰Veröffentlichungszeit⏰: 06.07.2024 12:22:00

Dieser Artikel darf nicht ohne Genehmigung weitergegeben werden! ! !


Fügen Sie hier eine Bildbeschreibung ein

🎄一、概述

RTSP, vollständiger Name Real Time Streaming Protocol, das Echtzeit-Streaming-Protokoll, ist ein Protokoll der Anwendungsschicht im TCP/IP-Protokollsystem. Es handelt sich um einen IETF-RFC-Standard, der von der Columbia University, Netscape und RealNetworks eingereicht wurde.

Das offizielle Dokument zum RTSP-Protokoll ist RFC2326, Dokumentlink:RFC2326-Echtzeit-Streaming-Protokoll (RTSP)

Es wird auf die Syntax und Funktionsweise des RTSP-Protokolls verwiesen. HTTP/1.1, ein textbasiertes Protokoll, das den ISO10646-Zeichensatz und die UTF-8-Kodierung verwendet; das Transportschichtprotokoll, das RTSP überträgtTCP, Standardport554; Wenn es sich um RTSP-über-HTTP-Tunneling handelt, ist der Standard-TCP-Port 8080, der im Allgemeinen in Verbindung mit dem RTP/RTCP-Protokoll verwendet wird. Das RTP-Protokoll überträgt Echtzeit-Stream-Daten und das RTCP-Protokoll vervollständigt die Übertragung von Datenströmen Steuerbefehle.

Fügen Sie hier eine Bildbeschreibung ein

RTP-Protokoll: vollständiger NameReal-time Transport Protocol , das Echtzeit-Übertragungsprotokoll, wurde 1996 von der Multimedia Transmission Working Group der IETF in RFC 1889 angekündigt. Das RTP-Protokoll beschreibt das Standardpaketformat für die Bereitstellung von Audio und Video über das Internet. Es basiert auf dem UDP-Protokoll.

RTCP-Protokoll: vollständiger NameReal-time Transport Control Protocol , Echtzeit-Transportkontrollprotokoll, verwendet mit RTP. RTP verwendet einen UDP-Port mit gerader Nummer; RTCP verwendet den nächsten Port von RTP, bei dem es sich um einen Port mit ungerader Nummer handelt. RTCP und RTP arbeiten zusammen. RTP implementiert die Übertragung tatsächlicher Daten, und RTCP ist für das Senden von Steuerpaketen an alle Teilnehmer der Sitzung verantwortlich. Seine Hauptfunktion besteht darin, Feedback zur Qualität der von RTP bereitgestellten Dienste zu geben.

Der Unterschied zwischen RTSP-Protokoll und HTTP-Protokoll:
RTSP ist zustandsbehaftet und seine Befehle werden immer der Reihe nach gesendet, und ein Befehl muss möglicherweise immer vor einem anderen Befehl gesendet werden. HTTP ist zustandslos, nachdem das Protokoll einen Befehl gesendet hat, und es besteht keine Abhängigkeit zwischen den Befehlen.
Das RTSP-Protokoll verwendet Port 554 und http verwendet Port 80.
RTSP-Anfragen können sowohl vom Server als auch vom Client gesendet werden, während HTTP-Anfragen nur vom Client gesendet werden können.


Fügen Sie hier eine Bildbeschreibung ein

🎄二、RTSP 方法

Zu den häufig verwendeten RTSP-Methoden gehören: OPTIONS, DESCRIBE, SETUP, PLAY, PAUSE, TEARDOWN, ANNOUNCE, GET_PARAMETER und SET_PARAMETER usw. Detaillierte Gebrauchsanweisungen sind wie folgt:

  • OPTIONS : Der Client erhält die vom Server unterstützte Methode vom Server. Es hat keinen Einfluss auf den Status des Servers;
  • DESCRIBE: Der Client erhält die Beschreibung des durch die URL angegebenen Medienobjekts vom ServerAcceptDas Feld gibt das Beschreibungsformat an;
  • SETUP : Der Client fordert den Server auf, eine Sitzung einzurichten und die Übertragung vorzubereiten. Zu den Anforderungsinformationen gehören hauptsächlich das Übertragungsprotokoll und die Portnummer des Clients;
  • PLAY : Der Client benachrichtigt den Server aktiv, mit dem Senden von Daten zu beginnen, indem er den von SETUP angegebenen Mechanismus verwendet.InRangeDas Feld gibt die Start- und Endzeit der Wiedergabe an (der Echtzeit-Stream-Bereich beträgt im Allgemeinen).Range: npt=0.000-), wenn mehrere PLAY-Anfragen eintreffen, stellt der Server die PLAY-Anfragen in die Warteschlange und führt sie nacheinander aus, d. h. er muss warten, bis die erste PLAY-Nachricht abgeschlossen ist, bevor er mit der Verarbeitung der zweiten PLAY-Nachricht fortfährt.
  • PAUSE : Der Client fordert, dass das Medien-Streaming des Servers vorübergehend ausgesetzt wird.passieren könnenRangeDer Parameter pausiert zu einem bestimmten Zeitpunkt, oder Sie können einen Stream angeben, der angehalten werden soll. Wenn Sie beispielsweise einen Audiostream zum Anhalten angeben, erfolgt die Wiedergabe stumm.
  • RECORD : RECORD benachrichtigt den Server, dass der Client mit der Aufzeichnung von Mediendaten gemäß der vorherigen Beschreibung beginnt. Intimestamp Die Felder geben Start- und Endzeiten (UTC) an. Wenn dieses Feld nicht vorhanden ist, wird die Start- oder Endzeit aus der Medienbeschreibung verwendet. Wenn die Sitzung bereits gestartet ist, beginnt die Aufzeichnung sofort.
    Der Server entscheidet, ob die aufgezeichneten Daten gespeichert werdenrequest-URI Weiter oder ein anderer URI. Wenn der Server keinen Anforderungs-URI verwendet, sollte die Antwort 201 (Erstellt) sein und einen Entitäts- und Standort-Header enthalten, der den Status der Anforderung beschreibt und auf die neue Ressource verweist.
  • TEARDOWN: Der Client fordert an, das Senden des angegebenen URL-Streams zu beenden und zugehörige Ressourcen freizugeben.
  • REDIRECT : Um eine Anfrage umzuleiten, benachrichtigt der Server den Client, dass er eine Verbindung zu einem anderen Serverstandort herstellen muss. Es enthält den obligatorischen Location-Header, der angibt, dass der Client eine Anfrage für diese URL stellen soll. Es kann den Parameter Range enthalten, der angibt, wann die Umleitung wirksam wird. Wenn der Client weiterhin Medien für diesen URI senden oder empfangen möchte, muss der Client eine TEARDOWN-Anfrage für die aktuelle Sitzung und ein SETUP für die neue Sitzung auf dem angegebenen Host ausgeben.
  • ANNOUNCE: Wenn der Client an den Server sendet, bedeutet dies, dass die durch die Anforderungs-URL identifizierte Präsentationsbeschreibung oder das Medienobjekt an den Server gesendet wird
    Wenn der Server es an den Client sendet, bedeutet dies, dass der Client benachrichtigt wird, die Sitzungsinformationen zu aktualisieren.
  • GET_PARAMETER :GET_PARAMETER-Anforderung zum Abrufen von Parameterwerten für die im URI angegebene Darstellung oder den Stream. Der Inhalt von Antworten und Rückmeldungen bleibt der Umsetzung überlassen. GET_PARAMETER ohne Entity-Body kann zum Testen der Liveness („Ping“) eines Clients oder Servers verwendet werden.
  • SET_PARAMETER : Diese Methode fordert zum Festlegen der Parameterwerte des in der Demo oder URL angegebenen Streams an. Anfragen sollten nur einen einzigen Parameter enthalten, damit der Client entscheiden kann, warum eine bestimmte Anfrage fehlgeschlagen ist. Wenn die Anfrage mehrere Parameter enthält, können alle Parameter erfolgreich eingestellt werden und der Server muss nur auf diese Anfrage reagieren. Der Server muss zulassen, dass Parameter wiederholt auf denselben Wert gesetzt werden, der Parameterwert darf jedoch nicht geändert werden. Hinweis: Medien-Streaming-Parameter müssen mit dem SETUP-Befehl festgelegt werden. Für Firewalls ist es von Vorteil, die Setup-Übertragungsparameter auf SETUP zu beschränken.

Oben werden insgesamt 11 RTSP-Methoden vorgestellt, darunter:SETUPPLAYTEARDOWN Die drei Befehle sind im RTSP-Prozess erforderlich, andere Methoden sind nicht erforderlich.UndANNOUNCEGET_PARAMETERSET_PARAMETERDie drei Befehle können vom Client an den Server oder vom Server an den Client gesendet werden. Die anderen Befehle werden vom Client an den Server gesendet.


Fügen Sie hier eine Bildbeschreibung ein

🎄三、RTSP 的 请求报文 与 响应报文

RTSP verfügt über zwei Arten von Nachrichten: Anforderungsnachrichten und Antwortnachrichten. Die Anforderungsnachricht bezieht sich auf die vom Client an den Server gesendete Anforderungsnachricht, und die Antwortnachricht bezieht sich auf die Antwort des Servers an den Client.

✨3.1, RTSP-Anforderungsnachricht

Die RTSP-Anforderungsnachricht besteht aus drei Teilen: Anforderungszeile, Anforderungsheader und Anforderungstext. Darunter ist die Anforderungszeile erforderlich, während der Anforderungsheader und der Anforderungstext je nach Situation optional sind.
Fügen Sie hier eine Bildbeschreibung ein

  • Anforderungszeile: Die Anforderungszeile besteht aus einer Methode, einem Anforderungs-URI und einer durch Leerzeichen getrennten Protokollversion mit vorangestelltem CRLF (d. h.:rn)Beenden.
    方法 : Es handelt sich um die oben vorgestellte RTSP-Methode. Einschließlich OPTIONEN, BESCHREIBEN, EINRICHTEN, SPIELEN, PAUSE, TEARDOWN usw.
    请求URI: Identifiziert die zu bedienende Medienressource, normalerweise im Format rtsp://example.com/path/to/stream.
    协议版本: Gibt normalerweise die RTSP-Protokollversion an, der die Anfrage folgtRTSP/1.0oderRTSP/2.0
    Hier ist ein Beispiel für eine vollständige Anfragezeile:
    OPTIONS rtsp://192.168.3.225:554/wbc RTSP/1.0
    
  • Anforderungsheader: Der Anforderungsheader enthält einige zusätzliche Informationen, z. B. CSeq (Sequenznummer zur Identifizierung der Anforderung), Sitzungs-ID (Sitzungskennung), Transport (Transportprotokoll) usw. Jedes Header-Feld besteht aus einem Feldnamen, einem Doppelpunkt und einem Feldwert, und jedes Header-Feld ist durch CRLF getrennt.
    Hier ist ein Beispiel für einen vollständigen Anforderungsheader:
    CSeq: 2
    User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
    
  • Anfragetext: Der Anfragetext dient der Übermittlung zusätzlicher Daten. Der spezifische Inhalt des Anforderungstexts hängt von der in der Anforderungszeile verwendeten RTSP-Methode ab. Hinweis: Nach dem Anforderungsheader muss eine Leerzeile (CRLF) eingefügt werden, um den Anforderungsheader vom Anforderungshauptteil zu unterscheiden. Die meisten Anfragenachrichten haben keinen Anfragetext.

✨3.2, RTSP-Antwortnachricht

Die RTSP-Anforderungsnachricht besteht aus drei Teilen: Statuszeile, Antwortheader und Antworttext. Darunter ist die Statuszeile erforderlich, während der Antwortheader und der Antworttext je nach Situation optional sind.
Fügen Sie hier eine Bildbeschreibung ein

  • Statuszeile: Die Statuszeile enthält eine Protokollversion, einen Statuscode und einen Statustext, getrennt durch Leerzeichen und abgeschlossen durch CRLF (z. B. „rn“).
    协议版本: Gibt die RTSP-Protokollversion an, der die Antwort folgt, normalerweise RTSP/1.0 oder RTSP/2.0.
    状态码 : Drei Ziffern, z. B. 200, 401, 500 usw., die zur Angabe des Verarbeitungsergebnisses der Anfrage verwendet werden. Die erste Ziffer stellt die Antwortkategorie dar: 2xx steht für Erfolg, 4xx für Clientfehler und 5xx für Serverfehler.
    状态文本: Eine kurze Textbeschreibung, die die spezifische Bedeutung des entsprechenden Statuscodes erläutert, z. B.: OK, Nicht autorisiert usw.
    Hier ist eine Beispielantwortzeile:
    RTSP/1.0 200 OK
    
  • Antwortheader: Der Antwortheader enthält ähnliche Informationen wie der Anforderungsheader, z. B. CSeq (Sequenznummer zur Identifizierung der Anforderung), Sitzungs-ID (Sitzungskennung), Transport (Transportprotokoll) usw. Das Format jedes Antwort-Header-Felds ist das gleiche wie das des Anforderungs-Headers, daher werden wir hier nicht auf Details eingehen.
    CSeq: 2
    Date: Wed, Feb 04 1970 03:25:10 GMT
    Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
    
  • Antworttext: Einige RTSP-Antworten (z. B. DESCRIBE) können einen Antworttext zur Übertragung zusätzlicher Daten enthalten.Hinweis: Nach dem Antwortheader muss eine Leerzeile (CRLF) eingefügt werdenUnterscheiden Sie zwischen Antwortheadern und Antworttext
    Nachfolgend finden Sie ein Beispiel für einen vollständigen Antworttext.
    v=0
    o=- 8913478 1 IN IP4 192.168.3.91
    s=LIVE555 Streaming Media v2016.07.19
    i=1080
    t=0 0
    a=tool:LIVE555 Streaming Media v2016.07.19
    a=type:broadcast
    a=control:*
    a=range:npt=0-
    a=x-qt-text-nam:LIVE555 Streaming Media v2016.07.19
    a=x-qt-text-inf:1080
    m=video 0 RTP/AVP 96
    c=IN IP4 0.0.0.0
    b=AS:5000
    a=rtpmap:96 H264/90000
    a=fmtp:96 packetization-mode=1;profile-level-id=64002A;sprop-parameter-sets=Z2QAKq2EAQwgCGEAQwgCGEAQwgCEO1A8ARPyoA==,aO48sA==
    a=control:track1
    m=audio 0 RTP/AVP 97
    c=IN IP4 0.0.0.0
    b=AS:768
    a=rtpmap:97 PCMA/48000/2
    a=control:track2
    

Fügen Sie hier eine Bildbeschreibung ein

🎄四、RTSP 报文的常用字段

Der Antwortheader der RTSP-Nachricht enthält einige Felder. Im Folgenden sind einige häufig verwendete Felder aufgeführt:

  • Akzeptieren : Wird verwendet, um den Typ der Entitätsdatenstruktur anzugeben, deren Annahme der Client dem Server mitteilt. Beispiel: Akzeptieren: application/sdp, dann gibt der Server seinen Entitätsdatenstrukturtyp über das Feld „Content-Type“ zurück;
  • Accept-Encoding: Wird vom Client verwendet, um den Server über die Datenkomprimierungsformate zu informieren, die er akzeptieren kann, zum Beispiel: Accept-Encoding: gzip, compress, br, und dann benachrichtigt der Server den Client über die Content-Encoding über seine Wahl Feld.
  • Accept-Language: wird vom Client verwendet, um dem Server die von ihm verständlichen Sprachen und deren Akzeptanz mitzuteilen, zum Beispiel: Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q =0,7, *; q=0,5, danach teilt der Server dem Client seine Wahl über das Feld „Content-Language“ mit
  • Autorisierung: Der Client-Anforderungsheader enthält die Anmeldeinformationen, die der Server zur Authentifizierung des Benutzeragenten verwendet.
  • Bandbreite: Wird verwendet, um den Bandbreitenwert zu beschreiben, der dem Client zur Verfügung steht. Beispiel: Bandbreite: 4000
  • Blockgröße: Dieses Feld wird vom Client an den Medienserver gesendet, um eine bestimmte Medienpaketgröße vom Server anzufordern. Dem Server steht es frei, kleinere Blockgrößen als angefordert zu verwenden. Diese Paketgröße umfasst keine Low-Level-Header wie IP, UDP oder RTP
  • CSeq : Gibt die Sequenznummer der RTSP-Anfrageantwort an. Jede RTSP-Anfrage muss einen eindeutigen CSeq-Wert enthalten, damit der Server die Anfrage korrekt identifizieren und verarbeiten kann. Diese Sequenznummer wird mit Anforderungsnachrichten erhöht. Die Serverantwort muss einen CSeq-Wert haben, der angibt, auf welche Anfrage geantwortet werden soll.
  • Cache-Kontrolle: Implementieren Sie den Caching-Mechanismus durch Angabe von Anweisungen.Caching-Anweisungen sind unidirektional, was bedeutet, dass in der Anfrage festgelegte Anweisungen nicht unbedingt in der Antwort enthalten sind.
  • Konferenz: Benachrichtigen Sie den Server, dass die Konferenz-ID derselben RTSP-Sitzung nicht geändert werden darf
  • Verbindung: Dieses Feld bestimmt, ob die Netzwerkverbindung geschlossen wird, nachdem die aktuelle Transaktion abgeschlossen ist. Wenn der Wert „Keep-Alive“ lautet, ist die Netzwerkverbindung dauerhaft und wird nicht geschlossen, sodass Anfragen an denselben Server weiterhin über die Verbindung abgeschlossen oder Verbindung: geschlossen werden können.
  • Inhaltslänge : Dieses Feld gibt die Inhaltslänge nach dem doppelten CRLF nach dem letzten Header des RTSP-Protokolls an.Geben Sie beispielsweise in der Serverantwort DESCRIBE die Länge der SDP-Informationen an
  • Inhaltstyp: Teilt dem Client den Inhaltstyp des tatsächlich zurückgegebenen Inhalts mit
  • Datum : Stellt das Datum und die Uhrzeit bereit, zu der der Server die Antwort generiert hat, was dem Client hilft, die Aktualität der Antwort zu bestimmen oder eine Zeitsynchronisierung durchzuführen. Das Format des Datumsfelds entspricht RFC 1123, zum Beispiel: Sa, 06. April 2024 11:15:00 GMT.
  • User-Agent: Dieses Feld wird verwendet, um dem Peer des Netzwerkprotokolls zu ermöglichen, den Anwendungstyp, das Betriebssystem, den Softwareentwickler und die Versionsnummer der Benutzeragentensoftware zu identifizieren, die die Anforderung initiiert hat.
  • Läuft ab: Geben Sie die Ablaufzeit an
  • Rang: Wird zur Angabe eines Zeitbereichs verwendet. Sie können SMPTE, NTP oder die Uhrzeiteinheit verwenden.
  • Sitzung :Das Session-Header-Feld identifiziert eine RTSP-Sitzung. Die Sitzungs-ID wird vom Server bestimmtSETUPIn der Antwort ausgewählt: Sobald der Client die Sitzungs-ID erhält, wird er die Sitzungs-ID in künftige Vorgangsanforderungsnachrichten für die Sitzung einbeziehen. Beispiel: Sitzung: 4581E0AE;
  • Transport : Das Transport-Header-Feld enthält eine Liste der für den Client akzeptablen Transportoptionen, einschließlich Transportprotokoll, Adressport, TTL usw. Der Server gibt auch die spezifische Option zurück, die tatsächlich über dieses Header-Feld ausgewählt wurde. Zum Beispiel: Transport: RTP/AVP/TCPunicast;destination=192.168.31.222;source=192.168.31.222;interleaved=0-1

Fügen Sie hier eine Bildbeschreibung ein

🎄五、RTSP 流程抓包解析

Verwenden Sie Wireshark, um die Netzwerkpakete von RTSP-Streaming-Medien zu erfassen. Sie können sehen, dass der allgemeine Prozess wie folgt abläuft:
1. Der Kunde sendetOPTIONSMethode, Serverantwort;
2. Der Kunde sendetDESCRIBEMethode, Serverantwort;
3. Der Kunde sendetSETUPMethode, Serverantwort;
2. Der Kunde sendetPLAYMethode, Serverantwort;
2. Der Kunde sendetTEARDOWNMethode, Serverantwort;
Fügen Sie hier eine Bildbeschreibung ein
Das vollständige Flusspaket lautet wie folgt:

OPTIONS rtsp://192.168.3.225:554/wbc RTSP/1.0
CSeq: 2
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)

RTSP/1.0 200 OK
CSeq: 2
Date: Wed, Jul 03 2024 14:42:11 GMT
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER

DESCRIBE rtsp://192.168.3.225:554/wbc RTSP/1.0
CSeq: 3
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
Accept: application/sdp

RTSP/1.0 200 OK
CSeq: 3
Date: Wed, Jul 03 2024 14:42:11 GMT
Content-Base: rtsp://192.168.3.225/wbc/
Content-Type: application/sdp
Content-Length: 472

v=0
o=- 1720014950032000 1 IN IP4 192.168.3.225
s=LIVE555 Streaming Media v2016.07.19
i=wbc
t=0 0
a=tool:LIVE555 Streaming Media v2016.07.19
a=type:broadcast
a=control:*
a=range:npt=0-
a=x-qt-text-nam:LIVE555 Streaming Media v2016.07.19
a=x-qt-text-inf:wbc
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:5000
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=640029;sprop-parameter-sets=Z2QAKawsaoHgCJ WbgoCCgQ=,aO4xshs=
a=control:track1
SETUP rtsp://192.168.3.225/wbc/track1 RTSP/1.0
CSeq: 4
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
Transport: RTP/AVP;unicast;client_port=55320-55321

RTSP/1.0 200 OK
CSeq: 4
Date: Wed, Jul 03 2024 14:42:11 GMT
Transport: RTP/AVP;unicast;destination=192.168.2.180;source=192.168.3.225;client_port=55320-55321;server_port=6970-6971
Session: 4581E0AE;timeout=65

PLAY rtsp://192.168.3.225/wbc/ RTSP/1.0
CSeq: 5
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
Session: 4581E0AE
Range: npt=0.000-

RTSP/1.0 200 OK
CSeq: 5
Date: Wed, Jul 03 2024 14:42:11 GMT
Range: npt=0.000-
Session: 4581E0AE
RTP-Info: url=rtsp://192.168.3.225/wbc/track1;seq=7880;rtptime=3548171463

TEARDOWN rtsp://192.168.3.225/wbc/ RTSP/1.0
CSeq: 6
User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
Session: 4581E0AE

RTSP/1.0 200 OK
CSeq: 6
Date: Wed, Jul 03 2024 14:42:19 GMT

Im Folgenden werden alle in der vorherigen Nachricht verwendeten RTSP-Methoden und -Antworten analysiert.

✨5.1, OPTION-Methode

Verfügbare Methoden vom Server abrufen:
Fügen Sie hier eine Bildbeschreibung ein
Der Client sendet die OPTIONS-Methode und verwendet sieCSeq Um die Anforderungssequenznummer anzugeben, verwenden SieUser-Agent den eigenen Agenten identifizieren;
Der Server antwortet auf die Anfrage mitCSeq Um anzugeben, auf welche Anfrage geantwortet wird, verwenden SieDateGeben Sie das Datum an,PublicGibt die bereitgestellte Methode an.


✨5.2, DESCRIBE-Methode

Vom Server abrufenrtsp://192.168.3.225:554/wbceine Beschreibung des Medienobjekts, woAcceptDas Feld gibt das Beschreibungsformat an:

Fügen Sie hier eine Bildbeschreibung ein
Der Client sendet die DESCRIBE-Methode und verwendet sieCSeq Um die Anforderungssequenznummer anzugeben, verwenden SieUser-Agent Identifizieren Sie Ihren Agenten,AcceptDas Feld gibt das Beschreibungsformat als SDP an;

Der Server antwortet auf diese Anfrage mit CSeq Um anzugeben, auf welche Anfrage geantwortet wird, verwenden SieDateGeben Sie das Datum an,Content-TypeZeigt an, dass der Inhaltstyp SDP ist.Content-LengthGeben Sie die Länge des Inhalts an.

Beachten
1. Für einige, die einen Benutzernamen und ein Passwort erfordern, verarbeitet der Server die DESCRIBE-Methode zur Authentifizierung. Wenn die Autorisierungsauthentifizierungsinformationen nicht übertragen werden oder die Authentifizierung fehlschlägt, gibt der Server eine Antwort mit der Fehlernummer 401 zurück. Wenn der Client die 401-Antwort erhält, muss er eine Autorisierung basierend auf den bekannten Benutzerauthentifizierungsinformationen generieren und die Beschreibung erneut senden. Wenn die Authentifizierung erfolgreich ist, gibt der Server Antwortinformationen mit SDP zurück.
2. Die vom Server zurückgegebenen SDP-Informationen werden in einem späteren Artikel analysiert.


✨5.3, SETUP-Methode

Der Client fordert den Server auf, eine Sitzung aufzubauen und die Übertragung vorzubereiten. Zu den Anforderungsinformationen gehören hauptsächlich das Übertragungsprotokoll und die Portnummer des Clients;

Fügen Sie hier eine Bildbeschreibung ein
Der Client sendet die SETUP-Methode und verwendet sieCSeq Um die Anforderungssequenznummer anzugeben, verwenden SieUser-Agent Identifizieren Sie Ihren Agenten,TransportDas Feld gibt das zulässige Übertragungsprotokoll RTP/AVP und den Port an (hier ist der RTP-Port 55320 und der RTCP-Port 55321);

Der Server antwortet auf diese Anfrage mit CSeq Um anzugeben, auf welche Anfrage geantwortet wird, verwenden SieDateGeben Sie das Datum an,TransportGeben Sie das Transportprotokoll RTP/AVP, die Zieladresse, die Quelladresse, den Client-Port (RTP ist 55320, RTCP ist 55321), den Server-Port (RTP ist 6970, RTCP ist 6971) an.SessionGeben Sie die Sitzungs-ID an.

Beachten
In diesem Beispiel wird RTP über das UDP-Protokoll übertragen. Manchmal wird RTP dann über TCP übertragenTransport Die Felder variieren. Es könnte wie folgt sein:

客户端请求:Transport: RTP/AVP/TCP;unicast;interleaved=0-1
服务器响应:Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=24e4e500;mode="play"

RTP/AVP/TCPZeigt an, dass der RTP-Stream über TCP übertragen wird. Wenn dieser Wert angezeigt wird, verfügt die Nachricht nicht über das Feld „client_port“.
interleaved=0-1Stellt streamid dar und identifiziert RTP streamid=0; RTCP streamid=1;
Wenn der Codestrom über TCP übertragen wird, teilt er sich eine TCP-Verbindung mit RTSP, sodass keine neue Verbindung hergestellt werden muss. Um die Protokolle RTP, RTCP und RTSP zu unterscheiden, muss eine Header-ID hinzugefügt werden Hier wird das Header-Feld verwendet, und der TCP-Header besteht aus vier Wörtern. Das Format ist wie folgt:

| magic number | channel number | embedded data length | data |

magic number: 1 Byte, festgelegt auf0x24, ist ein Charakter$, was darauf hinweist, dass es sich bei den übertragenen Daten nicht um das RTSP-Protokoll handelt;
channel number: 1 Byte, Kanal-ID, die den Stream-Typ identifiziert, bei dem es sich um die zuvor erwähnte Stream-ID handelt;
embedded data length : 2 Bytes, die die Streamlänge angeben
data: Zeigt RTP/RTCP-Paketdaten an


✨5.4, PLAY-Methode

Der Client benachrichtigt den Server aktiv, mit dem Senden von Daten zu beginnen, indem er den von SETUP angegebenen Mechanismus verwendet.

Fügen Sie hier eine Bildbeschreibung ein
Der Client sendet die PLAY-Methode und verwendet sieCSeq Um die Anforderungssequenznummer anzugeben, verwenden SieUser-Agent Identifizieren Sie Ihren Agenten,SessionDas Feld gibt die Sitzungs-ID an.RangeDas Feld gibt die Start- und Endzeit der Wiedergabe an.

Der Server antwortet auf diese Anfrage mit CSeq Geben Sie an, auf welche Anfrage geantwortet wirdDateDatum angeben;RangeDas Feld gibt die Start- und Endzeit der Wiedergabe an;SessionDas Feld gibt die Sitzungs-ID an;RTP-InfoDas Feld beschreibt die RTP-Informationen des zu sendenden Code-Streams, z. B. die Sequenz und die RTP-Zeit des ersten RTP-Pakets. Der Client kann basierend auf diesem Feld demultiplexen.


✨5.5, TEARDOWN-Methode

Der Client fordert an, das Senden des angegebenen URL-Streams zu beenden und zugehörige Ressourcen freizugeben.
Fügen Sie hier eine Bildbeschreibung ein
Der Client sendet die TEARDOWN-Methode und verwendet sieCSeq Um die Anforderungssequenznummer anzugeben, verwenden SieUser-Agent Identifizieren Sie Ihren Agenten,SessionDas Feld gibt die Sitzungs-ID an.

Der Server antwortet auf diese Anfrage mit CSeq Geben Sie an, auf welche Anfrage geantwortet wirdDateGeben Sie das Datum an.


Fügen Sie hier eine Bildbeschreibung ein

🎄六、RTSP 响应错误码

Der RTSP-Antwortinhalt enthält normalerweise einen dreistelligen ganzzahligen Antwortcode und eine Begründungsphrase. Der Zweck der Phrase besteht darin, eine kurze Textbeschreibung des Statuscodes anzugeben. Der Client muss die Begründungsphrase nicht überprüfen oder anzeigen. Entsprechend dem Unterschied zwischen der ersten Ziffer des Antwortcodes kann dieser in die folgenden fünf Kategorien unterteilt werden:

  • 1xx: Tipp – die Anfrage ist eingegangen und wird bearbeitet
  • 2xx: Erfolg – ​​die Anfrage wurde erfolgreich verarbeitet
  • 3xx: Weiterleitung – Es müssen weitere Maßnahmen ergriffen werden, um die Anfrage abzuschließen
  • 4xx: Clientfehler – Die Anfrage enthielt falsche Parameter oder Syntax und die Anfrage konnte nicht erfüllt werden.
  • 5xx: Serverfehler – Der Server konnte die korrekte Anfrage des Clients nicht erfüllen

Natürlich hängen RTSP-Fehlercodes und RTSP-Methoden eng zusammen. Einige Fehler werden möglicherweise nur bei bestimmten Methoden ausgelöst. Die detaillierten Fehlercodeinformationen lauten wie folgt:

FehlercodeGrundphraseAntwortmethode
100WeitermachenAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
200ErfolgAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
201ErstelltAUFZEICHNEN
250Wenig SpeicherplatzAUFZEICHNEN
300Mehrere AuswahlmöglichkeitenAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
301dauerhaft umgezogenAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
302ist vorübergehend umgezogenAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
303Siehe AndereAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
305Proxy verwendenAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
400Ungültige AnforderungAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
401Nicht autorisiertAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
402Bezahlung erforderlichAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
403VerbotenAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
404Nicht gefundenAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
405Methode nicht erlaubtAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
406InakzeptabelAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
407Proxy-Authentifizierung erforderlichAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
408Zeitüberschreitung der AnforderungAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
410GegangenAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
411Erforderliche LängeAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
412Voraussetzung fehlgeschlagen BESCHREIBENAUFSTELLEN
413Anforderungsentität zu großAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
414Anforderungs-URI zu langAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
415Nicht unterstützter MedientypAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
451Ungültiger ParameterAUFSTELLEN
452Unzulässige KonferenzkennungAUFSTELLEN
453Nicht genügend BandbreiteAUFSTELLEN
454Sitzung nicht gefundenAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
455Methode in diesem Status nicht gültigAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
456Header-Feld ungültigAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
457Ungültiger BereichSPIELEN
458Parameter ist schreibgeschütztSET_PARAMETER
459Aggregatvorgang nicht zulässigAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
460Nur Aggregatoperationen zulässigAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
461Nicht unterstützter TransportAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
462Ziel unerreichbarAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
500interner ServerfehlerAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
501Nicht implementiertAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
502Schlechtes GatewayAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
503Dienst nicht verfügbarAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
504Gateway-ZeitüberschreitungAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
505RTSP-Version wird nicht unterstütztAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
551Option wird nicht unterstütztAlleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

Fügen Sie hier eine Bildbeschreibung ein
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

beziehen auf:
Echtzeit-Streaming-Protokoll – RTSP [ausführliche Erklärung]
Beherrschen Sie RTSP-Anfragen und -Antworten von Grund auf 1
Detaillierte Erläuterung des RTSP-Streaming-Media-Protokolls