Teknologian jakaminen

[Ääni ja video |. RTSP] Yksityiskohtainen selitys RTSP-protokollasta ja pakettien sieppausesimerkkien analyysi (yksityiskohtaiset yksityiskohtiin menemättä)

2024-07-08

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

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

Tätä artikkelia ei saa lähettää eteenpäin ilman lupaa! ! !


Lisää kuvan kuvaus tähän

🎄一、概述

RTSP, koko nimi Real Time Streaming Protocol, reaaliaikainen suoratoistoprotokolla, on sovelluskerroksen protokolla TCP/IP-protokollajärjestelmässä. Se on Columbia Universityn, Netscapen ja RealNetworksin toimittama IETF RFC -standardi.

Virallinen asiakirja RTSP-protokollasta on RFC2326, asiakirjalinkki:RFC2326-Real Time Streaming Protocol (RTSP)

RTSP-protokollan syntaksi ja toiminta on viitattu. HTTP/1.1, tekstipohjainen protokolla, joka käyttää ISO10646-merkistöä ja UTF-8-koodausta, joka kuljettaa RTSP:täTCP, oletusportti554Jos kyseessä on RTSP-HTTP-tunnelointi, oletusarvoinen TCP-portti on yleisesti käytössä RTP/RTCP-protokollan yhteydessä, RTP-protokolla lähettää reaaliaikaista tietovirtaa ja RTCP-protokolla suorittaa tietovirtojen lähetyksen. ohjauskomennot.

Lisää kuvan kuvaus tähän

RTP-protokolla: koko nimiReal-time Transport Protocol IETF:n Multimedia Transmission Working Group julkisti reaaliaikaisen lähetysprotokollan vuonna 1996 RFC 1889:ssä. RTP-protokolla kertoo standardin pakettimuodon äänen ja videon toimittamiseen Internetin kautta. Se on rakennettu UDP-protokollalle.

RTCP-protokolla: koko nimiReal-time Transport Control Protocol , Reaaliaikainen liikenteen ohjausprotokolla, käytetään RTP:n kanssa. RTP käyttää parillista UDP-porttia. RTCP käyttää seuraavaa RTP-porttia, joka on pariton portti. RTCP ja RTP toimivat yhdessä RTP toteuttaa todellisen tiedon siirron, ja RTCP on vastuussa ohjauspakettien lähettämisestä kaikille istunnon osallistujille. Sen päätehtävänä on antaa palautetta RTP:n tarjoaman palvelun laadusta.

Ero RTSP-protokollan ja HTTP-protokollan välillä:
RTSP on tilallinen, ja sen komennot lähetetään aina järjestyksessä, ja yksi komento on aina ehkä lähetettävä ennen toista komentoa. HTTP on tilaton Kun protokolla lähettää komennon, yhteys katkeaa, eikä komentojen välillä ole riippuvuutta.
rtsp-protokolla käyttää porttia 554 ja http käyttää porttia 80.
RTSP-pyynnöt voivat lähettää sekä palvelin että asiakas, kun taas HTTP-pyyntöjä voi lähettää vain asiakas.


Lisää kuvan kuvaus tähän

🎄二、RTSP 方法

