webrtc isn't just for (video) conference calls · 2020. 2. 18. · how is that an api? • web...
TRANSCRIPT
![Page 1: WebRTC isn't just for (video) conference calls · 2020. 2. 18. · How is that an API? • Web page creates data channel • Label contains a URI • Proxy interprets the URI locally](https://reader033.vdocument.in/reader033/viewer/2022060922/60adeea468f36c121c22d455/html5/thumbnails/1.jpg)
Tim Panton CTO |pipe|
@steely_glint
WebRTC isn't just for (video) conference calls
![Page 2: WebRTC isn't just for (video) conference calls · 2020. 2. 18. · How is that an API? • Web page creates data channel • Label contains a URI • Proxy interprets the URI locally](https://reader033.vdocument.in/reader033/viewer/2022060922/60adeea468f36c121c22d455/html5/thumbnails/2.jpg)
WebRTC
• Great for conf calls
• But also other things
![Page 3: WebRTC isn't just for (video) conference calls · 2020. 2. 18. · How is that an API? • Web page creates data channel • Label contains a URI • Proxy interprets the URI locally](https://reader033.vdocument.in/reader033/viewer/2022060922/60adeea468f36c121c22d455/html5/thumbnails/3.jpg)
Meetecho
Zero install ( for users)Semantics of IETF meetingComplex media priorities
![Page 4: WebRTC isn't just for (video) conference calls · 2020. 2. 18. · How is that an API? • Web page creates data channel • Label contains a URI • Proxy interprets the URI locally](https://reader033.vdocument.in/reader033/viewer/2022060922/60adeea468f36c121c22d455/html5/thumbnails/4.jpg)
MikuPrivacy
Nat traversalBandwidth costs
![Page 5: WebRTC isn't just for (video) conference calls · 2020. 2. 18. · How is that an API? • Web page creates data channel • Label contains a URI • Proxy interprets the URI locally](https://reader033.vdocument.in/reader033/viewer/2022060922/60adeea468f36c121c22d455/html5/thumbnails/5.jpg)
Podcast Recorder
github:Pipe/PodCall
Audio onlyHigh qualityMobile first Https://distributedfutu.re
![Page 6: WebRTC isn't just for (video) conference calls · 2020. 2. 18. · How is that an API? • Web page creates data channel • Label contains a URI • Proxy interprets the URI locally](https://reader033.vdocument.in/reader033/viewer/2022060922/60adeea468f36c121c22d455/html5/thumbnails/6.jpg)
Stadia
Low latencyHigh bitrate
Playable gamesIn Chrome
On an old macbook
25Mbit/s
60fps
1080p
![Page 8: WebRTC isn't just for (video) conference calls · 2020. 2. 18. · How is that an API? • Web page creates data channel • Label contains a URI • Proxy interprets the URI locally](https://reader033.vdocument.in/reader033/viewer/2022060922/60adeea468f36c121c22d455/html5/thumbnails/8.jpg)
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 · 2020. 2. 18. · How is that an API? • Web page creates data channel • Label contains a URI • Proxy interprets the URI locally](https://reader033.vdocument.in/reader033/viewer/2022060922/60adeea468f36c121c22d455/html5/thumbnails/9.jpg)
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 · 2020. 2. 18. · How is that an API? • Web page creates data channel • Label contains a URI • Proxy interprets the URI locally](https://reader033.vdocument.in/reader033/viewer/2022060922/60adeea468f36c121c22d455/html5/thumbnails/10.jpg)
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 · 2020. 2. 18. · How is that an API? • Web page creates data channel • Label contains a URI • Proxy interprets the URI locally](https://reader033.vdocument.in/reader033/viewer/2022060922/60adeea468f36c121c22d455/html5/thumbnails/11.jpg)
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 · 2020. 2. 18. · How is that an API? • Web page creates data channel • Label contains a URI • Proxy interprets the URI locally](https://reader033.vdocument.in/reader033/viewer/2022060922/60adeea468f36c121c22d455/html5/thumbnails/12.jpg)
Obvious one
• RTP (RTSP) -> DTLS SRTP - video/audio. Etc.
• (Only complexity is encoder control)
![Page 13: WebRTC isn't just for (video) conference calls · 2020. 2. 18. · How is that an API? • Web page creates data channel • Label contains a URI • Proxy interprets the URI locally](https://reader033.vdocument.in/reader033/viewer/2022060922/60adeea468f36c121c22d455/html5/thumbnails/13.jpg)
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 · 2020. 2. 18. · How is that an API? • Web page creates data channel • Label contains a URI • Proxy interprets the URI locally](https://reader033.vdocument.in/reader033/viewer/2022060922/60adeea468f36c121c22d455/html5/thumbnails/14.jpg)
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 · 2020. 2. 18. · How is that an API? • Web page creates data channel • Label contains a URI • Proxy interprets the URI locally](https://reader033.vdocument.in/reader033/viewer/2022060922/60adeea468f36c121c22d455/html5/thumbnails/15.jpg)
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 · 2020. 2. 18. · How is that an API? • Web page creates data channel • Label contains a URI • Proxy interprets the URI locally](https://reader033.vdocument.in/reader033/viewer/2022060922/60adeea468f36c121c22d455/html5/thumbnails/16.jpg)
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 18: WebRTC isn't just for (video) conference calls · 2020. 2. 18. · How is that an API? • Web page creates data channel • Label contains a URI • Proxy interprets the URI locally](https://reader033.vdocument.in/reader033/viewer/2022060922/60adeea468f36c121c22d455/html5/thumbnails/18.jpg)
–Albert Einstein
“ ... as simple as possible, but no simpler.”