Condivisione della tecnologia

[Audio e video |. RTSP] Spiegazione dettagliata del protocollo RTSP e analisi degli esempi di acquisizione dei pacchetti (dettagliati senza entrare nei dettagli)

2024-07-08

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

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

Questo articolo non può essere inoltrato senza autorizzazione! ! !


Inserisci qui la descrizione dell'immagine

🎄一、概述

RTSP, nome completo Real Time Streaming Protocol, il protocollo di streaming in tempo reale, è un protocollo del livello di applicazione nel sistema di protocolli TCP/IP. È uno standard RFC IETF presentato dalla Columbia University, Netscape e RealNetworks.

Il documento ufficiale sul protocollo RTSP è RFC2326, link al documento:RFC2326 - Protocollo di streaming in tempo reale (RTSP)

Viene fatto riferimento alla sintassi e al funzionamento del protocollo RTSP. HTTP/1.1, un protocollo basato su testo che utilizza il set di caratteri ISO10646 e la codifica UTF-8 è il protocollo del livello di trasporto che trasporta RTSP;TCP, porta predefinita554; Se si tratta di tunneling RTSP-over-HTTP, la porta TCP predefinita è generalmente utilizzata insieme al protocollo RTP/RTCP, il protocollo RTP trasmette dati di flusso in tempo reale e il protocollo RTCP completa la trasmissione di flussi di dati e; comandi di controllo.

Inserisci qui la descrizione dell'immagine

Protocollo RTP: nome completoReal-time Transport Protocol , il protocollo di trasmissione in tempo reale, è stato annunciato dal Multimedia Transmission Working Group dell'IETF nel 1996 nella RFC 1889. Il protocollo RTP descrive in dettaglio il formato di pacchetto standard per la distribuzione di audio e video su Internet. È costruito sul protocollo UDP.

Protocollo RTCP: nome completoReal-time Transport Control Protocol , Protocollo di controllo del trasporto in tempo reale, utilizzato con RTP. RTP utilizza una porta UDP con numero pari; RTCP utilizza la porta successiva da RTP, che è una porta con numero dispari. RTCP e RTP lavorano insieme. RTP implementa la trasmissione dei dati effettivi e RTCP è responsabile dell'invio di pacchetti di controllo a tutti i partecipanti alla sessione. La sua funzione principale è fornire feedback sulla qualità del servizio fornito da RTP.

La differenza tra protocollo RTSP e protocollo HTTP:
RTSP è stateful e i suoi comandi vengono sempre inviati in ordine e potrebbe essere sempre necessario inviare un comando prima di un altro comando. HTTP è senza stato Dopo che il protocollo invia un comando, la connessione verrà disconnessa e non esiste alcuna dipendenza tra i comandi.
Il protocollo rtsp utilizza la porta 554 e http utilizza la porta 80.
Le richieste RTSP possono essere inviate sia dal server che dal client, mentre le richieste HTTP possono essere inviate solo dal client.


Inserisci qui la descrizione dell'immagine

🎄二、RTSP 方法