Yleisesti käytettyjä RTSP-menetelmiä ovat: OPTIONS, DESCRIBE, SETUP, PLAY, PAUSE, TEARDOWN, ANNOUNCE, GET_PARAMETER ja SET_PARAMETER jne. Yksityiskohtaiset käyttöohjeet ovat seuraavat:

  • OPTIONS : Asiakas saa palvelimelta palvelimen tukeman menetelmän. Se ei vaikuta palvelimen tilaan;
  • DESCRIBE: Asiakas saa URL-osoitteen määrittämän mediaobjektin kuvauksen palvelimelta, jossaAcceptKenttä määrittää kuvausmuodon;
  • SETUP : Asiakas pyytää palvelinta muodostamaan istunnon ja valmistautumaan lähetystä varten. Pyyntötiedot sisältävät pääasiassa lähetysprotokollan ja asiakkaan porttinumeron;
  • PLAY : Asiakas ilmoittaa aktiivisesti palvelimelle tietojen lähettämisen aloittamisesta ASETUKSEN määrittelemällä mekanismilla.sisäänRangeKenttä määrittää toiston alkamis- ja päättymisajan (reaaliaikainen stream Range on yleensäRange: npt=0.000-), kun useita PLAY-pyyntöjä saapuu, palvelin asettaa PLAY-pyynnöt jonoon ja suorittaa ne peräkkäin, eli sen on odotettava ensimmäisen PLAY-ajan päättymistä ennen kuin jatkaa toisen PLAY-viestin käsittelyä.
  • PAUSE : Asiakas pyytää, että palvelimen median suoratoisto keskeytetään väliaikaisesti.pystyy ohittamaanRangeParametri pysähtyy tiettynä ajankohtana tai voit määrittää keskeytettävän streamin. Jos esimerkiksi määrität keskeytettävän äänivirran, toisto on äänetön.
  • RECORD : RECORD ilmoittaa palvelimelle, että asiakas alkaa tallentaa mediadataa edellisen kuvauksen mukaisesti. sisääntimestamp Kentät kuvaavat alkamis- ja päättymisaikoja (UTC). Jos tätä kenttää ei ole, käytetään mediakuvauksen alkamis- tai lopetusaikaa. Jos istunto on jo alkanut, tallennus alkaa välittömästi.
    Palvelin päättää tallentaako tallennetut tiedotrequest-URI Seuraava tai toinen URI. Jos palvelin ei käytä pyyntö-URI:ta, vastauksen tulee olla 201 (Luotu) ja sen tulee sisältää Entity and Location -otsikko, joka kuvaa pyynnön tilan ja viittaa uuteen resurssiin.
  • TEARDOWN: Asiakas pyytää lopettamaan määritetyn URL-virran lähettämisen ja vapauttamaan liittyvät resurssit.
  • REDIRECT : Pyynnön uudelleenohjaamiseksi palvelin ilmoittaa asiakkaalle, että sen on muodostettava yhteys toiseen palvelimeen. Se sisältää pakollisen Location-otsikon, joka osoittaa, että asiakkaan tulee pyytää tätä URL-osoitetta. Se voi sisältää parametrin Alue, joka ilmaisee, milloin uudelleenohjaus tulee voimaan. Jos asiakas haluaa jatkaa median lähettämistä tai vastaanottamista tälle URI:lle, asiakkaan on lähetettävä TEARDOWN-pyyntö nykyiselle istunnolle ja SETUP uudelle istunnolle määritetyssä isännässä.
  • ANNOUNCE: Kun asiakas lähettää palvelimelle, se tarkoittaa pyynnön URL-osoitteen tunnistaman esityksen kuvauksen tai mediaobjektin lähettämistä palvelimelle
    Kun palvelin lähettää sen asiakkaalle, se tarkoittaa, että asiakasta pyydetään päivittämään istuntotiedot.
  • GET_PARAMETER :GET_PARAMETER -pyyntö URI:ssa määritetyn esityksen tai virran parametriarvojen noutamiseksi. Vastausten ja vastausten sisältö jätetään toteutuksen päätettäväksi. GET_PARAMETER ilman entiteettirunkoa voidaan käyttää asiakkaan tai palvelimen elävyyden ("ping") testaamiseen.
  • SET_PARAMETER : Tämä menetelmä pyytää asettamaan demon tai URL-osoitteen määrittämän virran parametriarvot. Pyynnöt saavat sisältää vain yhden parametrin, jonka avulla asiakas voi päättää, miksi tietty pyyntö epäonnistui. Jos pyyntö sisältää useita parametreja, kaikki parametrit voidaan asettaa onnistuneesti, ja palvelimen tulee toimia vain tämän pyynnön perusteella. Palvelimen on sallittava parametrien asettaminen samaan arvoon toistuvasti, mutta se ei saa muuttaa parametrin arvoa. Huomautus: Median suoratoistoparametrit on asetettava SETUP-komennolla. Palomuurien on hyödyllistä rajoittaa asetusten siirtoparametrit SETUP:iin.

Yllä on esitelty yhteensä 11 RTSP-menetelmää, joista mm.SETUPPLAYTEARDOWN Kolme komentoa ovat välttämättömiä RTSP-prosessissa, ja muut menetelmät eivät ole välttämättömiä.jaANNOUNCEGET_PARAMETERSET_PARAMETERKolme komentoa voidaan lähettää asiakkaalta palvelimelle tai palvelimelta asiakkaalle. Muut komennot lähetetään asiakkaalta palvelimelle.


