hacking with html5 video, rtc and shared web workers

125
The Web Can Do That Better! Hacking with HTML5 Video, RTC and Shared Web Workers Cristiano Betta CodeMotion Rome, 2014

Upload: cristiano-betta

Post on 17-May-2015

454 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Hacking with html5 video, rtc and shared web workers

The Web Can Do That Better! Hacking with HTML5 Video, RTC

and Shared Web Workers

Cristiano Betta CodeMotion Rome, 2014

Page 2: Hacking with html5 video, rtc and shared web workers

Cristiano Betta CodeMotion Rome, 2014

Cristiano Betta @cbetta

Page 3: Hacking with html5 video, rtc and shared web workers

Cristiano Betta CodeMotion Rome, 2014

Cristiano Betta @cbetta Developer Advocate @ PayPal

Page 4: Hacking with html5 video, rtc and shared web workers

Cristiano Betta CodeMotion Rome, 2014

Cristiano Betta @cbetta Developer Advocate @ PayPal

Event organiser

Page 5: Hacking with html5 video, rtc and shared web workers

Cristiano Betta CodeMotion Rome, 2014

Cristiano Betta @cbetta Developer Advocate @ PayPal

Event organiser

Serial entrepreneur

Page 6: Hacking with html5 video, rtc and shared web workers

Cristiano Betta CodeMotion Rome, 2014

Cristiano Betta @cbetta Developer Advocate @ PayPal

Event organiser

Serial entrepreneur

50% Italian

Page 7: Hacking with html5 video, rtc and shared web workers

Cristiano Betta CodeMotion Rome, 2014

Cristiano Betta @cbetta Developer Advocate @ PayPal

Event organiser

Serial entrepreneur

50% Italian

100% Ferrari Lover

Page 8: Hacking with html5 video, rtc and shared web workers

Cristiano Betta CodeMotion Rome, 2014

Cristiano Betta @cbetta Developer Advocate @ PayPal

Event organiser

Serial entrepreneur

50% Italian

100% Ferrari Lover

0% Ferrari owner

Page 9: Hacking with html5 video, rtc and shared web workers
Page 10: Hacking with html5 video, rtc and shared web workers
Page 11: Hacking with html5 video, rtc and shared web workers
Page 12: Hacking with html5 video, rtc and shared web workers
Page 13: Hacking with html5 video, rtc and shared web workers
Page 14: Hacking with html5 video, rtc and shared web workers

15s

Page 15: Hacking with html5 video, rtc and shared web workers
Page 16: Hacking with html5 video, rtc and shared web workers
Page 17: Hacking with html5 video, rtc and shared web workers
Page 18: Hacking with html5 video, rtc and shared web workers
Page 19: Hacking with html5 video, rtc and shared web workers
Page 20: Hacking with html5 video, rtc and shared web workers

Complicated setup

Page 21: Hacking with html5 video, rtc and shared web workers

Complicated setup

Network sensitive

Page 22: Hacking with html5 video, rtc and shared web workers

Complicated setup

Network sensitive

Data lock-in

Page 23: Hacking with html5 video, rtc and shared web workers
Page 24: Hacking with html5 video, rtc and shared web workers
Page 25: Hacking with html5 video, rtc and shared web workers
Page 26: Hacking with html5 video, rtc and shared web workers
Page 27: Hacking with html5 video, rtc and shared web workers
Page 28: Hacking with html5 video, rtc and shared web workers

28s

Page 29: Hacking with html5 video, rtc and shared web workers

We Can Do This Better

Page 30: Hacking with html5 video, rtc and shared web workers

The Web Can Do This Better

Page 31: Hacking with html5 video, rtc and shared web workers
Page 32: Hacking with html5 video, rtc and shared web workers
Page 33: Hacking with html5 video, rtc and shared web workers
Page 34: Hacking with html5 video, rtc and shared web workers
Page 35: Hacking with html5 video, rtc and shared web workers
Page 36: Hacking with html5 video, rtc and shared web workers
Page 37: Hacking with html5 video, rtc and shared web workers
Page 38: Hacking with html5 video, rtc and shared web workers

RTCPeerConnection

Page 39: Hacking with html5 video, rtc and shared web workers

RTCPeerConnectionPeer-to-Peer Data API

Page 40: Hacking with html5 video, rtc and shared web workers

RTCPeerConnectionPeer-to-Peer Data APIPeer-to-Peer DTMF

Page 41: Hacking with html5 video, rtc and shared web workers

Peer-to-Server?

Page 42: Hacking with html5 video, rtc and shared web workers

WebSockets?

Page 43: Hacking with html5 video, rtc and shared web workers

WebSockets?

Page 44: Hacking with html5 video, rtc and shared web workers
Page 45: Hacking with html5 video, rtc and shared web workers
Page 46: Hacking with html5 video, rtc and shared web workers
Page 47: Hacking with html5 video, rtc and shared web workers
Page 48: Hacking with html5 video, rtc and shared web workers
Page 49: Hacking with html5 video, rtc and shared web workers

webrtc-experiment.com

Page 50: Hacking with html5 video, rtc and shared web workers

RecordRTC.js github.com/muaz-khan/WebRTC-Experiment/

tree/master/RecordRTC

Page 51: Hacking with html5 video, rtc and shared web workers

RecordRTC is a server-less JavaScript library can be used to record WebRTC audio/

video media streams. It supports cross-browser audio/video recording

Page 52: Hacking with html5 video, rtc and shared web workers

stream

Page 53: Hacking with html5 video, rtc and shared web workers

stream

Page 54: Hacking with html5 video, rtc and shared web workers

stream

<canvas>

Page 55: Hacking with html5 video, rtc and shared web workers

stream

<canvas> <audio>

Page 56: Hacking with html5 video, rtc and shared web workers