I metodi RTSP comunemente utilizzati includono: OPTIONS, DESCRIBE, SETUP, PLAY, PAUSE, TEARDOWN, ANNOUNCE, GET_PARAMETER e SET_PARAMETER, ecc. Le istruzioni dettagliate per l'uso sono le seguenti:

  • OPTIONS : Il client ottiene dal server il metodo supportato dal server. Non influisce sullo stato del server;
  • DESCRIBE: Il client ottiene la descrizione dell'oggetto multimediale specificato dall'URL dal server, doveAcceptIl campo specifica il formato della descrizione;
  • SETUP : Il client richiede al server di stabilire una sessione e prepararsi per la trasmissione. Le informazioni richieste includono principalmente il protocollo di trasmissione e il numero di porta del cliente;
  • PLAY : Il client notifica attivamente al server di iniziare a inviare dati utilizzando il meccanismo specificato da SETUP.InRangeIl campo specifica l'ora di inizio e di fine della riproduzione (l'intervallo del flusso in tempo reale è generalmenteRange: npt=0.000-), quando arrivano più richieste PLAY, il server metterà in coda le richieste PLAY e le eseguirà in sequenza, ovvero dovrà attendere il completamento del primo tempo PLAY prima di continuare a elaborare il secondo messaggio PLAY.
  • PAUSE : il client richiede che lo streaming multimediale del server venga temporaneamente sospeso.in grado di passareRangeIl parametro viene messo in pausa in un punto temporale specificato oppure è possibile specificare un flusso da mettere in pausa. Ad esempio, se si specifica un flusso audio da mettere in pausa, la riproduzione sarà silenziosa.
  • RECORD : RECORD notifica al server che il client inizierà a registrare i dati multimediali in base alla descrizione precedente. Intimestamp I campi riflettono l'ora di inizio e di fine (UTC). Se questo campo non è presente, verrà utilizzata l'ora di inizio o di fine dalla descrizione del supporto. Se la sessione è già iniziata, la registrazione inizia immediatamente.
    Il server decide se memorizzare i dati registratirequest-URI Successivo o un altro URI. Se il server non utilizza un URI di richiesta, la risposta dovrebbe essere 201 (Creato) e contenere un'intestazione Entità e Posizione che descriva lo stato della richiesta e faccia riferimento alla nuova risorsa.
  • TEARDOWN: il client richiede di interrompere l'invio del flusso URL specificato e di rilasciare le risorse correlate.
  • REDIRECT : per reindirizzare una richiesta, il server notifica al client che deve connettersi a un'altra posizione del server. Contiene l'intestazione Location obbligatoria, che indica che il client deve effettuare una richiesta per questo URL. Può contenere il parametro Range, che indica quando avrà effetto il reindirizzamento. Se il client desidera continuare a inviare o ricevere contenuti multimediali per questo URI, il client deve emettere una richiesta TEARDOWN per la sessione corrente e una SETUP per la nuova sessione sull'host specificato.
  • ANNOUNCE: Quando il client invia al server, significa inviare al server la descrizione della presentazione o l'oggetto multimediale identificato dall'URL della richiesta
    Quando il server lo invia al client, significa notificare al client di aggiornare le informazioni sulla sessione.
  • GET_PARAMETER :GET_PARAMETER richiesta per recuperare i valori dei parametri per la rappresentazione o il flusso specificato nell'URI. Il contenuto delle risposte e delle risposte è lasciato all'implementazione. GET_PARAMETER senza un corpo dell'entità può essere utilizzato per testare l'attività ("ping") di un client o server.
  • SET_PARAMETER : questo metodo richiede di impostare i valori dei parametri della demo o del flusso specificato dall'URL. Le richieste dovrebbero contenere solo un singolo parametro, consentendo al client di decidere perché una particolare richiesta non è riuscita. Se la richiesta contiene più parametri, tutti i parametri possono essere impostati correttamente e il server deve agire solo su questa richiesta. Il server deve consentire l'impostazione ripetuta dei parametri sullo stesso valore, ma non la modifica del valore del parametro. Nota: i parametri di streaming multimediale devono essere impostati utilizzando il comando SETUP. È utile che i firewall limitino i parametri di trasferimento della configurazione a SETUP.

Sopra vengono introdotti un totale di 11 metodi RTSP, tra cui:SETUPPLAYTEARDOWN I tre comandi sono necessari nel processo RTSP e altri metodi non sono necessari.EANNOUNCEGET_PARAMETERSET_PARAMETERI tre comandi possono essere inviati dal client al server o dal server al client. Gli altri comandi vengono inviati dal client al server.


Inserisci qui la descrizione dell'immagine

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

RTSP ha due tipi di messaggi: messaggi di richiesta e messaggi di risposta. Il messaggio di richiesta si riferisce al messaggio di richiesta inviato dal client al server e il messaggio di risposta si riferisce alla risposta dal server al client.

✨3.1, messaggio di richiesta RTSP