Lisää kuvan kuvaus tähän

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

RTSP:llä on kahdenlaisia ​​viestejä: pyyntöviestit ja vastausviestit. Pyyntösanoma viittaa asiakkaalta palvelimelle lähetettyyn pyyntöviestiin ja vastausviesti viittaa palvelimelta asiakkaalle lähettämään vastaukseen.

✨3.1, RTSP-pyyntöviesti

RTSP-pyyntösanoma koostuu kolmesta osasta: pyyntörivi, pyynnön otsikko ja pyynnön runko. Niistä vaaditaan pyyntörivi, kun taas pyynnön otsikko ja pyynnön runko ovat valinnaisia ​​tilanteesta riippuen.
Lisää kuvan kuvaus tähän

  • Pyyntörivi: Pyyntörivi koostuu menetelmästä, pyynnön URI:stä ja protokollaversiosta, jotka on erotettu välilyönneillä ja joita edeltää CRLF (eli:rn)Suorittaa loppuun.
    方法 : Se on edellä esitelty RTSP-menetelmä. Sisältää ASETUKSET, KUVAUS, ASETUS, TOISTO, PYSÄYTÄ, PISTÄ jne.
    请求URI: Tunnistaa käytettävän mediaresurssin, yleensä muodossa rtsp://example.com/path/to/stream.
    协议版本: Ilmaisee RTSP-protokollan version, jota pyyntö yleensä seuraaRTSP/1.0taiRTSP/2.0
    Tässä on esimerkki täydellisestä pyyntörivistä:
    OPTIONS rtsp://192.168.3.225:554/wbc RTSP/1.0
    
  • Pyynnön otsikko: Pyynnön otsikko sisältää joitain lisätietoja, kuten: CSeq (pyynnön tunnistamiseen käytetty järjestysnumero), Istuntotunnus (istunnon tunniste), Transport (siirtoprotokolla) jne. Jokainen otsikkokenttä koostuu kentän nimestä, kaksoispisteestä ja kentän arvosta, ja jokainen otsikkokenttä on erotettu CRLF:llä.
    Tässä on esimerkki täydellisestä pyynnön otsikosta:
    CSeq: 2
    User-Agent: LibVLC/3.0.19 (LIVE555 Streaming Media v2016.11.28)
    
  • Pyynnön runko: Pyynnön runkoa käytetään lisätietojen välittämiseen. Pyynnön rungon erityinen sisältö riippuu pyyntörivillä käytetystä RTSP-menetelmästä. Huomautus: Pyynnön otsikon jälkeen on lisättävä tyhjä rivi (CRLF), jotta pyynnön otsikko voidaan erottaa pyynnön rungosta. Useimmissa pyyntöviesteissä ei ole pyyntötekstiä.

✨3.2, RTSP-vastausviesti

RTSP-pyyntöviesti koostuu kolmesta osasta: tilarivistä, vastauksen otsikosta ja vastauksen rungosta. Niistä tilarivi vaaditaan, kun taas vastauksen otsikko ja vastauksen runko ovat valinnaisia ​​tilanteesta riippuen.
Lisää kuvan kuvaus tähän

  • Tilarivi: Tilarivi sisältää protokollaversion, tilakoodin ja tilatekstin, jotka erotetaan välilyönneillä ja päättyy CRLF:llä (eli: "rn").
    协议版本: Ilmaisee RTSP-protokollaversion, jota vastaus seuraa, yleensä RTSP/1.0 tai RTSP/2.0.
    状态码 : Kolme numeroa, kuten: 200, 401, 500 jne., joita käytetään ilmaisemaan pyynnön käsittelytulos. Ensimmäinen numero edustaa vastausluokkaa: 2xx tarkoittaa onnistumista, 4xx tarkoittaa asiakasvirhettä ja 5xx tarkoittaa palvelinvirhettä.
    状态文本: Lyhyt tekstikuvaus, joka selittää vastaavan tilakoodin merkityksen, kuten: OK, Luvaton jne.
    Tässä on esimerkki vastausrivistä:
    RTSP/1.0 200 OK
    
  • Vastauksen otsikko: Vastauksen otsikko sisältää pyynnön otsikon kaltaisia ​​tietoja, kuten: CSeq (pyynnön tunnistamiseen käytetty järjestysnumero), Istuntotunnus (istunnon tunniste), Transport (kuljetusprotokolla) jne. Kunkin vastauksen otsikkokentän muoto on sama kuin pyynnön otsikon, joten emme mene tässä yksityiskohtiin.
    CSeq: 2
    Date: Wed, Feb 04 1970 03:25:10 GMT
    Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
    
  • Vastauksen runko: Jotkut RTSP-vastaukset (kuten DESCRIBE) voivat sisältää vastauksen rungon lisätietojen lähettämistä varten.Huomautus: Vastauksen otsikon jälkeen on lisättävä tyhjä rivi (CRLF).Erota vastauksen otsikot ja vastauksen runko
    Alla on esimerkki täydellisestä vastauskappaleesta.
    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
    