stream

<canvas> <audio>

video blob

Page 57: Hacking with html5 video, rtc and shared web workers

stream

<canvas> <audio>

video blob audio blob

Page 58: Hacking with html5 video, rtc and shared web workers
Page 59: Hacking with html5 video, rtc and shared web workers

video blob audio blob

Page 60: Hacking with html5 video, rtc and shared web workers

gif blob

Page 61: Hacking with html5 video, rtc and shared web workers
Page 62: Hacking with html5 video, rtc and shared web workers
Page 63: Hacking with html5 video, rtc and shared web workers
Page 64: Hacking with html5 video, rtc and shared web workers
Page 65: Hacking with html5 video, rtc and shared web workers
Page 66: Hacking with html5 video, rtc and shared web workers

+

Page 67: Hacking with html5 video, rtc and shared web workers

+

Page 68: Hacking with html5 video, rtc and shared web workers
Page 69: Hacking with html5 video, rtc and shared web workers

13mb for 30s!

Page 70: Hacking with html5 video, rtc and shared web workers

30-90 seconds to upload 30 seconds of video

Page 71: Hacking with html5 video, rtc and shared web workers
Page 72: Hacking with html5 video, rtc and shared web workers
Page 73: Hacking with html5 video, rtc and shared web workers

bgrins.github.io/videoconverter.js !

webrtc-experiment.com/ffmpeg/merging-wav-and-webm-into-mp4.html

Page 74: Hacking with html5 video, rtc and shared web workers

Background Uploads

Page 75: Hacking with html5 video, rtc and shared web workers
Page 76: Hacking with html5 video, rtc and shared web workers

HTML Web Workers

Page 77: Hacking with html5 video, rtc and shared web workers

Web Workers

Page 78: Hacking with html5 video, rtc and shared web workers

Shared Web Workers

Page 79: Hacking with html5 video, rtc and shared web workers

Web Workers Shared Web Workers

Page 80: Hacking with html5 video, rtc and shared web workers

Web Workers Shared Web Workers

Separate Threads

Page 81: Hacking with html5 video, rtc and shared web workers

Web Workers Shared Web Workers

Separate Threads

Alive when referenced

Page 82: Hacking with html5 video, rtc and shared web workers

Web Workers Shared Web Workers

Separate Threads

Alive when referenced

Reference lost on navigation

Page 83: Hacking with html5 video, rtc and shared web workers

Web Workers Shared Web Workers

Separate Threads

Alive when referenced

Reference lost on navigation

Separate references

Page 84: Hacking with html5 video, rtc and shared web workers

Web Workers Shared Web Workers

Separate Threads

Alive when referenced

Reference lost on navigation

Separate references Shared references

Page 85: Hacking with html5 video, rtc and shared web workers

Web Workers

Page 86: Hacking with html5 video, rtc and shared web workers
Page 87: Hacking with html5 video, rtc and shared web workers
Page 88: Hacking with html5 video, rtc and shared web workers
Page 89: Hacking with html5 video, rtc and shared web workers
Page 90: Hacking with html5 video, rtc and shared web workers
Page 91: Hacking with html5 video, rtc and shared web workers

Shared Web Workers

Page 92: Hacking with html5 video, rtc and shared web workers
Page 93: Hacking with html5 video, rtc and shared web workers
Page 94: Hacking with html5 video, rtc and shared web workers
Page 95: Hacking with html5 video, rtc and shared web workers
Page 96: Hacking with html5 video, rtc and shared web workers
Page 97: Hacking with html5 video, rtc and shared web workers
Page 98: Hacking with html5 video, rtc and shared web workers
Page 99: Hacking with html5 video, rtc and shared web workers

/recorder

Page 100: Hacking with html5 video, rtc and shared web workers

background-upload.js

Page 101: Hacking with html5 video, rtc and shared web workers

background-upload.js

Page 102: Hacking with html5 video, rtc and shared web workers

github.com/broofa/node-uuid

stackoverflow.com/questions/13870853

Page 103: Hacking with html5 video, rtc and shared web workers

/server

Page 104: Hacking with html5 video, rtc and shared web workers
Page 105: Hacking with html5 video, rtc and shared web workers
Page 106: Hacking with html5 video, rtc and shared web workers

Was it worth it?

Page 107: Hacking with html5 video, rtc and shared web workers
Page 108: Hacking with html5 video, rtc and shared web workers
Page 109: Hacking with html5 video, rtc and shared web workers

Chrome Only (for now)

Page 110: Hacking with html5 video, rtc and shared web workers

Client side conversion

Page 111: Hacking with html5 video, rtc and shared web workers

Firefox Nightly now has MediaStreamRecorder API

Page 112: Hacking with html5 video, rtc and shared web workers

www.w3.org/TR/mediastream-recording

Page 113: Hacking with html5 video, rtc and shared web workers

Streaming vs Uploading

Page 114: Hacking with html5 video, rtc and shared web workers

Real background uploads

Page 115: Hacking with html5 video, rtc and shared web workers

It’s live!

Page 116: Hacking with html5 video, rtc and shared web workers
Page 117: Hacking with html5 video, rtc and shared web workers
Page 118: Hacking with html5 video, rtc and shared web workers

battlehack.orgIstanbul, Berlin, Warsaw,

London, Moscow

Page 119: Hacking with html5 video, rtc and shared web workers
Page 120: Hacking with html5 video, rtc and shared web workers
Page 121: Hacking with html5 video, rtc and shared web workers

@cbetta slideshare.net/paypal

Page 122: Hacking with html5 video, rtc and shared web workers
Page 123: Hacking with html5 video, rtc and shared web workers
Page 124: Hacking with html5 video, rtc and shared web workers
Page 125: Hacking with html5 video, rtc and shared web workers