html5 apis - native multimedia support and beyond - university of leeds 05.05.2011

68
HTML5 APIs Patrick H. Lauke / University of Leeds / 5 May 2011 NATIVE MULTIMEDIA SUPPORT AND BEYOND

Upload: patrick-lauke

Post on 15-May-2015

4.755 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

HTML5 APIs

Patrick H. Lauke / University of Leeds / 5 May 2011

NATIVE MULTIMEDIA SUPPORT AND BEYOND

Page 2: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

“...extending the language to better support Web applications [...] This puts HTML in direct competition with other technologies[...] , in particular Flash and Silverlight.”

Ian Hickson, Editor of HTML5http://lists.w3.org/Archives/Public/public-html/2009Jan/0215.html

Page 3: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

making your site Fonzie compliant...

Page 4: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

<video>

Page 5: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

Adobe Flash currently most commonvideo delivery mechanism

Page 6: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

<object width="425" height="344"><param name="movie"

value="http://www.youtube.com/v/9sEI1AUFJKw&hl=en&fs=1&"></param>

<param name="allowFullScreen" value="true"></param>

<param name="allowscriptaccess" value="always"></param>

<embed src="http://www.youtube.com/v/9sEI1AUFJKw&hl=en&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>

Page 7: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

<video src="video.webm" controls autoplay loop preload="none" poster="poster.jpg" width="320" height="240"> <a href="video.webm">Download movie</a></video>

Page 8: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

video as native object● “plays nice” with rest of the page● keyboard accessibility built-in

Page 9: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

video formatsthe big debate

Page 10: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

MP4 / H.264

ubiquitous, patent encumbered, licensing/royalties

Page 11: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

Ogg Theora

“free and open”, no licensing/royaltiesnot many tools for it, not web optimised

Page 12: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

WebM

open and royalty-free, web optimised

Page 13: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

www.youtube.com/html5

Page 14: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

providing multiple sources<video controls autoplay poster="…" width="…" height="…">

<source src="movie.webm" type="video/webm" /><source src="movie.ogv" type="video/ogg" /><source src="movie.mp4" type="video/mp4" /><!-- fallback content -->

</video>

Page 15: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

still include fallback for old browsershttp://camendesign.com/code/video_for_everybody

Page 16: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

<video controls autoplay poster="…" width="…" height="…"><source src="movie.webm" type="video/webm" /><source src="movie.ogv" type="video/ogg" /><source src="movie.mp4" type="video/mp4" /><object width="…" height="…" type="application/x-

shockwave-flash" data="player.swf"><param name="movie" value="player.swf" /><param name="flashvars" value=" … file=movie.mp4" /><!-- fallback content -->

</object></video>

Page 17: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

powerful (simple) APIto script your own controls

Page 18: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

icant.co.uk/easy-youtube

Page 19: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

www.w3.org/TR/html5/video.html#media-elements

Page 20: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

controlling a <video> element

var v = document.getElementById('player');

v.play();v.pause();v.volume = … ;v.currentTime = … ;…

Page 21: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

events fired by <video> element

var v = document.getElementById('player');v.addEventListener('loadeddata', function() { … }, true)v.addEventListener('play', function() { … }, true)v.addEventListener('pause', function() { … }, true)v.addEventListener('timeupdate', function() { … }, true)v.addEventListener('ended', function() { … }, true)…

Page 22: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

people.opera.com/patrickl/experiments/webm/basic-controls

Page 23: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

people.opera.com/patrickl/experiments/webm/fancy-controls

Page 24: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

people.opera.com/patrickl/experiments/webm/fancy-swap

Page 25: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

<audio>

Page 26: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

audio exactly the same as video

<audio src=”music.mp3” controls autoplay></audio>[...]<audio controls autoplay>

<source src="music.mp3" type="audio/mpeg" /><source src="music.oga" type="audio/ogg" /><!-- fallback content -->

</audio>

same format debacle: MP3 vs Ogg Vorbis (vs WAV)

Page 27: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

<canvas>

Page 28: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

canvas = “scriptable images”

<canvas width="…" height="…"></canvas>

Page 29: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

canvas has standard API methods for drawing

ctx = canvas.getContext("2d");ctx.fillRect(x, y, width, height);ctx.beginPath();ctx.moveTo(x, y);ctx.lineTo(x, y);ctx.bezierCurveTo(x1, y1, x2, y2, c1, c2);

Page 30: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

people.opera.com/patrickl/experiments/canvas/particle/3

Page 31: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