Lisää kuvan kuvaus tähän

🎄四、RTSP 报文的常用字段

RTSP-viestin vastausotsikko sisältää joitain kenttiä. Seuraavassa on joitain yleisesti käytettyjä kenttiä:

  • Hyväksyä : Käytetään määrittämään entiteettitietorakenteen tyyppi, jonka asiakas pyytää palvelimelle hyväksymään. Esimerkki: Hyväksy: application/sdp, sitten palvelin palauttaa entiteettitietorakenteen tyypin Sisältötyyppi-kentän kautta;
  • Hyväksy-koodaus: Asiakas käyttää sitä ilmoittamaan palvelimelle tiedon pakkausmuodot, jotka se voi hyväksyä, esimerkiksi: Hyväksy-koodaus: gzip, compress, br, ja sitten palvelin ilmoittaa asiakkaalle valitsemansa sisällön koodauksen kautta. ala.
  • Accept-Language: Asiakas käyttää sitä ilmoittamaan palvelimelle kielet, joita se ymmärtää, ja sen hyväksymisen, esimerkiksi: Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q =0.7, * q=0.5, jonka jälkeen palvelin ilmoittaa valinnastaan ​​asiakkaalle Sisältö-Kieli-kentän kautta
  • Valtuutus: Asiakaspyynnön otsikko sisältää valtuustiedot, joita palvelin käyttää käyttäjäagentin todentamiseen.
  • Kaistanleveys: Käytetään kuvaamaan asiakkaan käytettävissä olevaa kaistanleveyden arvoa. Esimerkiksi: Kaistanleveys: 4000
  • Blocksize: Tämän kentän asiakas lähettää mediapalvelimelle pyytääkseen palvelimelta tiettyä mediapakettikokoa. Palvelin voi vapaasti käyttää pyydettyä pienempiä lohkokokoja. Tämä pakettikoko ei sisällä matalan tason otsikoita, kuten IP, UDP tai RTP
  • CSeq : Määrittää RTSP-pyyntövastauksen järjestysnumeron Jokaisessa RTSP-pyynnössä on oltava yksilöllinen CSeq-arvo, jotta palvelin voi tunnistaa ja käsitellä pyynnön oikein. Tätä järjestysnumeroa kasvatetaan pyyntöviesteillä. Palvelimen vastauksessa on oltava CSeq-arvo, joka osoittaa, mihin pyyntöön vastataan.
  • Cache-Control: Toteuta välimuistimekanismi määrittämällä ohjeita.Välimuistin käskyt ovat yksisuuntaisia, mikä tarkoittaa, että pyynnössä asetettuja ohjeita ei välttämättä sisällytetä vastaukseen.
  • Neuvottelu: Ilmoita palvelimelle, että saman RTSP-istunnon neuvottelutunnusta ei saa muuttaa
  • Yhteys: Tämä kenttä määrittää, suljetaanko verkkoyhteys nykyisen tapahtuman suorittamisen jälkeen. Jos arvo on "keep-alive", verkkoyhteys on pysyvä ja sitä ei suljeta, joten pyyntöjä samalle palvelimelle voidaan jatkaa yhteyden tai Yhteys: sulje.
  • Sisältö-pituus : Tämä kenttä ilmaisee sisällön pituuden RTSP-protokollan viimeisen otsikon jälkeisen kaksois-CRLF:n jälkeen.Määritä esimerkiksi palvelimen vastauksessa DESCRIBE sdp-tietojen pituus
  • Sisältötyyppi: Kertoo asiakkaalle todellisen palautetun sisällön sisältötyypin
  • Päivämäärä : Antaa päivämäärän ja kellonajan, jolloin palvelin loi vastauksen, mikä auttaa asiakasta määrittämään vastauksen tuoreuden tai suorittamaan aikasynkronoinnin. Päivämäärä-kentän muoto on RFC 1123:n mukainen, esimerkiksi: la, 6. huhtikuuta 2024 11:15:00 GMT.
  • Käyttäjä agentti: Tämän kentän avulla verkkoprotokollan vertaiskäyttäjä voi tunnistaa sovelluksen tyypin, käyttöjärjestelmän, ohjelmistokehittäjän ja pyynnön käynnistäneen käyttäjäagenttiohjelmiston versionumeron.
  • Vanhenee: Määritä vanhenemisaika
  • Soitti: Käytetään määrittämään aikaväli, voit käyttää SMPTE:tä, NTP:tä tai kellon aikayksikköä.
  • Istunto :Istunnon otsikkokenttä identifioi RTSP-istunnon. Istuntotunnuksen määrittää sisään tuleva palvelinSETUPVastauksessa valittuna, kun asiakas saa istuntotunnuksen, se sisällyttää istunnon tunnuksen tuleviin istunnon pyyntöviesteihin. Esimerkiksi: Istunto: 4581E0AE;
  • Kuljetus : Transport-otsikkokenttä sisältää luettelon asiakkaan hyväksymistä siirtovaihtoehdoista, mukaan lukien siirtoprotokolla, osoiteportti, TTL jne. Palvelin palauttaa myös tämän otsikkokentän kautta valitun vaihtoehdon. Esimerkki: Kuljetus: RTP/AVP/TCPunicast;kohde=192.168.31.222;lähde=192.168.31.222;interleaved=0-1

