Articles

7 způsobů, jak stream RTSP na stránce

V tomto článku se budeme demonstrovat, 7 technologicky různé způsoby, jak zobrazit video stream z IP kamer s RTSP podpora na webové stránce v prohlížeči.

prohlížeče zpravidla nepodporují RTSP, takže video stream je převeden pro prohlížeč pomocí zprostředkujícího serveru.

Metoda 1-RTMP

prohlížeče nepodporují protokol RTMP,ale hádejte, kdo to dělá? Starý věrný Flash Player, který funguje dostatečně dobře, i když nepodporuje všechny prohlížeče, takže může zobrazit video stream.

Flash player

kód přehrávače je postaven na Action Script 3 a vypadá takto:

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");

V tomto příkladu:

rtmp://192.168.88.59/live – je adresa zprostředkujícího serveru, který načte RTSP video stream z kamery a převádí je na RTMP.

rtsp: / / 192.168.88.5 / žít.sdp-je RTSP adresa kamery.

trochu nadbytečná varianta přehrávače na Flex a AS3 je k dispozici zde.

Tato metoda vypadá takto:

Flash streaming

Metoda 2 – RTMP zabalené do HTML5

je těžké najít ty, kteří chtějí udržet kódování na Action Script 3 tyto dny. Existuje tedy metoda s obalem HTML, která umožňuje ovládání přehrávače RTMP z JavaScriptu. V této variantě je flash načten na stránku HTML pouze pro zobrazení obrazu a přehrávání zvuku.

RTMP-Player 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();

úplný zdrojový kód přehrávače je zde. A metoda vypadá takto:

url WCS stream objem

Metoda 3 – RTMFP

protokol RTMFP také funguje uvnitř Flash Player. Rozdíl od RTMP spočívá v tom, že RTMFP pracuje na vrcholu UDP, takže je mnohem vhodnější pro vysílání s nízkou latencí.

AS3 kód přehrávače je totožný s kódem RTMP s výjimkou jednoho písmene F přidaného do řádku kódu, kde je navázáno připojení k serveru.

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");

Nicméně, zde je screenshot pomocí RTMFP

Screenshot s RTMFP

Metoda 4 – RTMFP zabalené do HTML5

Tento způsob je shodný s metodou 2 s výjimkou, že během inicializace nastavíme protokol RTMFP pro základní Flash (swf objektu).

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();

obrázek přehrávače:

RTMFP HTML5 přehrávač

Metoda 5 – WebRTC

V tomto případě nepoužíváme Flash vůbec, a video stream je hrána pomocí prostředků prohlížeče sám, bez pomocí třetích stran pluginy. Tato metoda funguje v prohlížečích Chrome i Firefox Android, kde Flash není k dispozici. WebRTC má za následek nejnižší latenci, méně než 0,5 sekundy.

WebRTC Android, Chrome a Android Firefox

zdrojový kód přehrávače je stejné:

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

skript automaticky detekuje podporu WebRTC, a pokud ti je podporován, proud se hraje pomocí WebRTC.

Hraní WebRTC

Metoda 6 – Websockets

WebRTC a Flash nepokrývají všechny prohlížeče a platformy. Například prohlížeč iOS Safari je nepodporuje.

Websockets - WebRTC a Flash

můžete dodat video stream na iOS Safari pomocí Websocket dopravy (TCP spojení mezi prohlížečem a serverem). Poté je RTSP video stream směrován přes Websockets. Po přijetí binárních dat je lze dekódovat pomocí JavaScriptu a vykreslit na plátně HTML5 element.

to je to, co Websocket player dělá v prohlížeči iOS Safari. Kód přehrávač vypadá stejně:

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

Toto je poněkud podobné Flash-založené metody, když swf prvek leží pod HTML5. Zde máme aplikaci JavaScript pod HTML5, která načte data přes Websockets, dekóduje je a vykresluje je na plátně ve více vláknech.

Zde je, jak RTSP stream vykreslen na Plátně v prohlížeči iOS Safari vypadá jako:

RTSP Plátno v iOS Safari

Metoda 7 – HLS

Když RTSP je převeden na HLS, video stream je rozdělen do segmentů, které jsou šťastně stáhnout ze serveru a zobrazí se v HLS player.

převést RTSP na HLS

jako přehrávač HLS používáme video.js. Zdrojový kód přehrávače si můžete stáhnout zde.

přehrávač vypadá následovně:

HLS-player stream

Metoda 8 – Android aplikace, WebRTC

aplikace načte datový proud ze serveru přes WebRTC. Cílem serveru je převést RTSP na WebRTC a výsledek přenést do mobilní aplikace.

Convert RTSP, aby WebRTC

Java-kód player pro Android je tady a vypadá takto:

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();

test mobilní aplikace přehrávače mohou být instalovány z Google Play, a zdroje z aplikace lze stáhnout z zde.

Zde je, jak RTSP stream přehrávání přes WebRTC vypadá na Asus Android tablet:

Přehrávání RTSP stream přes WebRTC

Metoda 9 – iOS aplikace, WebRTC

Stejně jako jeho bratřím, Android, iOS aplikace načte datový proud videa ze serveru přes WebRTC.

iOS WebRTC

Objective-C kódu hráč vypadá, jak je uvedeno níže:

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;

zde Si můžete stáhnout zdrojový kód přehrávače pro iOS zde.

a můžete nainstalovat testovací aplikaci, která používá výše uvedené bloky kódu z App Store. Provoz hráč s RTSP stream vypadá takto:

App Store test aplikace

Výsledky

dejme výsledky do souhrnné tabulky:

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 pokud Flash Player je nainstalován a při nízké latence je rozhodující nízká
5 WebRTC Chrome, Firefox, Opera prohlížečů na mobilních zařízení a počítačů se systémem Android a při přehrávání v reálném čase je zásadní. real-time
6 Websocket prohlížeče, které postrádají podporu pro Flash a WebRTC, ale úkol vyžaduje nízkou až střední latenci. střední
7 HLS jakýkoli prohlížeč, pokud latence není důležitá. high
8 Android app, WebRTC nativní mobilní aplikace pro Android, které vyžadují latenci v reálném čase. real-time
9 iOS app, WebRTC nativní mobilní aplikace pro iOS, které vyžadují latenci v reálném čase. v reálném čase

Pro testování metody jsme použili Web Call Server 5, který je schopen přeměnit RTSP stream a přenosu do všech devíti výše popsaných směrech.

Web Call Server 5-server pro vysílání RTSP proudu.

Flash Streaming-příklad swf aplikace přehrávání streamů přes RTMP a RTMFP. Odpovídá metodám 1 a 3.
Source-zdrojový kód aplikace swf na Flex / AS3.

Player-příklad webové aplikace, která přehrává RTSP proud přes RTMP, RTMFP, WebRTC, Websocket. Metody 2,4,5,6.
zdroj-zdrojový kód webového přehrávače.

HLS player-příklad webového hráče hrajícího HLS. Odpovídá metodě 7.
zdroj-zdrojový kód přehrávače HLS.