multimedia and html5 - think vitamin html5 online conference 01.11.2010

52
Multimedia and HTML5 Patrick H. Lauke / Think Vitamin HTML5 Online Conference / 1 November 2010 AUDIO, VIDEO AND CANVAS SUPPORT

Upload: patrick-lauke

Post on 12-May-2015

3.002 views

Category:

Technology


7 download

DESCRIPTION

Multimedia and HTML5 There is a wealth of new functionality coming to browsers under the umbrella term of HTML5, but certainly the most talked-about is the inclusion of native media playback and the visual possibilities offered by the new canvas element. In this session we'll cover the basics of audio, video and canvas in HTML5 - mixing context and theory with simple live demos and examples that showcase the power of these new tools for developers. http://thinkvitamin.com/online-conferences/html5-nov/ Links to demos used in the presentation: http://people.opera.com/patrickl/experiments/video/basic/ http://people.opera.com/patrickl/experiments/flash-overlap/ http://people.opera.com/patrickl/experiments/flash-overlap/fixed.html http://people.opera.com/patrickl/experiments/video/hover+transition/ http://www.youtube.com/html5 http://camendesign.com/code/video_for_everybody http://camendesign.com/code/video_for_everybody/test.html http://people.opera.com/patrickl/experiments/webm/basic-controls/ http://people.opera.com/patrickl/experiments/webm/fancy-controls/ http://people.opera.com/patrickl/experiments/webm/fancy-swap/ http://people.opera.com/patrickl/experiments/audio/wilhelm/controls.html http://people.opera.com/patrickl/experiments/audio/wilhelm/ http://people.opera.com/patrickl/experiments/canvas/particle/2/ http://mariuswatz.com/works/abstract01js/index.html http://www.splintered.co.uk/experiments/archives/paranoid_0.2/ http://alteredqualia.com/canvasmol/ http://www.splintered.co.uk/experiments/archives/canvas-ambilight/ http://people.opera.com/patrickl/experiments/canvas/image-edit/ http://github.com/mezzoblue/PaintbrushJS http://html5doctor.com/video-canvas-magic/ http://media.chikuyonok.ru/ambilight/ http://diveintohtml5.org/everything.html http://www.modernizr.com/ http://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills http://sublimevideo.net/ http://videojs.com/ http://www.happyworm.com/jquery/jplayer/

TRANSCRIPT

Page 1: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

Multimedia and HTML5

Patrick H. Lauke / Think Vitamin HTML5 Online Conference / 1 November 2010

AUDIO, VIDEO AND CANVAS SUPPORT

Page 2: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

Web Evangelist at Opera

Page 3: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

HTML5<!DOCTYPE html>

Page 4: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

“...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 5: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

making your site Fonzie compliant...

Page 6: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

<video>

Page 7: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

Adobe Flash currently most commonvideo delivery mechanism

Page 8: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

<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 10: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

<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 11: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

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

Page 12: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

video formatsthe big debate

Page 13: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

MP4 / H.264

ubiquitous, patent encumbered, licensing/royalties

Page 14: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

Ogg Theora

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

Page 15: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

WebM

open and royalty-free, web optimised

Page 16: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

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 17: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

www.youtube.com/html5

Page 18: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

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

Page 19: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

<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 20: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

powerful (simple) APIto script your own controls

Page 21: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

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

Page 22: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

controlling a <video> element

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

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

Page 23: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

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 24: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

<audio>

Page 25: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

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 26: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

<canvas>

Page 27: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

canvas = “scriptable images”

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

Page 28: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

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 29: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

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 30: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

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 31: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010
Page 32: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010
Page 33: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

canvas accessibility concerns

Page 34: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

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 35: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

video, audio and canvas on any devicewithout plugins

(Java / Flash / Silverlight not ubiquitous)

Page 36: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010
Page 37: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010
Page 38: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

is it all safe to use, right now?

Page 39: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

don't do browser sniffing

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

Page 40: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010
Page 41: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

feature-detectionprogressive enhancement, graceful degradation

http://diveintohtml5.org/everything.html

Page 42: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

feature-detection for audio/video

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

Page 43: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

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 44: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

patching older browsersgithub.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills

Page 45: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

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

Page 46: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

sublimevideo.net

Page 47: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

videojs.com

Page 48: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

www.happyworm.com/jquery/jplayer

Page 49: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

HTML5 as Flashkiller?

Page 50: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

not a question of HTML5 replacing Flash...

Page 51: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

giving developers a choice!

Page 52: Multimedia and HTML5 - Think Vitamin HTML5 Online Conference 01.11.2010

www.opera.com/developerpeople.opera.com/patrickl/presentations/thinkvitamin-html5_01.11.2010/thinkvitamin-html5_01.11.2010.pdf

[email protected]