Lisää kuvan kuvaus tähän

🎄五、RTSP 流程抓包解析

Käytä wiresharkia RTSP-suoratoistomedian verkkopakettien kaappaamiseen. Voit nähdä, että yleinen prosessi on seuraava:
1. Asiakas lähettääOPTIONSmenetelmä, palvelimen vastaus;
2. Asiakas lähettääDESCRIBEmenetelmä, palvelimen vastaus;
3. Asiakas lähettääSETUPmenetelmä, palvelimen vastaus;
2. Asiakas lähettääPLAYmenetelmä, palvelimen vastaus;
2. Asiakas lähettääTEARDOWNmenetelmä, palvelimen vastaus;
Lisää kuvan kuvaus tähän
Täydellinen virtauspaketti on seuraava:

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

Seuraavassa analysoidaan jokainen edellisessä viestissä käytetty RTSP-menetelmä ja vastaus.

✨5.1, OPTION-menetelmä

Hanki käytettävissä olevat menetelmät palvelimelta:
Lisää kuvan kuvaus tähän
Asiakas lähettää OPTIONS-menetelmän ja käyttääCSeq Voit määrittää pyynnön järjestysnumeron käyttämälläUser-Agent tunnistaa oman edustajansa;
Palvelin vastaa pyyntöön käyttämälläCSeq Jos haluat ilmoittaa, mihin pyyntöön vastataan, käytäDatemääritä päivämäärä,PublicMäärittää tarjotun menetelmän.


✨5.2, KUVAUS menetelmä

Hae palvelimeltartsp://192.168.3.225:554/wbckuvaus mediaobjektista, missäAcceptKenttä määrittää kuvausmuodon:

Lisää kuvan kuvaus tähän
Asiakas lähettää DESCRIBE-menetelmän ja käyttääCSeq Voit määrittää pyynnön järjestysnumeron käyttämälläUser-Agent tunnista agenttisi,AcceptKenttä määrittää kuvausmuodoksi SDP;

Palvelin vastaa tähän pyyntöön käyttämällä CSeq Jos haluat ilmoittaa, mihin pyyntöön vastataan, käytäDatemääritä päivämäärä,Content-TypeOsoittaa, että sisältötyyppi on SDP,Content-LengthMääritä sisällön pituus.

