Articles

7 måter å streame RTSP på siden

i denne artikkelen demonstrerer vi 7 teknologisk forskjellige måter å vise en videostrøm fra ET IP-kamera med rtsp-støtte på en nettside i en nettleser.

nettlesere støtter Som regel IKKE RTSP, så videostrømmen konverteres for en nettleser som bruker en mellomliggende server.

Metode 1-RTMP

Nettlesere støtter IKKE RTMP-protokollen, men gjett hvem som gjør det? Den gamle trofaste Flash Player som fungerer nok godt selv om den ikke støtter alle nettlesere, så det kan vise videostrømmen.

Flash player

koden til spilleren er bygget På Action Script 3 og ser slik ut:

var nc:NetConnection = nc.connect("rtmp://192.168.88.59/live",obj);var subscribeStream:NetStream = new NetStream(nc);subscribeStream.play("rtsp://192.168.88.5/live.sdp");

i dette eksemplet:

rtmp://192.168.88.59/live – er adressen til den mellomliggende serveren som henter rtsp video stream fra kameraet og konverterer den til rtmp.

rtsp: / / 192.168.88.5 / live.sdp-ER RTSP-adressen til kameraet.

en litt overflødig variant av spilleren På Flex OG AS3 er tilgjengelig her.

denne metoden ser slik ut:

Flash streaming

Metode 2 – RTMP innpakket TIL HTML5

det er vanskelig å finne de som er villige til å holde koding på Action Script 3 i disse dager. Så det er en metode MED EN HTML-innpakning som gjør det mulig å kontrollere RTMP-spilleren Fra JavaScript. I denne varianten blitsen er lastet TIL HTML-siden bare for å vise bilde og spille av lyd.

Rtmp-spiller JavaScript

var session = Flashphoner.createSession({urlServer:"wss://192.168.88.59:8443"});session.createStream({name:"rtsp://192.168.88.5/live.sdp", display:myVideo}).play();

hele kildekoden til spilleren er her. Og metoden ser slik ut:

wcs url stream volume

Metode 3-RTMFP

RTMFP-protokollen fungerer også inne I Flash Player. Forskjellen FRA RTMP er AT RTMFP fungerer på TOPPEN AV UDP, så det er mye mer egnet for lav latens kringkasting.

as3-koden til spilleren er identisk MED RTMP, bortsett fra ett bokstav F lagt til i kodelinjen der forbindelsen til serveren er etablert.

var nc:NetConnection = nc.connect("rtmfp://192.168.88.59/live",obj);var subscribeStream:NetStream = new NetStream(nc);subscribeStream.play("rtsp://192.168.88.5/live.sdp");

likevel er her et skjermbilde med RTMFP

Skjermbilde MED RTMFP

Metode 4 – RTMFP innpakket TIL HTML5

DENNE måten er identisk med metode 2, bortsett fra at VI under initialisering setter RTMFP-protokollen for den underliggende Blitsen (swf-objekt).

Var session = Flashphoner.createSession({urlServer:"wss://192.168.88.59:8443", flashProto:"rtmfp"});session.createStream({name:"rtsp://192.168.88.5/live.sdp", display:myVideo}).play();

Spiller bilde:

RTMFP HTML5 - player

Metode 5-WebRTC

I dette tilfellet bruker Vi Ikke Flash i Det hele tatt, og videostrømmen spilles ved hjelp av selve nettleseren, uten å bruke tredjeparts plugins. Denne metoden fungerer både I Chrome Og Firefox Android nettlesere, Der Flash ikke er tilgjengelig. WebRTC resulterer i den laveste ventetiden, mindre enn 0,5 sekunder.

WebRTC Android Chrome Og Android Firefox

kildekoden til spilleren er den samme:

var session = Flashphoner.createSession({urlServer:"wss://192.168.88.59:8443"});session.createStream({name:"rtsp://192.168.88.5/live.sdp", display:myVideo}).play();

skriptet oppdager Automatisk WebRTC-støtte, og hvis ti støttes, spilles strømmen med WebRTC.

Spille Av WebRTC

Metode 6-Websockets

WebRTC og Flash dekker ikke alle nettlesere og plattformer. For eksempel, ios Safari-nettleseren støtter ikke dem.

Websockets - WebRTC og Flash

du kan levere en videostrøm til iOS Safari ved Hjelp Av Websocket transport (EN tcp-forbindelse mellom nettleseren og serveren). DERETTER kanaliseres RTSP-videostrømmen gjennom Websockets. Etter at de binære data er mottatt, kan de dekodes Ved Hjelp Av JavaScript og gjengitt På Lerret HTML5 element.

