Top Banner
WebRTC Stefan Otto Samling: UNINETT sanntid og eCampus Oslo: 2. - 4. Desember 2014
55

WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

May 14, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

WebRTC

Stefan OttoSamling: UNINETT sanntid og eCampus

Oslo: 2. - 4. Desember 2014

Page 2: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Agenda

● Lync utviklingsplattform● WebRTC● WebRTC: Work done by Uninett i år● Pause ● Nye ideer og framtidsplaner● Diskusjon / Feedback

Page 3: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Lync utviklingsplattform

● Hvorfor utvikle imot lync?– Integrasjonsløsninger

● Videorom løsninger● Sentralbord● Nettleser

– Utvide bruk av lync:● Interaktive e-learning● Videostrømning● Semiautomatisert videoopptak ● ...

Page 4: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Lync utviklingsplattform

Lync server

UCMA

Audio Video Presence ...

SIP

Lync desktopklient

SIP

UCWA

Lync mobile

UCWA

Lync web app

UCWA Media plugin

HTTP

My web app

UCWA

Audio Video Presence ...

Media plugin

UCWA JS OM

Page 5: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Plattformstøtte

● UCWA – Mobile plattformer (WindowsPhone, iOS, Android)– UCWA JS OM (jLync)

● Audio/video bare med plugin – Windows 7, 8(Desktop), 8.1 (Desktop), MacOS X > 10.6

– UCWA JS OM med WebRTC støtte● Plattform uavhengig

Page 6: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

WebRTC

● Kommunisere via web med noen eller noe i sanntid

● Transport av lyd, video og/eller data● Nettleser API● Kommunikasionsprotokoller ● Codecs

Page 7: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

The big picture

peer 2Lyd / bilde / data

Signalering(f.eks. SIP/xmpp/text)

peer 1

Page 8: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

BrowserWebRTC

stack

Web Application (Javascript/HTML/CSS)

WebRTC API

Networkprotocols

Standardisering

Browser

Signaling partner ( node.js / xmpp-server / SIP-server / ? )

Ikker definert!

Standardisering

BrowserWebRTC

stack

Web Application

Browser

Page 9: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

BrowserWebRTC

stack

Web Application (Javascript/HTML/CSS)

WebRTC API

Networkprotocols

Standardisering

Browser

Standardisering

BrowserWebRTC

stack

Web Application

Browser

SDP offer

SDP answer

Page 10: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Demo

● http://cjb.github.io/serverless-webrtc/serverless-webrtc.html

Page 11: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

WebRTC Nettleser API

● Tilgang til mic & cam● Etablere kommunikasjonskanaler● Sende og ta imot audio & video strømmer● Sende og ta imot vilkårlig data

Page 12: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Mic and cam

● navigator.getUserMedia()– > MediaStream:

MediaStream

MediaStreamTrackvideo

MediaStreamTrackAudio (stereo)

left

right

input output <video> /RTCPeerConnection

cam +mic

Page 13: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Use case – guitar tuner

● http://www.freetuner.co/

Page 14: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Use case - ascii-camera

● http://idevelop.ro/ascii-camera/

Page 15: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Use case – Gesture Control

● http://iambrandonn.github.io/WebcamSwiper

Page 16: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

WebRTC API

BrowserWebRTC

stack

Web Application (Javascript/HTML/CSS)

Browser BrowserWebRTC

stack

Web Application (Javascript/HTML/CSS)

Browser

Page 17: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

WebRTC API

● Web-utviklere må ikke bryr seg om:– Nettwerkprotokoller (ICE,STUN,TURN,UDP,TCP)– Kryptering (SRTP,DTLS)– Autmatisert jitter buffer– Codecs

● Audio (G.711, Opus, EAC, Comfort Noise, FEC)● Video ( VP8, H264 ) ?

Page 18: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Nettleser-støtte

http://iswebrtcready.com

Page 19: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Microsoft

http://status.modern.ie/webrtcobjectrtcapi

Page 20: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Microsoft

● 14.11.2014: Skype for web● Beta (fortsatt plugin basert)● Internet Explorer:

– Støtte for ortc (WebRTC1.1)– Video codec H.264

● Støtte i Lync?

Page 21: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Plattform-støtte

● Nettleser:– Desktop (Chrome, Firefox, Opera, (IE) eller plugin basert Safari)– Android (Chrome, Firefox)– FirefoxOS