Ilmoitus
1. Joidenkin, jotka vaativat käyttäjätunnuksen ja salasanan, palvelin käsittelee DESCRIBE-menetelmän todennusta varten. Jos valtuutustodennustietoja ei kuljeteta tai todennus epäonnistuu, palvelin palauttaa vastauksen virhenumerolla 401. Kun asiakas vastaanottaa 401-vastauksen, sen on luotava valtuutus tunnettujen käyttäjän todennustietojen perusteella ja lähetettävä kuvaus uudelleen. Jos todennus onnistuu, palvelin palauttaa SDP:tä kuljettavat vastaustiedot.
2. Palvelimen palauttamat SDP-tiedot analysoidaan myöhemmässä artikkelissa.


✨5.3, ASETUSmenetelmä

Asiakas pyytää palvelinta muodostamaan istunnon ja valmistautumaan lähetystä varten. Pyyntötiedot sisältävät pääasiassa lähetysprotokollan ja asiakkaan porttinumeron;

Lisää kuvan kuvaus tähän
Asiakas lähettää SETUP-menetelmän ja käyttääCSeq Voit määrittää pyynnön järjestysnumeron käyttämälläUser-Agent tunnista agenttisi,TransportKenttä määrittää hyväksyttävän siirtoprotokollan RTP/AVP ja portin (tässä RTP-portti on 55320 ja RTCP-portti 55321);

Palvelin vastaa tähän pyyntöön käyttämällä CSeq Jos haluat ilmoittaa, mihin pyyntöön vastataan, käytäDatemääritä päivämäärä,TransportMääritä siirtoprotokolla RTP/AVP, kohdeosoite, lähdeosoite, asiakasportti (RTP on 55320, RTCP on 55321), palvelinportti (RTP on 6970, RTCP on 6971),SessionMääritä istunnon tunnus.

Ilmoitus
Tässä esimerkissä RTP lähetetään UDP-protokollan kautta. Joskus RTP lähetetään TCP:n kauttaTransport Kentät vaihtelevat. Se voi olla seuraava:

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

RTP/AVP/TCPOsoittaa, että RTP-virta lähetetään TCP:n kautta. Kun tämä arvo tulee näkyviin, viestissä ei ole client_port-kenttää.
interleaved=0-1Edustaa streamid-tunnusta, joka tunnistaa RTP-virran tunnus = 0;
Kun koodivirta lähetetään TCP:n kautta, se jakaa TCP-linkin RTSP:n kanssa, joten sen ei tarvitse muodostaa uutta yhteyttä RTP-, RTCP- ja RTSP-protokollan erottamiseksi on lisättävä otsikkotunniste otsikkokenttää käytetään tässä, ja tcphead on neljä sanaa, muoto on seuraava:

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

magic number: 1 tavu, kiinteä0x24, on hahmo$, joka osoittaa, että lähetettävä data ei ole rtsp-protokollaa;
channel number: 1 tavu, kanavatunnus, joka tunnistaa virran tyypin, joka on aiemmin mainittu streamid;
embedded data length : 2 tavua, ilmaisee virran pituuden
data: Ilmaisee RTP/RTCP-pakettidataa


✨5.4, PLAY-menetelmä

Asiakas ilmoittaa aktiivisesti palvelimelle tietojen lähettämisen aloittamisesta SETUP:n määrittämän mekanismin avulla.

Lisää kuvan kuvaus tähän
Asiakas lähettää PLAY-menetelmän ja käyttääCSeq Voit määrittää pyynnön järjestysnumeron käyttämälläUser-Agent tunnista agenttisi,Sessionkenttä määrittää istunnon tunnuksen,RangeKenttä määrittää toiston alkamis- ja päättymisajan.

Palvelin vastaa tähän pyyntöön käyttämällä CSeq Ilmoita, mihin pyyntöön vastataanDatemääritä päivämäärä;RangeKenttä määrittää toiston alkamis- ja päättymisajan.SessionKenttä määrittää istunnon tunnuksen;RTP-InfoKenttä kuvaa lähetettävän koodivirran RTP-tiedot, kuten ensimmäisen RTP-paketin seq ja rtptime. Asiakas voi demultipleksoida tämän kentän perusteella.


