HTML5, Flash, and the Battle For Faster Cat Videos

69
HTML5, Flash and the Battle for Faster Cat Videos By YouTube's Greg Schechter and Phil Harnish

description

HTML5; it's new, it's awesome, and it's powerful, but can it take down the champ of video distribution, Flash. Which technology's got the ability to bring cat video to the next level? This talk covers the many challenges of both HTML5 and YouTube adapting to change video distribution on the web.

Transcript of HTML5, Flash, and the Battle For Faster Cat Videos

Page 1: HTML5, Flash, and the Battle For Faster Cat Videos

HTML5, Flash and the Battle for Faster Cat VideosBy YouTube's Greg Schechter and Phil Harnish

Page 2: HTML5, Flash, and the Battle For Faster Cat Videos

Greg SchechterThe Web Warrior

[email protected] [email protected]

Phil HarnishSr. Play Button Eng

Page 3: HTML5, Flash, and the Battle For Faster Cat Videos
Page 4: HTML5, Flash, and the Battle For Faster Cat Videos

HTML + JS + CSS + Awesomeness

Page 5: HTML5, Flash, and the Battle For Faster Cat Videos

Offline File Access Multimedia Performance Presentation Graphics Storage

HTML5

Page 6: HTML5, Flash, and the Battle For Faster Cat Videos

Offline File Access Multimedia Performance Presentation Graphics Storage

HTML5

Page 7: HTML5, Flash, and the Battle For Faster Cat Videos

Translation

Page 9: HTML5, Flash, and the Battle For Faster Cat Videos

99% connected desktop penetration?http://www.adobe.com/products/player_census/flashplayer/

Page 10: HTML5, Flash, and the Battle For Faster Cat Videos

Why HTML5?

Page 11: HTML5, Flash, and the Battle For Faster Cat Videos

Features Accessibility Device-abilitySecurity Embeds API

HTML5 vs Flash

Page 12: HTML5, Flash, and the Battle For Faster Cat Videos

Round 1: Features

http://www.flickr.com/photos/zipckr/4624150058/

Page 13: HTML5, Flash, and the Battle For Faster Cat Videos

Why Flash?Features missing in HTML5

● Content protection

Page 14: HTML5, Flash, and the Battle For Faster Cat Videos

Why Flash?Features missing in HTML5

● Content protection○ RTMPE protocol / Flash Access

Page 15: HTML5, Flash, and the Battle For Faster Cat Videos

Why Flash?Features missing in HTML5

● Content protection○ RTMPE protocol / Flash Access

● Camera & Microphone Access

Page 16: HTML5, Flash, and the Battle For Faster Cat Videos

Why Flash?Features missing in HTML5

● Content protection○ RTMPE protocol / Flash Access

● Camera & Microphone Access● Fullscreen video

Page 17: HTML5, Flash, and the Battle For Faster Cat Videos

Why Flash?Features missing in HTML5

● Content protection○ RTMPE protocol / Flash Access

● Camera & Microphone Access● Fullscreen video

○ Hardware accelerated HD cat videos!○ **WebKit has a JavaScript API

Page 18: HTML5, Flash, and the Battle For Faster Cat Videos

Why Flash?WebKit Fullscreen API

var elem = document.getElementById("my-element");elem.onwebkitfullscreenchange = function() {console.log ("We went fullscreen!");};elem.webkitRequestFullScreen();

Page 19: HTML5, Flash, and the Battle For Faster Cat Videos

Why Flash?Features missing in HTML5

● Content protection○ RTMPE protocol / Flash Access

● Camera & Microphone Access● Fullscreen video

○ HD, hardware accelerated cat videos!○ **WebKit has a JavaScript API

Page 20: HTML5, Flash, and the Battle For Faster Cat Videos

Why Flash?Features missing in HTML5

● Content protection○ RTMPE protocol / Flash Access

● Camera & Microphone Access● Fullscreen video

○ HD, hardware accelerated cat videos!○ **WebKit has a JavaScript API

● Consistent format support

Page 21: HTML5, Flash, and the Battle For Faster Cat Videos

Why Flash?Features missing in HTML5

● Content protection○ RTMPE protocol / Flash Access

● Camera & Microphone Access● Fullscreen video

○ HD, hardware accelerated cat videos!○ **WebKit has a JavaScript API

● Consistent format support○ HTML5 needs to support both H.264 and WebM

Page 22: HTML5, Flash, and the Battle For Faster Cat Videos

Why Flash?Features missing in HTML5

● Content protection○ RTMPE protocol / Flash Access

● Camera & Microphone Access● Fullscreen video

○ HD, hardware accelerated cat videos!○ **WebKit has a JavaScript API