● Native Applikasjoner– Desktop (WebRTC SDK fra google (Windows, MacOS, Linux),

OpenWebRTC(Ericsson), PhoneGap)– iOS (PhoneGap, OpenWebRTC(Ericsson), WebRTC SDK port til ObjectiveC)– Android (PhoneGap, webview, peerConnection.java,

OpenWebRTC(Ericsson), WebRTC SDK )– Embedded (PhoneGap, WebRTC SDK – må man portere selv!)

Page 22: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

WebRTC standardisering status

● Working draft● Video codec VP8 / H264 ferdig ?!● Video constraints nesten ferdig● Recording API in progress● ID / Auth in progress● WebRTC1.0● WebRTC1.1 (ortc)

– Kompatibilitet til 1.0?– VP9 / H265 ?

Page 23: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Browser A

Web Application

Browser B

Web Application Media / data

Not defined signaling mechanism (f.eks. SIP/xmpp/text)

Ideal verden

Page 24: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Browser A

Web Application

Browser B

Web Application

Not defined signaling mechanism (f.eks. SIP/xmpp/text)

NAT NAT

STUN STUNmedia / data

Bak NAT med STUN

Page 25: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Browser A

Web Application

Browser B

Web Application

Not defined signaling mechanism (f.eks. SIP/xmpp/text)

fire-wall

STUN STUN

media / dataTURN TURN

Bak brannmur med TURN

fire-wall

Page 26: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Work done by Uninett

● Utforske WebRTC– Følge opp standardiseringprosessen (ietf/w3c)– Utforske prosjekter som driver med WebRTC

● Bygge en eksempel-installasjon– Samle praktiske erfaringer med nettverk (TURN/STUN)– Utforske forskjellige signaleringsprotokoller (SIP/JS/XMPP)– Samle erfaringer med WebRTC nettleser API

● Bygge SIP-WebRTC gateway for audiosamtaler● Bygge «proof of concept» videokonferanse-løsning● Bygge «proof of concept» kommunikasjonsklient med feide

integrasjon

Page 27: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Webrtc – første skritt

Page 28: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Webrtc – første skritt

● http://webrtc.akademia.no:8080● Basert på easyRTC → http://easyrtc.com/

– Node.js for signallering– Enkelt bruk av WebRTC API

● STUN / TURN server

Page 29: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

WebRTC kommunikasjonsklient med feide

● Serverside: – nova platform– debian wheezy– node.js (user profiles / communication with UWAP) – signalling xmpp (prosody)– rfc5766 TURN server

● Clientside– UWAP authentication / groups / searching– p2p audio and video WebRTC– file sender p2p WebRTC– chat (xmpp based)– Buddylist

Page 30: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

meet.akademia.no

Videobridge(jitsi)

Webserver(nginx)

TURN/STUN(rfc5766)

Webclient (behind firewall)

webclient

meet.akademia.no

Xmpp(prosody)

Demo: http://meet.akademia.no/stefano

Page 31: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Klassisk web-konferanse

server

● 1 opp og 1 ned-strømm for hver klient

● For video med 1 Mbit/s: 1Mbit/s for her klient opp og 1 mbit/s ned

Page 32: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Selective Forwarding Unit (SFU)

server

● 1 opp og n-1 ned-strømm for hver klient

● For video med 1 Mbit/s: 1Mbit/s for her klient opp og 4 mbit/s ned

Klassisk web-konferanse

Page 33: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Flerpart p2p

N=5:● (n-1) opp og (n-1) ned for hver klient● 1 Mbit/s per strøm: 4 Mbit/s for hver

klient opp og ned ● For vanlig DSL nett er det allerede for

mye● Appear.in

Page 34: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

p2p kombinert med sentral konferanse server

conference server

● Low-bandwidth klienter kan dynamisk bytte til en sentral servertjeneste

Page 35: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Performance jitsi-videobridge

● 1 normal server med standard hardware– Omtrent 1000 strømmer samtidig– 550 mbit/s– 20% CPU ytelse

● Tilsvarer:– Omtrent 30 deltaker Konferanse eller– 50 samtidige konferanser med 5 deltaker eller– 250 samtidige 1 til 1 samtaler

● Renater (frankrike): 11.000 konferanser med ca. 27.000 deltakere i løpet av november 2014