✨5.5, TEARDOWN menetelmä

Asiakas pyytää lopettamaan määritetyn URL-virran lähettämisen ja vapauttamaan liittyvät resurssit.
Lisää kuvan kuvaus tähän
Asiakas lähettää TEARDOWN-menetelmän ja käyttääCSeq Voit määrittää pyynnön järjestysnumeron käyttämälläUser-Agent tunnista agenttisi,Sessionkenttä määrittää istunnon tunnuksen.

Palvelin vastaa tähän pyyntöön käyttämällä CSeq Ilmoita, mihin pyyntöön vastataanDateMääritä päivämäärä.


Lisää kuvan kuvaus tähän

🎄六、RTSP 响应错误码

RTSP-vastaussisältö sisältää yleensä 3-numeroisen kokonaisluvun vastauskoodin. Lausekkeen tarkoitus on antaa lyhyt tekstikuvaus tilakoodista Asiakkaan ei tarvitse tarkistaa tai näyttää syylausetta. Vastauskoodin ensimmäisen numeron välisen eron mukaan se voidaan jakaa seuraaviin viiteen luokkaan:

  • 1xx: Vihje - pyyntö on vastaanotettu ja sitä käsitellään
  • 2xx: Onnistui – pyyntö on käsitelty onnistuneesti
  • 3xx: Uudelleenohjaus – pyynnön suorittamiseksi on suoritettava lisätoimia
  • 4xx: Asiakasvirhe - Pyyntö sisälsi virheellisiä parametreja tai syntaksia, eikä pyyntöä voitu täyttää.
  • 5xx: Palvelinvirhe - Palvelin ei pystynyt täyttämään asiakkaan oikeaa pyyntöä

Tietenkin RTSP-virhekoodit ja RTSP-menetelmät liittyvät toisiinsa vahvasti. Jotkut virheet voivat käynnistyä vain tietyissä menetelmissä.

virhekoodisyylausevastausmenetelmä
100JatkaaKaikki
200MenestysKaikki
201LuotuENNÄTYS
250Tallennustila vähissäENNÄTYS
300Useita vaihtoehtojaKaikki
301Siirretty PysyvästiKaikki
302Siirretty väliaikaisestiKaikki
303Katso MuutKaikki
305Käytä välityspalvelintaKaikki
400Huono pyyntöKaikki
401LuvatonKaikki
402maksua vaaditaanKaikki
403KiellettyKaikki
404Ei löydettyKaikki
405Menetelmä Ei SallittuKaikki
406Ei hyväksyttäväKaikki
407Välityspalvelimen todennus vaaditaanKaikki
408Pyynnön aikakatkaisuKaikki
410MennytKaikki
411Pituus vaaditaanKaikki
412Edellytys epäonnistui DESCRIBEPERUSTAA
413Request Entity Too LargKaikki
414Pyyntö-URI liian pitkäKaikki
415Mediatyyppiä ei tuetaKaikki
451Väärä syötePERUSTAA
452Laiton konferenssitunnistePERUSTAA
453Ei tarpeeksi kaistanleveyttäPERUSTAA
454Istuntoa ei löydyKaikki
455Menetelmä ei kelpaa tässä tilassaKaikki
456Otsikkokenttä ei kelpaaKaikki
457Virheellinen aluePELATA
458Parametri on vain luku -tilassaSET_PARAMETER
459Aggregaattitoiminto ei ole sallittuKaikki
460Vain yhteenlaskettu toiminta sallittuKaikki
461Ei tuettu kuljetusKaikki
462Kohde tavoittamatonKaikki
500Sisäinen palvelinvirheKaikki
501Ei toteutettuKaikki
502Huono porttiKaikki
503palvelu ei saatavillaKaikki
504Yhdyskäytävän aikakatkaisuKaikki
505RTSP-versiota ei tuetaKaikki
551Vaihtoehtoa ei tuetaKaikki

Lisää kuvan kuvaus tähän
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

viitata:
Reaaliaikainen suoratoistoprotokolla – RTSP [yksityiskohtainen selitys]
Hallitse RTSP-pyynnöt ja vastaukset tyhjästä 1
Yksityiskohtainen kuvaus RTSP-suoratoistomediaprotokollasta