Dette er Hva Websocket player gjør på iOS Safari-nettleseren. Koden til spilleren ser den samme ut:

var session = Flashphoner.createSession({urlServer:"wss://192.168.88.59:8443"});session.createStream({name:"rtsp://192.168.88.5/live.sdp", display:myVideo}).play();

dette ligner noe På Flash-baserte metoder når swf-elementet ligger under HTML5. Her har Vi Et JavaScript-program under HTML5 som henter data via Websockets, dekoder dem og gjengir Dem på Lerret i flere tråder.

slik ser en rtsp-strøm gjengitt på Canvas i Ios Safari-nettleseren ut:

Rtsp Canvas i iOS Safari

Metode 7-HLS

når RTSP konverteres TIL HLS, deles en videostrøm til segmenter som gjerne lastes ned fra serveren og vises i hls-spilleren.

Konverter RTSP til HLS

som EN HLS-spiller bruker vi video.js. Kildekoden til spilleren kan lastes ned her.

spilleren ser ut som følger:

hls-spiller stream

Metode 8-Android søknad, WebRTC

programmet henter strømmen fra serveren Via WebRTC. Til målet med serveren her er å konvertere RTSP Til WebRTC og mate resultatet til mobilapplikasjonen.

Konverter RTSP Til WebRTC

Java-koden til spilleren For Android er her og ser slik ut:

SessionOptions sessionOptions = new SessionOptions("wss://192.168.88.59:8443");Session session = Flashphoner.createSession(sessionOptions);StreamOptions streamOptions = new StreamOptions("rtsp://192.168.88.5/live.sdp");Stream playStream = session.createStream(streamOptions);playStream.play();

en test mobilapp av spilleren kan installeres Fra Google Play, og kildene til søknaden kan lastes ned herfra.

HER er hvordan rtsp stream avspilling via WebRTC ser På Asus Android tablet:

Spiller RTSP stream via WebRTC

Metode 9 – iOS-applikasjon, WebRTC

akkurat som Sine Android-brødre, henter iOS-applikasjonen en videostrøm fra serveren Via WebRTC.

iOS app WebRTC

Objective-c-koden til spilleren ser ut som vist nedenfor:

FPWCSApi2SessionOptions *options = init];options.urlServer = @"wss://192.168.88.59:8443";FPWCSApi2Session *session = ;FPWCSApi2StreamOptions *options = init];options.name = @"rtsp://192.168.88.5/live.sdp";FPWCSApi2Stream *stream = ;stream play:&error;

du kan laste ned kildekoden til spilleren for iOS her.

og du kan installere testprogrammet som bruker de ovennevnte kodebitene Fra App Store. Drift av spilleren MED rtsp-strømmen ser slik ut:

App Store test app

Resultater

La oss sette resultatene sammen i en oppsummeringstabell:

Sanntids

høy

Display method Best for Latency
1 RTMP Legacy Flash, Flex or Adobe Air applications medium
2 RTMP + HTML5 IE, Edge, Mac Safari browsers if Flash Player is installed medium
3 RTMFP Legacy Flash, Flex or Adobe Air applications that require low latency low
4 RTMFP + HTML5 IE, Edge, Mac Safari browsers hvis Flash Player er installert og når lav latens er avgjørende lav
5 Webrtc Chrome, Firefox, Opera nettlesere på mobile enheter og stasjonære på Android og når sanntid avspilling er avgjørende.
6 Websocket Nettlesere som mangler støtte For Flash og WebRTC, men oppgaven krever lav til middels ventetid. medium
7 Hls Alle nettlesere Så lenge latens ikke er viktig.
8 Android app, WebRTC Innfødte mobile applikasjoner For Android som krever sanntids latens. real-time
9 iOS app, WebRTC Innfødte mobile applikasjoner for iOS som krever sanntid latens. real-time

for å teste metodene vi brukte Web Call Server 5 som er i stand Til å konvertere EN rtsp-strøm og overføre den til alle ni ovenfor beskrevne retninger.

Web Call Server 5-en server for å kringkaste EN rtsp-strøm.Flash Streaming-et eksempel swf søknad spille bekker via RTMP og RTMFP. Tilsvarer metode 1 og 3.
Source-kildekoden til swf-programmet På Flex / AS3.Spiller-et eksempel web-applikasjon som spiller EN rtsp stream VIA RTMP, RTMFP, WebRTC, Websocket. Metoder 2,4,5,6.
Kilde-kildekoden til web-spilleren.

HLS player – et eksempel web-spiller som spiller HLS. Tilsvarer metode 7.
Kilde-kildekoden TIL hls-spilleren.