Articles

7 tapaa suoratoistaa RTSP: tä sivulla

tässä artikkelissa esittelemme 7 teknologisesti erilaista tapaa näyttää videovirtaa IP-kamerasta RTSP-tuella Web-sivulla selaimessa.

selaimet eivät pääsääntöisesti tue RTSP: tä, joten videovirta muunnetaan selaimelle välipalvelinta käyttäen.

menetelmä 1-RTMP

selaimet eivät tue RTMP-protokollaa, mutta arvaa kuka? Vanha uskollinen Flash Player, joka toimii riittävän hyvin, vaikka se ei tue kaikkia selaimia, joten se voi näyttää videovirran.

Flash player

soittimen koodi on rakennettu toiminta – skriptin 3 päälle ja näyttää seuraavasti:

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

tässä esimerkissä:

rtmp://192.168.88.59/live-on välipalvelimen osoite, joka hakee RTSP video stream kamerasta ja muuntaa sen RTMP.

rtsp://192.168.88.5 / live.sdp-on kameran RTSP-osoite.

hieman turha muunnelma soittimesta Flexissä ja AS3: ssa löytyy täältä.

tämä menetelmä näyttää seuraavanlaiselta:

Flash streaming

Method 2 – RTMP paketoituna HTML5: een

on vaikea löytää niitä, jotka ovat halukkaita jatkamaan koodausta Action Script 3: lla näinä päivinä. Niin, on menetelmä HTML kääre, jonka avulla valvoa RTMP soittimen JavaScript. Tässä muunnelmassa salama Ladataan HTML-sivulle vain kuvan ja äänen näyttämiseksi.

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

soittimen koko lähdekoodi on täällä. Ja menetelmä näyttää tältä:

WCS url stream volume

metodi 3 – RTMFP

RTMFP-protokolla toimii myös Flash Playerin sisällä. Erona RTMP: hen on, että RTMFP toimii UDP: n päällä, joten se sopii paljon paremmin matalan latenssin lähetyksiin.

soittimen AS3-koodi on identtinen RTMP: n koodin kanssa lukuun ottamatta yhtä F-kirjainta, joka on lisätty koodiriville, jolla yhteys palvelimeen luodaan.

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

kuitenkin tässä on kuvakaappaus käyttäen RTMFP

kuvakaappaus RTMFP

Menetelmä 4 – RTMFP kääritty HTML5: een

tämä tapa on sama kuin menetelmä 2 paitsi että alustuksen aikana asetimme RTMFP-protokollan taustalla olevalle Salamalle (swf-objekti).

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

pelaajakuva:

RTMFP HTML5 - player

Method 5 – WebRTC

tässä tapauksessa emme käytä Flashia lainkaan, vaan videovirtaa soitetaan itse selaimen keinoin ilman kolmannen osapuolen liitännäisiä. Tämä menetelmä toimii sekä Chrome-että Firefox-Android-selaimissa, joissa Flash ei ole käytettävissä. WebRTC johtaa alimpaan latenssiin, alle 0,5 sekuntiin.

WebRTC Android Chrome ja Android Firefox

soittimen lähdekoodi on sama:

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

skripti tunnistaa WebRTC-tuen automaattisesti, ja JOS ti on tuettu, striimi toistetaan WebRTC: n avulla.

Playing WebRTC

Method 6 – Websockets

WebRTC ja Flash eivät kata kaikkia selaimia ja alustoja. Esimerkiksi iOS Safari-selain ei tue niitä.

Websockets - WebRTC ja Flash

voit toimittaa videovirran iOS safarille Websocket Transportin avulla (TCP-yhteys selaimen ja palvelimen välillä). Sitten, RTSP video stream kanavoidaan Websockets. Kun binääritiedot on vastaanotettu, ne voidaan purkaa JavaScriptin avulla ja renderöidä kankaalle HTML5-elementin.

näin Websocket-pelaaja tekee iOS Safari-selaimella. Soittimen koodi näyttää samalta:

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