● Consistent format support○ HTML5 needs to support both H.264 and WebM

● Cross platform consistency****

Page 23: HTML5, Flash, and the Battle For Faster Cat Videos

Why HTML5?<video> Expectations

● Open source technology

○ Browser / Player / Codec

Page 24: HTML5, Flash, and the Battle For Faster Cat Videos

Why HTML5?<video> Expectations

● Open source technology

○ Browser / Player / Codec● Lower latency

○ No plug-in instantiation

Page 25: HTML5, Flash, and the Battle For Faster Cat Videos

Why HTML5?<video> Expectations

● Open source technology

○ Browser / Player / Codec● Lower latency

○ No plug-in instantiation● Better performance and fidelity

Page 26: HTML5, Flash, and the Battle For Faster Cat Videos

Why HTML5?<video> Expectations

● Open source technology

○ Browser / Player / Codec● Lower latency

○ No plug-in instantiation● Better performance and fidelity● Accessibility

Page 27: HTML5, Flash, and the Battle For Faster Cat Videos

Why HTML5?<video> Expectations

http://imgs.xkcd.com/comics/in_ur_reality.png

Page 28: HTML5, Flash, and the Battle For Faster Cat Videos

Why HTML5?<video> Expectations

● Open source technology

○ Browser / Player / Codec● Lower latency

○ No plug-in instantiation● Better performance and fidelity● Accessibility

○ User agents can have special video handling

Page 29: HTML5, Flash, and the Battle For Faster Cat Videos

Round 2: Device-ability

By dakinyhttp://www.flickr.com/photos/dakiny/4430765149/

Page 30: HTML5, Flash, and the Battle For Faster Cat Videos

Why HTML5?HTML5 Capable Browsers

Page 31: HTML5, Flash, and the Battle For Faster Cat Videos

Why HTML5?Flash Support vs. HTML5 Support

Page 32: HTML5, Flash, and the Battle For Faster Cat Videos

Why HTML5?YouTube Data API Usage for Flash vs. HTML5 Devices

Page 33: HTML5, Flash, and the Battle For Faster Cat Videos

Why HTML5?

Page 34: HTML5, Flash, and the Battle For Faster Cat Videos

When HTML5?

Page 35: HTML5, Flash, and the Battle For Faster Cat Videos

Primary Goal:Recover playbacks that would

be lost without flash

Page 36: HTML5, Flash, and the Battle For Faster Cat Videos

Our Solution

Page 37: HTML5, Flash, and the Battle For Faster Cat Videos

<iframe type="text/html" width="640" height="385" frameborder="0" src="http://www.youtube.com/embed/VIDEO_ID" allowfullscreen></iframe>

Page 38: HTML5, Flash, and the Battle For Faster Cat Videos

When HTML5?<iframe> Embed

● Give the user HTML5 or Flash based on device and user preferences.

● Allows for better mobile support.

● Offers an "it just works" experience.

Page 39: HTML5, Flash, and the Battle For Faster Cat Videos

When HTML5?When does the user get HTML5?

Page 40: HTML5, Flash, and the Battle For Faster Cat Videos

When HTML5?Detecting HTML5