mariuswatz.com/works/abstract01js

Page 32: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

www.benjoffe.com/code/demos/canvascape

Page 33: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

canvas drawing ready-made images

ctx = canvas.getContext("2d");var logo = new Image();logo.src = 'logo.png';ctx.drawImage(logo,x1,y1,w1,h1,x2,y2,w2,h2);

or call in an existing image already on the page

Page 34: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

www.splintered.co.uk/experiments/archives/paranoid_0.3

Page 35: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

canvas access to image data array

ctx = canvas.getContext("2d");canvasData = ctx.getImageData(x,y,w,h);[R,G,B,A,R,G,B,A,R,G,B,A,R,G,B,A, … ]

Page 36: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

www.splintered.co.uk/experiments/archives/canvas-ambilight

Page 37: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

github.com/mezzoblue/PaintbrushJS

Page 38: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

canvas also works with video

ctx = canvas.getContext("2d");v = document.getElementById('player');ctx.drawImage(v,x1,y1,w1,h2,x2,y2,w2,h2);

grab currently displayed frame (update as appropriate)

Page 39: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

html5doctor.com/video-canvas-magic

Page 40: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

media.chikuyonok.ru/ambilight

Page 41: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

www.filamentgroup.com/examples/charting

Page 42: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

canvas accessibility concerns

Page 43: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

video, audio and canvas on any devicewithout plugins

(Java / Flash / Silverlight not ubiquitous)

Page 44: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011
Page 45: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011
Page 46: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

HTML5 (and friends) haslots more APIs for developers

(for powerful client-side apps)

Page 47: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

isgeolocationpartofhtml5.com

Page 48: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

geolocationnavigator.geolocation.getCurrentPosition(success, error);navigator.geolocation.watchCurrentPosition(success, error);function success(position) {

/* where's Wally? */var lat = position.coords.latitude;var long = position.coords.longitude;...

}

Page 49: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

owlsnearyou.com

Page 50: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

offline detectionwindow.addEventListener('online', function(){ … }, true);window.addEventListener('offline', function(){ … }, true);

…however, currently unreliable!

Page 51: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

application cache<html manifest=”blah.manifest”>CACHE MANIFEST# send this with correct text/cache-manifest MIMEimages/sprites.pngscripts/common.jsscripts/jquery.jsstyles/global.cssNETWORK:# never cached (apart from normal caching mechanism)onlineonly.cssFALLBACK:# pattern matching. fallback file will also be cachedimages/ images/not-offline.png

Page 52: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

localStorage/sessionStorage

like cookies...

document.cookie = 'key=value; expires=Thu, 15 Feb 2010 23:59:59 UTC; path=/'…/* convoluted string operations go here … */

Page 53: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

localStorage/sessionStorage

like cookies...on steroids!

localStorage.setItem(key, value);localStorage.getItem(key);localStorage.clear();localStorage.key = value;if (localStorage.key == '…') { … }…

Page 54: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

WebSQL

relational DB / SQL in browser

var db =openDatabase(dbName, version, displayName, expectedSize);db.transaction(function(tx) {

tx.executeSql(sqlStatement, [], function (tx, result) { /* do something with the results */

});});

not being developed further (IE/Mozilla prefer IndexedDB) – nonetheless available right now in Opera+WebKit!

Page 55: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

is it all safe to use, right now?

Page 56: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

don't do browser sniffing

http://www.flickr.com/photos/timdorr/2096272747/

Page 57: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011
Page 58: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

feature-detectionprogressive enhancement, graceful degradation – or use shims

http://diveintohtml5.org/everything.html

Page 59: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

feature-detection for audio/video

if (!!document.createElement('video').canPlayType;) { … }if (!!document.createElement('audio').canPlayType;) { … }

Page 60: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

feature-detection for audio/video codecs

var v = document.createElement('video');if (!!(v.canPlayType)&& ((v.canPlayType('video/webm;codecs="vp8,vorbis"') == 'probably') || (v.canPlayType('video/webm;codecs="vp8, vorbis"') == 'maybe'))) { … }

Page 61: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

ready-made HTML5 audio/video players(for the lazy)

Page 62: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

sublimevideo.net

Page 63: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

videojs.com

Page 64: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

www.happyworm.com/jquery/jplayer

Page 65: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

HTML5 as Flashkiller?

Page 66: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

not a question of HTML5 replacing Flash...

Page 67: HTML5 APIs - native multimedia support and beyond - University of Leeds 05.05.2011

giving developers a choice!