WebRTC
Stefan OttoSamling: UNINETT sanntid og eCampus
Oslo: 2. - 4. Desember 2014
Agenda
● Lync utviklingsplattform● WebRTC● WebRTC: Work done by Uninett i år● Pause ● Nye ideer og framtidsplaner● Diskusjon / Feedback
Lync utviklingsplattform
● Hvorfor utvikle imot lync?– Integrasjonsløsninger
● Videorom løsninger● Sentralbord● Nettleser
– Utvide bruk av lync:● Interaktive e-learning● Videostrømning● Semiautomatisert videoopptak ● ...
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
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
WebRTC
● Kommunisere via web med noen eller noe i sanntid
● Transport av lyd, video og/eller data● Nettleser API● Kommunikasionsprotokoller ● Codecs
The big picture
peer 2Lyd / bilde / data
Signalering(f.eks. SIP/xmpp/text)
peer 1
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
BrowserWebRTC
stack
Web Application (Javascript/HTML/CSS)
WebRTC API
Networkprotocols
Standardisering
Browser
Standardisering
BrowserWebRTC
stack
Web Application
Browser
SDP offer
SDP answer
Demo
● http://cjb.github.io/serverless-webrtc/serverless-webrtc.html
WebRTC Nettleser API
● Tilgang til mic & cam● Etablere kommunikasjonskanaler● Sende og ta imot audio & video strømmer● Sende og ta imot vilkårlig data
Mic and cam
● navigator.getUserMedia()– > MediaStream:
MediaStream
MediaStreamTrackvideo
MediaStreamTrackAudio (stereo)
left
right
input output <video> /RTCPeerConnection
cam +mic
Use case – Gesture Control
● http://iambrandonn.github.io/WebcamSwiper
WebRTC API
BrowserWebRTC
stack
Web Application (Javascript/HTML/CSS)
Browser BrowserWebRTC
stack
Web Application (Javascript/HTML/CSS)
Browser
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 ) ?
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?
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!)
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 ?
Browser A
Web Application
Browser B
Web Application Media / data
Not defined signaling mechanism (f.eks. SIP/xmpp/text)
Ideal verden
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
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
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
Webrtc – første skritt
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
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
●
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
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
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
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
p2p kombinert med sentral konferanse server
conference server
● Low-bandwidth klienter kan dynamisk bytte til en sentral servertjeneste
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
Jitsi båndbrede CPU/ antall strømmer
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
WebRTC cloud service
WebRTC cloud service
MCUControllerMCUController
MCUController
API cloud controllerClient
Client
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
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
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
Klassisk audio konferanse med WebRTC-gw
WebRTC- gateway
SIPWebRTC-Client
SIPWebRTC-Client
telephone conferenceserver
SIPClient PSTN
telephone
WebRTC konferanse
SIP-WebRTCgateway
SIPWebRTC-Client
SIPWebRTC-Client
WebRTCconference server
SIPClient
Use case – TogetherJS
● Mozilla● collaborative browsing● https://togetherjs.com/examples/drawing/
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)
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
Use case – PeerCDNWebserver
Client1 Client1
Client1
Client1
Client1Client1
Client1
Client1Client1
PeerCDN.com acquired by yahoo
Collaborative browsing
● Mozilla● collaborative browsing● https://togetherjs.com
Use case – see what I see!
● Screen sharing (VP9 text rendering)● Service● Helpdesk● http://www.bemyeyes.org● Google glass!
Use cases – Cardboard
● VR for your Android phone● https://cardboard.withgoogle.com/● Add WebRTC to see what your robot sees in 3D
Use case – FirefoxOS loop
Use case – rapt.fm
● Live rap battles
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.”
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