RTSP — srautinio perdavimo protokolas: kas tai ir kaip veikia
Sužinokite, kas yra RTSP — srautinio perdavimo protokolas, kaip jis veikia, kuo skiriasi nuo RTP ir kaip pritaikyti praktikoje vaizdo srautinime.
Realaus laiko srautinio perdavimo protokolas (RTSP), sukurtas IETF ir 1998 m. kaip RFC 2326, yra srautinės medijos sistemose naudojamas protokolas, leidžiantis klientui nuotoliniu būdu valdyti srautinės medijos serverį, išduodant į vaizdo registratorių panašias komandas, pvz., "Play" ir "Pause", ir suteikiantis prieigą prie serveryje esančių failų pagal laiką.
Pats srautinių duomenų siuntimas nėra RTSP protokolo dalis. Dauguma RTSP serverių naudoja standartais pagrįstą RTP kaip faktinių garso ir vaizdo duomenų perdavimo protokolą. "RealNetworks" RTSP serveryje taip pat naudojamas "RealNetworks" patentuotas RDT kaip transportavimo protokolas.
Kas yra RTSP ir kam jis skirtas
RTSP — tai valdymo (kontrolės) protokolas, skirtas kontroliuoti srautinės medijos seansus tarp kliento (pvz., grotuvo, IP kameros valdymo programos) ir serverio. Jis leidžia:
- gauti medijos aprašymą (pvz., SDP),
- inicializuoti ir pasirinkti transporto kanalą (UDP, TCP interleaving ir pan.),
- pradėti, pristabdyti ir nutraukti srautą (PLAY, PAUSE, TEARDOWN),
- valdyti parametrus ir monitorinti seansą.
Kaip RTSP veikia techniniu požiūriu
RTSP yra teksto pagrindu veikiančių užklausų/atsakymų protokolas, panašus į HTTP: klientas siunčia komandas į serverį, serveris atsako su statuso kodais ir antraštėmis. Tipinis seansas vyksta taip:
- DESCRIBE — klientas prašo medijos aprašymo (dažnai SDP, nurodantis srautų kodekus ir parametrus);
- SETUP — nustatomas transportas (pvz., RTP per UDP, arba interleaved RTP per RTSP/TCP) ir serveris grąžina seanso (Session) identifikatorių;
- PLAY — prasideda medijos perdavimas;
- PAUSE — laikinai sustabdomas srautas;
- TEARDOWN — nutraukiamas seansas ir atlaisvinami resursai.
Pagrindinės RTSP komandos
- OPTIONS — užklausa dėl palaikomų metodų;
- DESCRIBE — gauna medijos aprašymą;
- ANNOUNCE — praneša serveriui apie medijos pakeitimus (naudojama ir transliuotojams);
- SETUP — nustato transportą ir rezervuoja kanalus;
- PLAY, PAUSE, TEARDOWN — valdymo komandos;
- GET_PARAMETER / SET_PARAMETER — parametrai ir gebėjimas „gyvai“ keisti nustatymus;
- REDIRECT — nukreipia klientą į kitą RTSP URL.
Transportas: RTP, RTCP ir tinklo ypatumai
Nors RTSP valdo seansą, audio/video srautai dažniausiai keliauja per RTP (Real-time Transport Protocol), o kontrolinė informacija apie paketų nuostolius ir sinchronizaciją — per RTCP. RTP dažnai naudoja UDP dėl mažesnės vėlinimo, tačiau tai gali sukelti paketų praradimą tinkle. Esant tinklo ribojimams arba NAT/ugniasienėms, RTSP gali perkelti RTP paketų „interleaving“ per RTSP/TCP kanalą (t.y. RTP dalys keliauja per tą patį TCP ryšį kaip ir RTSP komandos).
Standartinis RTSP prievadas yra TCP 554, tačiau galima naudoti ir kitus prievadus. RTP srautai dažnai naudoja kintamus UDP prievadus, o RTCP — kitą seką prievadų.
Saugumas ir autentifikacija
- RTSP palaiko standartines autentifikacijos schemas, pvz., Basic ir Digest. Dėl saugumo rekomenduojama nenaudoti tik Basic be SSL/TLS.
- Kontrolės kanalo apsauga gali būti užtikrinama naudojant TLS (kartais žymima kaip rtsps://), nors ne visos įrenginių ir serverių implementacijos tai palaiko vienodai.
- Medijos srautų apsauga — SRTP (Secure RTP) — suteikia patikimesnę garso/video šifravimą ir autentifikaciją, tačiau tai reikalauja papildomos konfigūracijos.
Atsakomieji kodai ir būsena
RTSP atsakymų kodai panašūs į HTTP (pvz., 200 OK, 401 Unauthorized, 404 Not Found). Serveris taip pat grąžina Session antraštę, kuri identifikuoja seansą tarp kliento ir serverio. Be to, naudojamos antraštės kaip Transport, Range (laiko intervalai), CSeq (komandų seka) ir kt.
Pritaikymas ir praktiniai pavyzdžiai
- IP kameros ir stebėjimo sistemos dažnai naudoja RTSP, nes jis leidžia atidaryti tiesioginį vaizdo srautą ir valdyti įrašymą;
- Medijos serveriai (pvz., VLC, GStreamer, Wowza, kuriais gali būti naudojama RTSP) palaiko transliaciją ir kelių protokolų konvertavimą;
- RTSP tinka tada, kai reikia nuotolinio valdymo (start/stop/seek) realiu laiku, tačiau nėra idealus labai didelio masto viešai prieinamoms transliacijoms dėl NAT ir ugniasienių iššūkių;
- Modernios alternatyvos ir papildymai: HLS ir DASH orientuoti į HTTP pagrindu veikiančią adaptuotą transliaciją (būna patogesni dideliam kiekiui vartotojų), o WebRTC skiriamas labai mažai delsai realaus laiko sąveikai.
Praktiniai patarimai
- Jei negalite prisijungti prie RTSP srauto, patikrinkite, ar nėra užblokuotas prievadas 554 arba ar RTP prievadai nukreipti per NAT;
- naudokite interleaved RTP per TCP, jei tinklas blokuoja UDP;
- visada įjunkite autentifikaciją IP kamerose ir atnaujinkite firmware, kad sumažintumėte saugumo riziką;
- jei reikia šifruoti valdymo kanalą, ieškokite įrenginių palaikančių TLS/RTSPS arba naudokite VPN.
Santrauka
RTSP yra galingas ir patogus protokolas srautinės medijos seansų valdymui: jis leidžia kliento ir serverio sąveiką, tobulą seansų kontrolę ir lankstų transporto pasirinkimą. Tačiau pats medijos perdavimas vyksta per atskirus kanalus (dažniausiai RTP), todėl norint užtikrinti saugumą, mažą delsą ir suderinamumą, reikia atsižvelgti į tinklo sąlygas, autentifikaciją ir galimus alternatyvius sprendimus.
Klientai
- GStreamer
- "Media Player Classic
- MPEG4IP
- MPlayer
- "QuickTime"
- Avi grotuvas
- "RealPlayer"
- "Skype"
- VLC medijos grotuvas
- "Winamp"
- "Windows Media Player
- Xine
- "MythTV" per "Freebox
- Gom žaidėjas
Serverio programinė įranga
- "QuickTime Streaming Server": "Apple" uždarojo šaltinio srautinio perdavimo serveris, tiekiamas kartu su "Mac OS X Server
- Darwin srautinio perdavimo serveris: "Apple" palaikoma "Quicktime Streaming Server" atviroji versija
- pvServer: anksčiau vadintas "PacketVideo Streaming Server", tai yra "Alcatel-Lucent" transliacijos serverio produktas.
- "Helix DNA Server": "RealNetworks" transliacijos serveris. Yra tiek atvirojo kodo, tiek nuosavybinių versijų.
- Live555: Atviro kodo C++ serverio ir kliento bibliotekos, naudojamos tokiuose gerai žinomuose klientuose kaip VLC ir mplayer.
- VideoLAN: atvirojo kodo medijos grotuvas ir transliacijos serveris
- "Windows Media Services": "Microsoft" transliacijos serveris, įtrauktas į "Windows Server".
- VX30: "Maui X-Stream" srautinio vaizdo serveris ir integruotas JAVA klientas.
Susiję puslapiai
- Realaus laiko transportavimo protokolas (RTP)
- "Fusion RTSP" sprendimas, skirtas įterptosioms sistemoms, pvz., IPTV, internetinei televizijai ir mobiliesiems interneto įrenginiams.
Ieškoti