webrtc isn't just for (video) conference calls · • w3c webrtc api (sdp) isn’t ideal for...

18
Tim Panton CTO |pipe| @steely_glint WebRTC isn't just for (video) conference calls

Upload: others

Post on 27-May-2020

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: WebRTC isn't just for (video) conference calls · • W3C webRTC API (SDP) isn’t ideal for all use cases • Not all endpoints run libwebrtc. Available rtcweb impl • Pion (GO)

Tim Panton CTO |pipe|

@steely_glint

WebRTC isn't just for (video) conference calls

Page 2: WebRTC isn't just for (video) conference calls · • W3C webRTC API (SDP) isn’t ideal for all use cases • Not all endpoints run libwebrtc. Available rtcweb impl • Pion (GO)

WebRTC

• Great for conf calls

• But also other things

Page 3: WebRTC isn't just for (video) conference calls · • W3C webRTC API (SDP) isn’t ideal for all use cases • Not all endpoints run libwebrtc. Available rtcweb impl • Pion (GO)

Meetecho

Zero install ( for users)Semantics of IETF meetingComplex media priorities

Page 4: WebRTC isn't just for (video) conference calls · • W3C webRTC API (SDP) isn’t ideal for all use cases • Not all endpoints run libwebrtc. Available rtcweb impl • Pion (GO)

MikuPrivacy

Nat traversalBandwidth costs

Page 5: WebRTC isn't just for (video) conference calls · • W3C webRTC API (SDP) isn’t ideal for all use cases • Not all endpoints run libwebrtc. Available rtcweb impl • Pion (GO)

Podcast Recorder

github:Pipe/PodCall

Audio onlyHigh qualityMobile first Https://distributedfutu.re

Page 6: WebRTC isn't just for (video) conference calls · • W3C webRTC API (SDP) isn’t ideal for all use cases • Not all endpoints run libwebrtc. Available rtcweb impl • Pion (GO)

Stadia

Low latencyHigh bitrate

Playable gamesIn Chrome

On an old macbook

25Mbit/s

60fps

1080p

Page 7: WebRTC isn't just for (video) conference calls · • W3C webRTC API (SDP) isn’t ideal for all use cases • Not all endpoints run libwebrtc. Available rtcweb impl • Pion (GO)

Remote accessNat traversalZero install

Security

Demo

Page 8: WebRTC isn't just for (video) conference calls · • W3C webRTC API (SDP) isn’t ideal for all use cases • Not all endpoints run libwebrtc. Available rtcweb impl • Pion (GO)

What have we learned?

• Not just video conferences

• Not all endpoints are laptop browsers

• W3C webRTC API (SDP) isn’t ideal for all use cases

• Not all endpoints run libwebrtc

Page 9: WebRTC isn't just for (video) conference calls · • W3C webRTC API (SDP) isn’t ideal for all use cases • Not all endpoints run libwebrtc. Available rtcweb impl • Pion (GO)

Available rtcweb impl• Pion (GO)

• |pipe| java

• Meetecho C

• Aiortc - python

• Mediasoup javascript

• Frozen mountain C#

• Gstreamer

Interop Hackathon at IETF 107

Benefits of open standards

Page 10: WebRTC isn't just for (video) conference calls · • W3C webRTC API (SDP) isn’t ideal for all use cases • Not all endpoints run libwebrtc. Available rtcweb impl • Pion (GO)

What is a good API?

• I don’t know.

• W3C doesn’t know x 2

• Google doesn’t know

• So... Let’s try something else....

Page 11: WebRTC isn't just for (video) conference calls · • W3C webRTC API (SDP) isn’t ideal for all use cases • Not all endpoints run libwebrtc. Available rtcweb impl • Pion (GO)

RTCweb as a Proxy

• Existing services

• Need webRTC magic dust (NAT traversal, zero install etc)

• |pipe| agent as a configurable proxy

IoT Device With local Services

RTCweb Agent

Internet NAT

Encryption

WebRTC Browser

Page 12: WebRTC isn't just for (video) conference calls · • W3C webRTC API (SDP) isn’t ideal for all use cases • Not all endpoints run libwebrtc. Available rtcweb impl • Pion (GO)

Obvious one

• RTP (RTSP) -> DTLS SRTP - video/audio. Etc.

• (Only complexity is encoder control)

Page 13: WebRTC isn't just for (video) conference calls · • W3C webRTC API (SDP) isn’t ideal for all use cases • Not all endpoints run libwebrtc. Available rtcweb impl • Pion (GO)

Easy one

• Web sockets

• Data channel API in browser looks like websocket so, just return one and duct typing wins ;-)

• Proxy data over named rtcweb datachannel to agent, which opens actual local web socket.

Page 14: WebRTC isn't just for (video) conference calls · • W3C webRTC API (SDP) isn’t ideal for all use cases • Not all endpoints run libwebrtc. Available rtcweb impl • Pion (GO)

The Magic one

• Http

• Abuse service worker

• Add iframe (because you cant have a peer connection in a service worker)

• Magic happens

Page 15: WebRTC isn't just for (video) conference calls · • W3C webRTC API (SDP) isn’t ideal for all use cases • Not all endpoints run libwebrtc. Available rtcweb impl • Pion (GO)

What this lets us do:• Droid pi zero

• Runs a local web service providing interface

• Websocket for motor control

• Gstreamer RTP for video

• Proxy http+ws+RTP to browser

• Drive the droid

Page 16: WebRTC isn't just for (video) conference calls · • W3C webRTC API (SDP) isn’t ideal for all use cases • Not all endpoints run libwebrtc. Available rtcweb impl • Pion (GO)

How is that an API?• Web page creates data channel

• Label contains a URI

• Proxy interprets the URI locally (eg ws://localhost/motor)

• Proxy verifies URI is on the permitted list

• Proxies the websocket traffic (and semantics) over the DC

• Web page hardly notices

Page 17: WebRTC isn't just for (video) conference calls · • W3C webRTC API (SDP) isn’t ideal for all use cases • Not all endpoints run libwebrtc. Available rtcweb impl • Pion (GO)

Worth Standardising?

• Email me [email protected]

• Tweet me steely_glint

• Catch me in person....

Page 18: WebRTC isn't just for (video) conference calls · • W3C webRTC API (SDP) isn’t ideal for all use cases • Not all endpoints run libwebrtc. Available rtcweb impl • Pion (GO)

–Albert Einstein

“ ... as simple as possible, but no simpler.”