Transcript
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/


Recommended