Il messaggio di richiesta RTSP è composto da tre parti: riga di richiesta, intestazione della richiesta e corpo della richiesta. Tra questi, la riga della richiesta è obbligatoria, mentre l'intestazione e il corpo della richiesta sono facoltativi a seconda della situazione specifica.
Inserisci qui la descrizione dell'immagine

  • Riga di richiesta: La riga di richiesta è composta da un metodo, un URI di richiesta e una versione del protocollo separati da spazi e preceduti da CRLF (es.:rn)Fine.
    方法 : È il metodo RTSP introdotto sopra. Incluse OPZIONI, DESCRIVI, IMPOSTA, GIOCA, PAUSA, SMONTA, ecc.
    请求URI: identifica la risorsa multimediale da gestire, solitamente nel formato rtsp://example.com/path/to/stream.
    协议版本: Indica la versione del protocollo RTSP che solitamente segue la richiestaRTSP/1.0ORTSP/2.0
    Ecco un esempio di una riga di richiesta completa:
    OPTIONS rtsp://192.168.3.225:554/wbc RTSP/1.0
    
  • Intestazione della richiesta: l'intestazione della richiesta contiene alcune informazioni aggiuntive, come ad esempio: CSeq (numero di sequenza utilizzato per identificare la richiesta), Session ID (identificatore di sessione), Trasporto (protocollo di trasporto), ecc. Ogni campo di intestazione è costituito da un nome di campo, due punti e un valore di campo e ogni campo di intestazione è separato da CRLF.
    Ecco un esempio di intestazione della richiesta completa:
    CSeq: 2
    User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
    
  • Corpo della richiesta: il corpo della richiesta viene utilizzato per trasmettere dati aggiuntivi. Il contenuto specifico del corpo della richiesta dipende dal metodo RTSP utilizzato nella riga della richiesta. Nota: dopo l'intestazione della richiesta, è necessario inserire una riga vuota (CRLF) per distinguere l'intestazione della richiesta dal corpo della richiesta. La maggior parte dei messaggi di richiesta non hanno un corpo della richiesta.

✨3.2, messaggio di risposta RTSP

Il messaggio di richiesta RTSP è composto da tre parti: riga di stato, intestazione della risposta e corpo della risposta. Tra questi, la riga di stato è obbligatoria, mentre l'intestazione e il corpo della risposta sono facoltativi a seconda della situazione specifica.
Inserisci qui la descrizione dell'immagine

  • Riga di stato: la riga di stato contiene una versione del protocollo, un codice di stato e un testo di stato, separati da spazi e terminati con CRLF (es: "rn").
    协议版本: indica la versione del protocollo RTSP seguita dalla risposta, solitamente RTSP/1.0 o RTSP/2.0.
    状态码 : Tre cifre, ad esempio: 200, 401, 500, ecc., utilizzate per indicare il risultato dell'elaborazione della richiesta. La prima cifra rappresenta la categoria di risposta: 2xx indica successo, 4xx indica errore del client e 5xx indica errore del server.
    状态文本: una breve descrizione testuale che spiega il significato specifico del codice di stato corrispondente, ad esempio: OK, Non autorizzato, ecc.
    Ecco una riga di risposta di esempio:
    RTSP/1.0 200 OK
    
  • Intestazione della risposta: l'intestazione della risposta contiene informazioni simili all'intestazione della richiesta, come: CSeq (numero di sequenza utilizzato per identificare la richiesta), ID sessione (identificatore di sessione), trasporto (protocollo di trasporto), ecc. Il formato di ciascun campo di intestazione della risposta è lo stesso dell'intestazione della richiesta, quindi non entreremo nei dettagli qui.
    CSeq: 2
    Date: Wed, Feb 04 1970 03:25:10 GMT
    Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
    
  • Corpo della risposta: alcune risposte RTSP (come DESCRIBE) possono contenere un corpo della risposta per la trasmissione di dati aggiuntivi.Nota: dopo l'intestazione della risposta è necessario inserire una riga vuota (CRLF).Distinguere tra intestazioni e corpo della risposta
    Di seguito è riportato un esempio di corpo della risposta completo.
    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
    

Inserisci qui la descrizione dell'immagine

🎄四、RTSP 报文的常用字段