Tämä muistuttaa hieman Flash-pohjaisia menetelmiä, kun SWF-elementti on HTML5: n alla. Täällä, meillä on JavaScript sovellus HTML5 joka hakee tietoja Websockets, dekoodaa ne ja tekee ne kankaalle useita säikeitä.

Tältä näyttää kankaalle tehty RTSP – virta iOS Safari-selaimessa:

RTSP-Kangas iOS Safarissa

metodi 7-HLS

kun RTSP muutetaan HLS: ksi, videovirta jaetaan segmentteihin, jotka ladataan iloisesti palvelimelta ja näytetään HLS-soittimessa.

Muunna RTSP HLS: ksi

HLS-soittimena käytämme videota.js. Soittimen lähdekoodi on ladattavissa täältä.

pelaaja näyttää seuraavanlaiselta:

HLS-pelaajavirta

menetelmä 8 – Android-sovellus, WebRTC

sovellus hakee virran palvelimelta WebRTC: n kautta. Tavoitteena palvelimen tässä on muuntaa RTSP WebRTC ja syöttää tulos mobiilisovellus.

Muunna RTSP WebRTC: ksi

soittimen Java-koodi Androidille on täällä ja näyttää tältä:

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

soittimen testimobiilisovelluksen voi asentaa Google Playsta, ja sovelluksen lähteet voi ladata täältä.

Tältä näyttää RTSP – Streamin toisto WebRTC: n kautta Asus Android-tabletilla:

RTSP-Streamin pelaaminen WebRTC: n kautta

metodi 9-iOS-sovellus, WebRTC

aivan kuten Android-veljensä, iOS-sovellus hakee videovirran palvelimelta WebRTC: n kautta.

iOS app WebRTC

soittimen Objective-C-koodi näyttää alla olevalla tavalla:

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;

voit ladata soittimen lähdekoodin iOS: lle täältä.

ja voit asentaa testisovelluksen, joka käyttää yllä olevia koodipalikoita App Storesta. Soittimen toiminta RTSP-virralla näyttää seuraavalta:

App Storen testisovellus

tulokset

pistetään tulokset yhteen yhteenvetotaulukkoon:

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 jos Flash Player on asennettu ja kun alhainen latenssi on ratkaiseva low
5 WebRTC Chrome, Firefox, Opera-selaimet mobiililaitteissa ja pöytätietokoneissa Androidissa ja kun reaaliaikainen toisto on ratkaisevaa. reaaliaikainen
6 Websocket selaimet, joilta puuttuu tuki Flashille ja WebRTC: lle, mutta tehtävä vaatii matalan tai keskitason latenssin. medium
7 HLS mikä tahansa selain niin kauan kuin viiveellä ei ole merkitystä. high
8 Android app, WebRTC natiivit Android-mobiilisovellukset, jotka vaativat reaaliaikaista latenssia. reaaliaikainen
9 iOS-sovellus, WebRTC natiivit iOS-mobiilisovellukset, jotka vaativat reaaliaikaista latenssia. reaaliaikainen

testauksessa käytettiin Web Call Server 5: tä, joka pystyy muuntamaan RTSP-virran ja lähettämään sen kaikkiin yhdeksään edellä kuvattuun suuntaan.

Web Call Server 5 – palvelin, jolla lähetetään RTSP-virta.

Flash Streaming – esimerkki swf-sovelluksesta, joka toistaa streameja RTMP: n ja RTMFP: n kautta. Vastaa menetelmiä 1 ja 3.
Source-Flex / AS3: n SWF-sovelluksen lähdekoodi.

Player – esimerkki web-sovellus, joka toistaa RTSP stream kautta RTMP, RTMFP, WebRTC, Websocket. Menetelmät 2,4,5,6.
lähde – verkkosoittimen lähdekoodi.

HLS player – esimerkki HLS: ää pelaavasta verkkosoittimesta. Vastaa menetelmää 7.
Source-HLS-pelaajan lähdekoodi.