● Framtid: skaleringløsning

Page 36: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Jitsi båndbrede CPU/ antall strømmer

Page 37: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Lync-WebRTC integration with a WebRTC cloud service

Lync

(jLync/UCJA)Lync UCWA

WebRTCClient

Lync UCMA

Lyncclient

WebRTCClient

WebRTCA/V cloud

service

Uninett SanntidSBC

PSTN

Page 38: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

WebRTC cloud service

WebRTC cloud service

MCUControllerMCUController

MCUController

API cloud controllerClient

Client

Page 39: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

WebRTC client in Lync meeting

Lync meeting

Lync-ClientWebRTC-Client

(jLync/UCJA)Lync UCWA

Lync UCMA

● jLync / UCJA● Javascript Object model● Audio / video / presence / contacts / auth /

groups / IM● UCWA

● Available with Lync 2013● Unified Communication Web API● Http based API● So far: presence / contacts / Auth

Groups / IM

Lync-Client

Page 40: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Lync Client in WebRTC meeting

WebRTC service

(jLync/UCJA)Lync UCWA

Lync UCMA

Lync

WebRTCClient

LyncClient

meeting

4

1

2

3

1. create meeting2./3. send message with URL to Lync contact4. Lync opens URL in WebRTC compatible Webbrowser

Page 41: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

WebRTC - SIP

● WebRTC-SIP gateway:– Kamailio – Asterisk– Webrtc2sip (doubango telecom)– Freeswitch ...

● Client-side:– SIPml5– Jssip– Sip.js

WebRTC-SIP gateway

SIPWebRTC-Client

SIPWebRTC-Client

PSTN / SIPworld

Page 42: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Klassisk audio konferanse med WebRTC-gw

WebRTC- gateway

SIPWebRTC-Client

SIPWebRTC-Client

telephone conferenceserver

SIPClient PSTN

telephone

Page 43: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

WebRTC konferanse

SIP-WebRTCgateway

SIPWebRTC-Client

SIPWebRTC-Client

WebRTCconference server

SIPClient

Page 44: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Use case – TogetherJS

● Mozilla● collaborative browsing● https://togetherjs.com/examples/drawing/

Page 45: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Nubomedia.eu

● EU commission fundet (4 M€)● Basert på Kurento.org

– Gstreamer for video en/decoding

● PaaS: interactive social media tjenester i skyen● Tidsplan: 32 måneder (Feb 2014 – Sept 2016)

Page 46: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Use case – p2p networks

● http://webtorrent.io - Torrent client for the browser / node ( DHT )

● http://peersm.com/peersm TOR-node combined with a torrent-client ( DHT , WebRTC based network )

● Video streaming● Create your own network protocol / topology● Use of DHT for network topology / routing can be →

used for signal-infrastructure or for replicated/distributed DBs

Page 47: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Use case – PeerCDNWebserver

Client1 Client1

Client1

Client1

Client1Client1

Client1

Client1Client1

PeerCDN.com acquired by yahoo

Page 48: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Collaborative browsing

● Mozilla● collaborative browsing● https://togetherjs.com

Page 49: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Use case – see what I see!

● Screen sharing (VP9 text rendering)● Service● Helpdesk● http://www.bemyeyes.org● Google glass!

Page 50: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Use case – double robotics

http://www.doublerobotics.com/

Page 51: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Use cases – Cardboard

● VR for your Android phone● https://cardboard.withgoogle.com/● Add WebRTC to see what your robot sees in 3D

Page 52: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Use case – FirefoxOS loop

Page 53: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Use case – rapt.fm

● Live rap battles

Page 54: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Use case – Amazon mayday

● Amazon Kindle Fire● Connect to a Tech Advisor with the Mayday

Button● 24/7/365● “Amazon's Tech Advisors don't see you, just

your screen.”

Page 55: WebRTC - Uninett · Work done by Uninett Utforske WebRTC – Følge opp standardiseringprosessen (ietf/w3c) – Utforske prosjekter som driver med WebRTC Bygge en eksempel-installasjon

Resumé

● Bedre innsikt i tekniske detaljer om WebRTC og Lync i denne sammenheng

● WebRTC er bare en teknologi – ikke en løsning● Det er ikke bare Videokonferanse● Hva Uninett Sanntid driver med● Sensibilisere om problematikken om

federering / globalere fokus