L'intestazione della risposta del messaggio RTSP conterrà alcuni campi. Di seguito sono riportati alcuni campi comunemente utilizzati:

  • Accettare : utilizzato per specificare il tipo di struttura dati dell'entità che il client informa il server di accettare. Ad esempio: Accetta: application/sdp, quindi il server restituisce il tipo di struttura dati dell'entità tramite il campo Content-Type;
  • Accept-Encoding: utilizzato dal client per notificare al server i formati di compressione dei dati che può accettare, ad esempio: Accept-Encoding: gzip, compress, br Il server notificherà quindi al client la sua scelta attraverso il campo Content-Encoding .
  • Accept-Language: utilizzato dal client per notificare al server le lingue che può comprendere e la relativa accettazione, ad esempio: Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q =0.7, *; q=0.5, dopodiché il server notificherà al client la sua scelta tramite il campo Content-Language
  • Autorizzazione: l'intestazione della richiesta del client contiene le credenziali utilizzate dal server per autenticare l'agente utente.
  • Larghezza di banda: utilizzata per descrivere il valore della larghezza di banda disponibile per il client. Ad esempio: Larghezza di banda: 4000
  • Blocksize: questo campo viene inviato dal client al server multimediale per richiedere una dimensione specifica del pacchetto multimediale dal server, il server è libero di utilizzare dimensioni di blocco inferiori a quelle richieste. Questa dimensione del pacchetto non include intestazioni di basso livello come IP, UDP o RTP
  • CSeq : specifica il numero di sequenza della risposta alla richiesta RTSP. Ogni richiesta RTSP deve contenere un valore CSeq univoco in modo che il server possa identificare ed elaborare correttamente la richiesta. Questo numero di sequenza viene incrementato con i messaggi di richiesta. La risposta del server deve avere un valore CSeq che indica a quale richiesta rispondere.
  • Cache-Control: implementa il meccanismo di memorizzazione nella cache specificando le istruzioni.Le direttive di memorizzazione nella cache sono unidirezionali, il che significa che le direttive impostate nella richiesta non sono necessariamente incluse nella risposta.
  • Conferenza: notificare al server che l'ID conferenza della stessa sessione RTSP non deve essere modificato
  • Connessione: questo campo determina se la connessione di rete verrà chiusa una volta completata la transazione corrente. Se il valore è "keep-alive", la connessione di rete è persistente e non verrà chiusa, in modo che le richieste allo stesso server possano continuare a essere completate sulla connessione o Connessione: chiudi.
  • Lunghezza del contenuto : Questo campo indica la lunghezza del contenuto dopo il doppio CRLF successivo all'ultima intestazione del protocollo RTSP.Ad esempio, nella risposta del server DESCRIBE, specificare la lunghezza delle informazioni sdp
  • Tipo di contenuto: indica al client il tipo di contenuto del contenuto effettivo restituito
  • Data : fornisce la data e l'ora in cui il server ha generato la risposta, aiutando il client a determinare l'aggiornamento della risposta o a eseguire la sincronizzazione dell'ora. Il formato del campo Data è conforme a RFC 1123, ad esempio: sabato 6 aprile 2024 11:15:00 GMT.
  • Agente utente: questo campo viene utilizzato per consentire al peer del protocollo di rete di identificare il tipo di applicazione, il sistema operativo, lo sviluppatore del software e il numero di versione del software dell'agente utente che ha avviato la richiesta.
  • Scadenza: specifica la data di scadenza
  • Suonò: Utilizzato per specificare un intervallo di tempo, è possibile utilizzare SMPTE, NTP o l'unità di tempo dell'orologio.
  • Sessione :Il campo dell'intestazione della sessione identifica una sessione RTSP. L'ID sessione è determinato dal server inSETUPSelezionato nella risposta, una volta che il client ottiene l'ID di sessione, includerà l'ID di sessione nei futuri messaggi di richiesta di operazione per la sessione. Ad esempio: Session: 4581E0AE;
  • Trasporto : il campo Intestazione trasporto contiene un elenco di opzioni di trasporto accettabili per il client, incluso protocollo di trasporto, porta dell'indirizzo, TTL, ecc. Il server restituisce anche l'opzione specifica effettivamente selezionata tramite questo campo di intestazione. Ad esempio: Trasporto: RTP/AVP/TCPunicast;destination=192.168.31.222;source=192.168.31.222;interleaved=0-1

Inserisci qui la descrizione dell'immagine

🎄五、RTSP 流程抓包解析

Utilizza wireshark per acquisire i pacchetti di rete dei media di streaming RTSP. Puoi vedere che il processo generale è il seguente:
1. Il cliente inviaOPTIONSMetodo, risposta del server;
2. Il cliente inviaDESCRIBEMetodo, risposta del server;
3. Il cliente inviaSETUPMetodo, risposta del server;
2. Il cliente inviaPLAYMetodo, risposta del server;
2. Il cliente inviaTEARDOWNMetodo, risposta del server;
Inserisci qui la descrizione dell'immagine
Il pacchetto di flusso completo è il seguente:

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

Di seguito verranno analizzati ciascun metodo e risposta RTSP utilizzati nel messaggio precedente.

✨5.1, metodo OPZIONE