var videoElement = document.createElement('video');if (videoElement && videoElement.canPlayType && (videoElement.canPlayType('video/mp4; codecs="avc1.42001E, mp4a.40.2"') || videoElement.canPlayType('video/webm; codecs="vp8.0, vorbis"'))) { // Sweet, we can use HTML5!}

Page 41: HTML5, Flash, and the Battle For Faster Cat Videos

When HTML5?When does the user get HTML5?

Page 42: HTML5, Flash, and the Battle For Faster Cat Videos

Round 3: Performance

By Two Hawk's Eyehttp://www.flickr.com/photos/mycoolpics/92033686/

Page 43: HTML5, Flash, and the Battle For Faster Cat Videos

Player Start Time

TODO(schechter): Add csi screen captures

200ms

Flash

HTML5

Page 44: HTML5, Flash, and the Battle For Faster Cat Videos

iframe Embed Time Till Thumbnail Visible

Flash - 5.1s

HTML5 - 1.4s

*Collected data shows faster load times than this control environment, but the comparison is actuate.

Page 45: HTML5, Flash, and the Battle For Faster Cat Videos

Get Video Time

Page 46: HTML5, Flash, and the Battle For Faster Cat Videos

Get Video Time

● HTML5:

○ Opera is Awesome

■ 200ms ahead of the pack

● Flash: IE9 and Opera are the leaders

○ 200ms faster● HTML5 is almost always faster than Flash

○ 300ms - 350ms faster○ IE9 is an exception

■ IE9 Flash is slightly faster than IE9 HTML5

Page 47: HTML5, Flash, and the Battle For Faster Cat Videos

Video Start Time

HTML5

Flash 2s

Page 48: HTML5, Flash, and the Battle For Faster Cat Videos

So why is flash so fast?

Page 49: HTML5, Flash, and the Battle For Faster Cat Videos

Make Assumptions

Page 50: HTML5, Flash, and the Battle For Faster Cat Videos

Making Assumptions

● Most users have a recent version of flash● Thus we can optimistically embed the most

common case and do version checking and updating after a script loads

● 250ms improvement to flash start time

Page 51: HTML5, Flash, and the Battle For Faster Cat Videos

Preload Video Connection

Page 52: HTML5, Flash, and the Battle For Faster Cat Videos

Preload Video Connection

● Resolves DNS while page is rendering● Maintains an open connection● 200ms improvement

<head> <script> var img = new Image(); img.src = videoConnectionUrl; </script></head>

Page 53: HTML5, Flash, and the Battle For Faster Cat Videos

What about embeds?

Page 54: HTML5, Flash, and the Battle For Faster Cat Videos

#1 cache

Page 55: HTML5, Flash, and the Battle For Faster Cat Videos

1. youtube.com/v/di5I49yg7bY 302 redirect2. s.ytimg.com/swf/l.swf?args&swf=swf2-hash_url.swf3. s.ytimg.com/swf/swf2-hash_url.swf ~150kb

Page 56: HTML5, Flash, and the Battle For Faster Cat Videos

1. youtube.com/v/di5I49yg7bY 3022. s.ytimg.com/swf/l.swf?args&swf=swf2-hash_url.swf3. s.ytimg.com/swf/swf2-hash_url.swf

1. youtube.com/v/di5I49yg7bY application/x-shockwave-flash2. s.ytimg.com/swf/swf2-hash_url.swf

Better

Page 57: HTML5, Flash, and the Battle For Faster Cat Videos

1. youtube.com/v/di5I49yg7bY 3022. s.ytimg.com/swf/l.swf?args&swf=swf2-hash_url.swf3. s.ytimg.com/swf/swf2-hash_url.swf

1. youtube.com/v/di5I49yg7bY application/x-shockwave-flash2. s.ytimg.com/swf/swf2-hash_url.swf

1. youtube.com/embed/di5I49yg7bY text/html2. s.ytimg.com/swf/swf2-hash_url.swf

Best

Page 58: HTML5, Flash, and the Battle For Faster Cat Videos

#2 lazy load

Page 59: HTML5, Flash, and the Battle For Faster Cat Videos

Most embeds are never played.

Page 60: HTML5, Flash, and the Battle For Faster Cat Videos

● Delay expensive queries.● Use cache for most videos.● Delay loading... flash?

Page 61: HTML5, Flash, and the Battle For Faster Cat Videos

Demo:http://gregthebusker.com/iframedemo.html

Page 62: HTML5, Flash, and the Battle For Faster Cat Videos

Player API

http://code.google.com/apis/youtube/getting_started.html#player_apis

Page 63: HTML5, Flash, and the Battle For Faster Cat Videos

The JavaScript APICommunication

Page 64: HTML5, Flash, and the Battle For Faster Cat Videos

The JavaScript APICommunication

● Poll the URL fragment? http://youtube.com/embed/video_id#fragment

Page 65: HTML5, Flash, and the Battle For Faster Cat Videos

The JavaScript APICommunication

● Poll the URL fragment?http://youtube.com/embed/video_id#fragment

● Messages are one dimensional.● Polling eats up CPU and is not instant.● Both directions of communication use the same

fragment.

Page 66: HTML5, Flash, and the Battle For Faster Cat Videos

The JavaScript APICommunication

● Better idea: PostMessage API.someWindow.postMessage(message, targetOrigin);

Page 67: HTML5, Flash, and the Battle For Faster Cat Videos

The JavaScript APICommunication

● Better idea: PostMessage API.someWindow.postMessage(message, targetOrigin);

● Uses JSON for native encoding and decoding of data.● No polling.● Native event listeners.● Communications are sandboxed per-window.● Calls are asynchronous.

Page 68: HTML5, Flash, and the Battle For Faster Cat Videos

Conclusion

● Flash is still preferred in most places○ More critical features○ Deeper reach

● HTML5 is awesome○ Improves every day○ Greater mobile reach○ People want it

Page 69: HTML5, Flash, and the Battle For Faster Cat Videos

Questions?

[email protected]@google.com

can haz question?By cloudzilla http://www.flickr.com/photos/cloudzilla/378829651/