Streaming Protocol i sanntid - Real Time Streaming Protocol
The Real Time Streaming Protocol ( RTSP ) er en nettverkskontroll protokoll utviklet for bruk i underholdning og kommunikasjonssystemer for å kontrollere streaming media servere . Protokollen brukes til å etablere og kontrollere mediesesjoner mellom endepunkter. Kunder på medieservere utsteder kommandoer som spill , ta opp og pause , for å lette sanntids kontroll av mediestrømmingen fra serveren til en klient (Video On Demand) eller fra en klient til serveren (taleopptak).
Historie
RTSP ble utviklet av RealNetworks , Netscape og Columbia University . Det første utkastet ble sendt til IETF i oktober 1996 av Netscape og Progressive Networks , hvoretter Henning Schulzrinne fra Columbia University leverte "RTSP" "(" RTSP prime ") i desember 1996. De to utkastene ble slått sammen for standardisering av Multiparty Multimedia Session Control Working Group (MMUSIC WG) fra Internet Engineering Task Force (IETF) og ytterligere utkast ble publisert av arbeidsgruppen. Den foreslåtte standarden for RTSP ble utgitt som RFC 2326 i 1998. RTSP 2.0 utgitt som RFC 7826 i 2016 som en erstatning for RTSP 1.0. RTSP 2.0 er basert på RTSP 1.0, men er ikke bakoverkompatibel annet enn i den grunnleggende versjonsforhandlingsmekanismen, og er fortsatt en "foreslått standard".
Internettprotokollpakke |
---|
Påføringslag |
Transportlag |
Internett -lag |
Linklag |
RTP
Selve overføringen av strømmende data er ikke en oppgave for RTSP. De fleste RTSP-servere bruker sanntids transportprotokoll (RTP) sammen med sanntids kontrollprotokoll (RTCP) for levering av mediestrøm. Noen leverandører implementerer imidlertid proprietære transportprotokoller. RTSP -serverprogramvaren fra RealNetworks brukte for eksempel også RealNetworks proprietære Real Data Transport (RDT).
Protokolldirektiver
Selv om RTSP på noen måter ligner på HTTP , definerer RTSP kontrollsekvenser som er nyttige for å kontrollere multimedieavspilling. Mens HTTP er statsløs , har RTSP tilstand; en identifikator brukes når det er nødvendig for å spore samtidige økter. Som HTTP bruker RTSP TCP for å opprettholde en ende-til-ende-tilkobling, og mens de fleste RTSP-kontrollmeldinger sendes av klienten til serveren, beveger noen kommandoer seg i den andre retningen (dvs. fra server til klient).
Her presenteres de grunnleggende RTSP -forespørslene. Noen typiske HTTP -forespørsler , for eksempel OPTIONS -forespørselen, er også tilgjengelige. Standard transportlags portnummer er 554 for både TCP og UDP , sistnevnte blir sjelden brukt for kontrollforespørslene.
ALTERNATIVER
- En OPTIONS -forespørsel returnerer forespørselstypene serveren godtar.
C->S: OPTIONS rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 1 Require: implicit-play Proxy-Require: gzipped-messages S->C: RTSP/1.0 200 OK CSeq: 1 Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE
BESKRIVE
- En DESCRIBE -forespørsel inkluderer en RTSP -URL (rtsp: // ...), og typen svardata som kan håndteres. Dette svaret inneholder presentasjonsbeskrivelsen, vanligvis i SDP -format ( Session Description Protocol ). Blant annet viser presentasjonsbeskrivelsen mediestrømmene som er kontrollert med den samlede URL -en. I det typiske tilfellet er det en mediestrøm hver for lyd- og videostrøm. Mediestrømnettadressene hentes enten direkte fra SDP -kontrollfeltene, eller de hentes ved å legge SDP -kontrollfeltet til den samlede URL -en.
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 Content-Length: 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;"hinted video track" 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;"hinted audio track"
OPPSETT
- En SETUP -forespørsel angir hvordan en enkelt mediestrøm må transporteres. Dette må gjøres før en PLAY -forespørsel sendes. Forespørselen inneholder mediestrømadressen og en transportspesifikator. Denne spesifisereren inneholder vanligvis en lokal port for mottak av RTP -data (lyd eller video), og en annen for RTCP -data (metainformasjon). Serverens svar bekrefter vanligvis de valgte parameterne og fyller ut de manglende delene, for eksempel serverens valgte porter. Hver mediestrøm må konfigureres ved hjelp av SETUP før en samlet forespørsel om avspilling kan sendes.
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 Session: 12345678 C->S: SETUP rtsp://example.com/media.mp4/streamid=1 RTSP/1.0 CSeq: 3 Transport: RTP/AVP;unicast;client_port=8002-8003 Session: 12345678 S->C: RTSP/1.0 200 OK CSeq: 3 Transport: RTP/AVP;unicast;client_port=8002-8003;server_port=9002-9003;ssrc=1234ABCD Session: 12345678
SPILLE
- En PLAY -forespørsel vil føre til at en eller alle mediestrømmer spilles av. Spillforespørsler kan stables ved å sende flere PLAY -forespørsler. Nettadressen kan være den samlede nettadressen (for å spille av alle mediestrømmer), eller en enkelt mediestrømadresse (for bare å spille den strømmen). Et område kan spesifiseres. Hvis det ikke er angitt noe område, spilles strømmen fra begynnelsen og spilles til slutten, eller hvis strømmen er satt på pause, fortsetter den på det tidspunktet den ble satt på pause.
C->S: PLAY rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 4 Range: npt=5-20 Session: 12345678 S->C: RTSP/1.0 200 OK CSeq: 4 Session: 12345678 RTP-Info: url=rtsp://example.com/media.mp4/streamid=0;seq=9810092;rtptime=3450012
PAUSE
- En PAUSE -forespørsel stopper en eller alle mediestrømmer midlertidig, slik at den senere kan gjenopptas med en PLAY -forespørsel. Forespørselen inneholder en samlet eller mediestrømadresse. En områdeparameter på en PAUSE -forespørsel angir når den skal settes på pause. Når områdeparameteren utelates, skjer pausen umiddelbart og på ubestemt tid.
C->S: PAUSE rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 5 Session: 12345678 S->C: RTSP/1.0 200 OK CSeq: 5 Session: 12345678
TA OPP
- Denne metoden starter opptak av en rekke mediedata i henhold til presentasjonsbeskrivelsen. Tidsstempelet gjenspeiler start- og sluttid (UTC). Hvis det ikke er angitt et tidsintervall, kan du bruke start- eller sluttiden i presentasjonsbeskrivelsen. Hvis økten allerede har startet, må du starte innspillingen umiddelbart. Serveren bestemmer om de lagrede dataene skal lagres under forespørsels -URI eller en annen URI. Hvis serveren ikke bruker forespørsels -URI, bør svaret være 201 og inneholde en enhet som beskriver forespørselens tilstander og refererer til den nye ressursen, og en posisjonsoverskrift.
C->S: RECORD rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 6 Session: 12345678 S->C: RTSP/1.0 200 OK CSeq: 6 Session: 12345678
KUNNGJØRE
ANNOUNCE -metoden tjener to formål:
- Når den sendes fra klient til server, legger ANNOUNCE ut beskrivelsen av en presentasjon eller et medieobjekt som er identifisert av forespørselsadressen til en server. Når den sendes fra server til klient, oppdaterer ANNOUNCE sesjonsbeskrivelsen i sanntid. Hvis en ny mediestrøm legges til i en presentasjon (f.eks. Under en live presentasjon), bør hele presentasjonsbeskrivelsen sendes på nytt, i stedet for bare de ekstra komponentene, slik at komponenter kan slettes.
C-> S: ANNONSER rtsp: //example.com/media.mp4 RTSP/1.0
CSeq: 7
Dato: 23. januar 1997 15:35:06 GMT
Økt: 12345678
Innholdstype: application/sdp
Innholdslengde: 332
v = 0
o = mhandley 2890844526 2890845468 I IP4 126.16.64.4
s = SDP Seminar
i = Et seminar om sesjonsbeskrivelsesprotokollen
u = http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps
e=mjh@isi.edu (Mark Handley)
c = I IP4 224.2.17.12/127
t = 2873397496 2873404696
a = recvonly
m = lyd 3456 RTP/AVP 0
m = video 2232 RTP/AVP 31
S-> C: RTSP/1,0 200 OK
CSeq: 7
RIVE NED
- En TEARDOWN -forespørsel brukes til å avslutte økten. Den stopper alle mediestrømmer og frigjør alle sesjonsrelaterte data på serveren.
C->S: TEARDOWN rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 8 Session: 12345678 S->C: RTSP/1.0 200 OK CSeq: 8
GET_PARAMETER
- GET_PARAMETER -forespørselen henter verdien av en parameter i en presentasjon eller strøm spesifisert i URI. Innholdet i svaret og svaret overlates til implementeringen. GET_PARAMETER uten enhetstekst kan brukes til å teste klient- eller serverlivet ("ping").
S->C: GET_PARAMETER rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 9 Content-Type: text/parameters Session: 12345678 Content-Length: 15 packets_received jitter C->S: RTSP/1.0 200 OK CSeq: 9 Content-Length: 46 Content-Type: text/parameters packets_received: 10 jitter: 0.3838
SET_PARAMETER
- Denne metoden ber om å angi verdien av en parameter for en presentasjon eller strøm spesifisert av URI.
C->S: SET_PARAMETER rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 10 Content-length: 20 Content-type: text/parameters barparam: barstuff S->C: RTSP/1.0 451 Invalid Parameter CSeq: 10 Content-length: 10 Content-type: text/parameters barparam
REDIRECT
- En REDIRECT -forespørsel informerer klienten om at den må koble seg til en annen serverplassering. Den inneholder den obligatoriske overskriften Plassering, som indikerer at klienten bør sende forespørsler om denne nettadressen. Den kan inneholde parameteren Range, som indikerer når omdirigering trer i kraft. Hvis klienten ønsker å fortsette å sende eller motta media for denne URI, MÅ klienten sende ut en TEARDOWN -forespørsel for den aktuelle økten og en OPPSETT for den nye sesjonen hos den utpekte verten.
S->C: REDIRECT rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 11 Location: rtsp://bigserver.com:8001 Range: clock=19960213T143205Z-
Innebygde (interleaved) binære data
- Enkelte brannmurdesign og andre omstendigheter kan tvinge en server til å blande inn RTSP -metoder og streame data. Denne sammenflettingen bør generelt unngås med mindre det er nødvendig siden det kompliserer klient- og serveroperasjonen og pålegger ytterligere omkostninger. Interleaved binære data SKAL bare brukes hvis RTSP overføres over TCP. Strømdata som RTP-pakker er innkapslet av et ASCII-dollartegn (24 heksadesimalt), etterfulgt av en 1-byte kanalidentifikator, etterfulgt av lengden på de innkapslede binære dataene som et binært, to-byte heltall i nettverksbyterekkefølge. Strømdataene følger umiddelbart etterpå, uten CRLF, men inkludert protokolloverskriftene på det øvre laget. Hver $ -blokk inneholder nøyaktig en øvre lag protokolldataenhet, f.eks. En RTP-pakke.
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 Date: 05 Jun 1997 18:57:18 GMT Transport: RTP/AVP/TCP;interleaved=0-1 Session: 12345678 C->S: PLAY rtsp://example.com/media.mp4 RTSP/1.0 CSeq: 4 Session: 12345678 S->C: RTSP/1.0 200 OK CSeq: 4 Session: 12345678 Date: 05 Jun 1997 18:59:15 GMT RTP-Info: url=rtsp://example.com/media.mp4;seq=232433;rtptime=972948234 S->C: $\000{2 byte length}{"length" bytes data, w/RTP header} S->C: $\000{2 byte length}{"length" bytes data, w/RTP header} S->C: $\001{2 byte length}{"length" bytes RTCP packet}
Rate tilpasning
RTSP ved bruk av RTP og RTCP muliggjør implementering av taksttilpasning.
Implementeringer
Server
- Darwin Streaming Server : Versjon med åpen kildekode av QuickTime Streaming Server vedlikeholdt av Apple.
- Feng : Lean og mean streaming server med fokus på rfc compliance.
- GStreamer -basert RTSP -server og klient.
- Helix DNA Server : RealNetworks 'streaming server. Kommer i både åpen kildekode og proprietære smaker.
- Helix Universal Server : RealNetworks kommersielle streaming -server for RTSP, RTMP, iOS, Silverlight og HTTP streaming media -klienter
- LIVE555 liveMedia / openRTSP : Åpen kildekode C ++- server og klientbibliotek som brukes i kjente klienter som VLC og mplayer .
- Motion : Et gratis CCTV -program for Linux.
- Nimble Streamer støtter RTSP pull og kunngjør input med TCP interleaved playback output.
- pvServer : Tidligere kalt PacketVideo Streaming Server, dette er Alcatel-Lucents streaming server-produkt.
- QuickTime Streaming Server : Apples streaming-server med lukket kilde som leveres med Mac OS X Server.
- VideoLAN : Mediespiller med åpen kildekode og streaming -server.
- Windows Media Services : Microsoft streaming server tidligere inkludert i Windows Server som bruker RTSP modifisert med Windows Media utvidelser
- Wowza Streaming Engine : Multi-format streaming server for RTSP/RTP, RTMP , MPEG-TS , ICY, HTTP ( HTTP Live Streaming , HTTP Dynamic Streaming , Smooth Streaming , MPEG-DASH ), WebRTC
- YouTube implementerte en mobil nettgrensesnitt i juni 2007 som serverer video gjennom denne protokollen.
Mange CCTV / sikkerhetskameraer, ofte kalt IP -kameraer, støtter også RTSP -streaming, spesielt disse med ONVIF -profiler G, S, T.
Klient
- Astra
- cURL (begynner med versjon 7.20.0— 9. februar 2010)
- FFmpeg
- GStreamer
- JetAudio
- LIVE555 liveMedia / openRTSP : Åpen kildekode C ++- server og klientbibliotek som brukes i kjente klienter som VLC og mplayer .
- Media Player Classic
- MPlayer
- MythTV via Freebox
- Rask tid
- Ekte spiller
- Skype
- Spotify
- VLC mediespiller
- Winamp
- Windows media spiller
- xine
- ZoneMinder
- Motion_ (overvåkingsprogramvare)
Referanser
Eksterne linker
- "Sanntidsstrømning av protokollinformasjon og oppdateringer" . Arkivert fra originalen 2007-03-06., et sentralt informasjonslager om RTSP.
- "Tunnelering av RTSP og RTP gjennom HTTP" . Arkivert fra originalen 2013-05-01., En standard løsning for å hjelpe RTSP til å arbeide gjennom brannmurer og webproxyer
- " Managed Media Aggregation using Rtsp and Rtp ", går en utvikler gjennom implementeringen av en standardkompatibel RtspClient og RtspServer.