Ottieni i metodi disponibili dal server:
Inserisci qui la descrizione dell'immagine
Il client invia il metodo OPTIONS e utilizzaCSeq Per specificare il numero di sequenza della richiesta, utilizzareUser-Agent identificare il proprio agente;
Il server risponderà alla richiesta utilizzandoCSeq Per indicare a quale richiesta si sta rispondendo, utilizzareDatespecificare la data,PublicSpecifica il metodo fornito.


✨5.2, Metodo DESCRIVERE

Ottieni dal serverrtsp://192.168.3.225:554/wbcuna descrizione dell'oggetto multimediale, doveAcceptIl campo specifica il formato della descrizione:

Inserisci qui la descrizione dell'immagine
Il client invia il metodo DESCRIBE e utilizzaCSeq Per specificare il numero di sequenza della richiesta, utilizzareUser-Agent identifica il tuo agente,AcceptIl campo specifica il formato della descrizione come SDP;

Il server risponderà a questa richiesta utilizzando CSeq Per indicare a quale richiesta si sta rispondendo, utilizzareDatespecificare la data,Content-TypeIndica che il tipo di contenuto è SDP,Content-LengthSpecificare la lunghezza del contenuto.

Avviso
1. Per alcuni che richiedono nome utente e password, il server elaborerà il metodo DESCRIBE per l'autenticazione. Se le informazioni di autenticazione dell'autorizzazione non vengono trasportate o l'autenticazione non riesce, il server restituirà una risposta con il numero di errore 401. Quando il client riceve la risposta 401, deve generare l'autorizzazione in base alle informazioni di autenticazione dell'utente noto e inviare nuovamente la descrizione. Se l'autenticazione ha esito positivo, il server restituisce le informazioni di risposta che trasportano SDP.
2. Le informazioni SDP restituite dal server verranno analizzate in un articolo successivo.


✨5.3, metodo IMPOSTAZIONE

Il client richiede al server di stabilire una sessione e prepararsi per la trasmissione. Le informazioni richieste includono principalmente il protocollo di trasmissione e il numero di porta del cliente;

Inserisci qui la descrizione dell'immagine
Il client invia il metodo SETUP e utilizzaCSeq Per specificare il numero di sequenza della richiesta, utilizzareUser-Agent identifica il tuo agente,TransportIl campo specifica il protocollo di trasmissione RTP/AVP e la porta accettabili (qui la porta RTP è 55320 e la porta RTCP è 55321);

Il server risponderà a questa richiesta utilizzando CSeq Per indicare a quale richiesta si sta rispondendo, utilizzareDatespecificare la data,TransportSpecificare il protocollo di trasporto RTP/AVP, indirizzo di destinazione, indirizzo di origine, porta client (RTP è 55320, RTCP è 55321), porta server (RTP è 6970, RTCP è 6971),SessionSpecificare l'ID della sessione.

Avviso
In questo esempio, RTP viene trasmesso tramite il protocollo UDP. A volte, RTP verrà trasmesso tramite TCPTransport I campi varieranno. Potrebbe essere il seguente:

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

RTP/AVP/TCPIndica che il flusso RTP viene trasmesso tramite TCP Quando viene visualizzato questo valore, il messaggio non ha il campo client_port;
interleaved=0-1Rappresenta streamid, identificando RTP streamid=0;
Quando il flusso di codice viene trasmesso tramite TCP, condivide un collegamento TCP con RTSP, quindi non è necessario stabilire una nuova connessione. Per distinguere i protocolli RTP, RTCP e RTSP, è necessario aggiungere un identificatore di intestazione qui viene utilizzato il campo header e la sezione tcphead è composta da quattro parole, il formato è il seguente:

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

magic number: 1 byte, fisso su0x24, è un personaggio$, indicando che i dati trasmessi non sono il protocollo rtsp;
channel number: 1 byte, ID del canale, che identifica il tipo di flusso, che è lo streamid menzionato prima;
embedded data length : 2 byte, che indicano la lunghezza del flusso
data: Indica i dati del pacchetto RTP/RTCP


✨5.4, metodo GIOCA

Il client notifica attivamente al server di iniziare a inviare dati utilizzando il meccanismo specificato da SETUP.

Inserisci qui la descrizione dell'immagine
Il client invia il metodo PLAY e utilizzaCSeq Per specificare il numero di sequenza della richiesta, utilizzareUser-Agent identifica il tuo agente,Sessionil campo specifica l'ID della sessione,RangeIl campo specifica l'ora di inizio e di fine della riproduzione.

Il server risponderà a questa richiesta utilizzando CSeq Indicare a quale richiesta si sta rispondendo;Datespecificare la data;RangeIl campo specifica l'ora di inizio e di fine della riproduzione;SessionIl campo specifica l'ID della sessione;RTP-InfoIl campo descrive le informazioni RTP del flusso di codice da inviare, come seq e rtptime del primo pacchetto RTP. Il client può demultiplexare in base a questo campo.


✨5.5, metodo TEARDOWN

Il client richiede di interrompere l'invio del flusso URL specificato e di rilasciare le risorse correlate.
Inserisci qui la descrizione dell'immagine
Il client invia il metodo TEARDOWN e utilizzaCSeq Per specificare il numero di sequenza della richiesta, utilizzareUser-Agent identifica il tuo agente,SessionIl campo specifica l'ID della sessione.

Il server risponderà a questa richiesta utilizzando CSeq Indicare a quale richiesta si sta rispondendo;DateSpecificare la data.


Inserisci qui la descrizione dell'immagine

🎄六、RTSP 响应错误码

Il contenuto della risposta di RTSP solitamente contiene un codice di risposta intero a 3 cifre e una frase del motivo. Lo scopo della frase è fornire una breve descrizione testuale del codice di stato. Non è necessario che il client controlli o visualizzi la frase del motivo. In base alla differenza tra la prima cifra del codice di risposta, questo può essere suddiviso nelle seguenti cinque categorie:

  • 1xx: Suggerimento: la richiesta è stata ricevuta ed è in fase di elaborazione
  • 2xx: Successo: la richiesta è stata elaborata con successo
  • 3xx: Reindirizzamento: è necessario eseguire ulteriori azioni per completare la richiesta
  • 4xx: Errore client: la richiesta conteneva parametri o sintassi errati e non è stato possibile soddisfarla.
  • 5xx: Errore del server: il server non è stato in grado di soddisfare la richiesta corretta del client

Naturalmente, i codici di errore RTSP e i metodi RTSP sono fortemente correlati. Alcuni errori possono essere attivati ​​solo in metodi specifici. Le informazioni dettagliate sui codici di errore sono le seguenti:

codice di errorefrase motivometodo di risposta
100ContinuaTutto
200SuccessoTutto
201CreatoDOCUMENTAZIONE
250Poco spazio di archiviazioneDOCUMENTAZIONE
300Scelte multipleTutto
301trasferitoTutto
302trasferito temporaneamenteTutto
303Vedi altroTutto
305Usa un proxyTutto
400Brutta richiestaTutto
401Non autorizzatoTutto
402Pagamento richiestoTutto
403VietatoTutto
404Non trovatoTutto
405operazione non permessaTutto
406Non accettabileTutto
407Autenticazione proxy richiestaTutto
408Richiesta timeoutTutto
410AndatoTutto
411Lunghezza richiestaTutto
412Precondizione fallita DESCRIVIIMPOSTARE
413Richiesta entità troppo grandeTutto
414Request-URI troppo lungoTutto
415Tipo di supporto non supportatoTutto
451Parametro non validoIMPOSTARE
452Identificatore di conferenza illegaleIMPOSTARE
453Larghezza di banda insufficienteIMPOSTARE
454Sessione non trovataTutto
455Metodo non valido in questo statoTutto
456Campo intestazione non validoTutto
457Intervallo non validoGIOCARE
458Il parametro è di sola letturaSET_PARAMETRO
459Operazione di aggregazione non consentitaTutto
460Solo operazione di aggregazione consentitaTutto
461Trasporto non supportatoTutto
462Destinazione irraggiungibileTutto
500Errore interno del serverTutto
501Non implementatoTutto
502Cattivo GatewayTutto
503Servizio non disponibileTutto
504Timeout del gatewayTutto
505Versione RTSP non supportataTutto
551Opzione non supportataTutto

Inserisci qui la descrizione dell'immagine
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

fare riferimento a:
Protocollo di streaming in tempo reale: RTSP [spiegazione dettagliata]
Padroneggiare le richieste e le risposte RTSP da zero 1
Spiegazione dettagliata del protocollo multimediale in streaming RTSP