HTML5 - audio a video

Page 1

E N C Y K L O P E D I E

W E B D E S I G N E R A 1

HTML5 audio a video » kompletní průvodce «

Prvky pro audio a video • Stylování s CSS3 • SVG • Canvas • Web Workers • API pro HTML5 audio • Přístupnost médií

Silvia Pfeiffer



HTML5 – audio a video kompletní průvodce

Silvia Pfeiffer


The Definitive Guide to HTML5 Video Silvia Pfeiffer Original edition copyright © 2010 by Silvia Pfeiffer. Czech edition copyright © 2011 by ZONER software, a.s. All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright the publisher. Copyright originálního vydání © 2010 Silvia Pfeiffer. Copyright českého vydání © 2011 ZONER software, a.s. Všechna práva vyhrazena. Žádná část této publikace nesmí být reprodukována nebo předávána žádnou formou nebo způsobem, elektronicky ani mechanicky, včetně fotokopií, natáčení ani žádnými jinými systémy pro ukládání bez výslovného svolení držitele autorských práv.

HTML5 – audio a video, kompletní průvodce Autor: Silvia Pfeiffer Copyright © ZONER software, a.s. Vydání první v roce 2011. Všechna práva vyhrazena. Zoner Press Katalogové číslo: ZR1016 ZONER software, a.s. Nové sady 18, 602 00 Brno Překlad: RNDr. Jan Pokorný Odpovědný redaktor: Miroslav Kučera Šéfredaktor: Ing. Pavel Kristián DTP a obálka: Lenka Křížová, foto na obálce: Jana Vališová Webové stránky doprovázející tuto knihu: http://www.html5videoguide.net

Zdrojové soubory ke stažení: http://zonerpress.cz/download/html5-audio-a-video.rar

Informace, které jsou v této knize zveřejněny, mohou byt chráněny jako patent. Jména produktů byla uvedena bez záruky jejich volného použití. Při tvorbě textů a vyobrazení bylo sice postupováno s maximální péčí, ale přesto nelze zcela vyloučit možnost výskytu chyb. Vydavatelé a autoři nepřebírají právní odpovědnost ani žádnou jinou záruku za použití chybných údajů a z toho vyplývajících důsledků. Všechna práva vyhrazena. Žádná část této publikace nesmí být reprodukována ani distribuována žádným způsobem ani prostředkem, ani reprodukována v databázi či na jiném záznamovém prostředku či v jiném systému bez výslovného svolení vydavatele, s výjimkou zveřejnění krátkých částí textu pro potřeby recenzí. Veškeré dotazy týkající se distribuce směřujte na: Zoner Press ZONER software, a.s Nové sady 18, 602 00 Brno tel.: 532 190 883 e-mail: knihy@zoner.cz www.zonerpress.cz

ISBN 978-80-7413-147-9


Benjaminovi, který mě včera požádal, jestli by si mohl přečíst knihu své maminky, aby mohl udělat všechny ty skvělé videoukázky. A Johnovi, který tohle všechno umožnil. – Silvia


4

Obsah O autorovi

10

O technickém recenzentovi

10

Poděkování

11

Předmluva

12

Proč "kompletní průvodce"?

12

Komu je tato kniha určena a co obsahuje

13

Kontakt na autora

13

Zdrojové kódy

13

Sdělte nám svůj názor

13

Kapitola 1

Úvod

15

Špetka historie

15

Nějaký společný formát?

17

Shrnutí

21

Kapitola 2

Prvky <audio> a <video>

Prvky <video> a <audio>

23 23

Prvek <video>

23

Prvek <audio>

34

Prvek <source>

37

Přehled prvků a atributů

42

Kódování mediálních zdrojů

43

Kódování videa MPEG-4 H.264

44

Kódování videa Ogg Theora

46

Kódování videa WebM

48

Kódování audia ve formátu MP3 a Ogg Vorbis

49

Publikování

49

Webový server a progresivní stahování

50

Streamování pomocí RTP/RTSP

51

Rozšiřování HTTP streamování

52

Výchozí uživatelské rozhraní

55

Viditelné ovládací prvky

55

Kontextové nabídky

59

Přehled ovládacích prvků

62

Shrnutí

63


5 Kapitola 3

Stylování s CSS3

65

Box model CSS a video

66

Pozicování CSS a video

68

Řádkový typ boxu

68

Neviditelný box vs žádný box

70

Blokový typ boxu

71

Režim pozicování: relativní

72

Režim pozicování: plovoucí

74

Režim pozicování: absolutní

75

Změna měřítka a zarovnání videa uvnitř boxu

76

Základní vlastnosti CSS

78

Průhlednost

79

Gradient

80

Posouvající se obsah

81

Přechody a transformace s CSS

83

Přechody

84

Dvojrozměrné transformace

86

Trojrozměrné transformace

87

Galerie videí

90

Animace s CSS

92

Shrnutí

95

Kapitola 4

API JavaScriptu

97

Obsahové atributy

98

IDL atributy

99

Atributy související s všeobecnými funkcemi mediálních zdrojů

101

Atributy související s přehráváním mediálních zdrojů

113

Stavy mediálního prvku

124

Řídící metody v API

141

Metoda load()

141

Metoda play()

142

Metoda pause()

143

Metoda canPlayType()

145

Události

146

Vlastní ovládací prvky

148

Shrnutí

155


6 Kapitola 5

HTML5 média a SVG

Použití SVG s prvkem <video>

157 158

Inline SVG

158

SVG pro maskování

159

Video v SVG

159

Pár slov příkladům

159

Základní tvary a <video>

159

Tvary jako maska

160

SVG text a <video>

164

SVG stylování pro <video>

165

SVG přepínač přehrát/pozastavit

166

Gradient v SVG

168

Vzorek v SVG

169

SVG efekty pro <video>

171

Ořezávací cesta SVG

171

SVG filtry

172

SVG animace a <video>

177

SVG prvek <animate>

178

SVG prvky <animateColor> a <animateTransform>

179

SVG prvek <animateMotion>

179

Média v SVG

180

Video v SVG

180

Maskování videa v SVG

181

SVG a zrcadlení

183

SVG a detekce stran

184

Shrnutí

Kapitola 6

185

HTML5 média a Canvas

Video v Canvas drawImage()

187 188 188

Rozšíření funkce drawImage()

191

Funkce getImageData() a putImageData()

193

Funkce getImageData() a jednoduchá putImageData()

195

Dvě canvas

197

Jednoduché manipulace v Canvas Nahrazení pozadí průhlednými pixely

199 199


7 Video ve 2D canvas s 3D efektem

200

Barevný rám obklopující video

203

Video jako vzorek

206

Kompozice

208

Maska průhlednosti podle gradientu

208

Vyříznutí regionu

211

Kreslení textu

214

Transformace

216

Zrcadlení

216

Video ve spirále

219

Animace a interaktivita

222

Shrnutí

225

Kapitola 7

HTML5 média a Web Workers

227

Web Workers a prvek <video>

228

Detekce pohybu s Web Workers

233

Video v odstínech šedé

234

Detekce pohybu

235

Segmentace regionu

238

Detekce obličeje

244

Shrnutí

250

Kapitola 8

API pro HTML5 audio

Čtení audio dat Extrakce audio samplů

251 252 252

Pole framebuffer

254

Realizace tvaru vlny audia

256

Realizace spektra audia

259

Generování audio dat

261

Vytvoření zvuku o jediné frekvenci

261

Vytvoření zvuku z jiného zdroje audia

262

Nepřetržité přehrávání

263

Manipulace se zvukem: vypípnutí

265

Generátor tónu

267

Přehled API filtrového grafu Základní čtení a zapisování

269 270


8 Pokročilé filtry

271

Vytvoření dozvuku

272

Zobrazení tvaru vlny Shrnutí

Kapitola 9

273 275

Přístupnost médií a internacionalizace

Technologie alternativního obsahu

277 278

Uživatelé se zrakovým postižením

278

Uživatelé se sluchovým postižením

280

Hluchoslepí uživatelé

283

Podpora učení

284

Cizí uživatelé

284

Souhrn technologií

285

Transkripce

285

Prostá transkripce

285

Interaktivní transkripce

286

Alternativní synchronizovaný text

289

WebSRT

289

Značkování HTML5

298

Použití in-band

301

JavaScript API

305

Vícestopé audio nebo video Navigace

308 309

Kapitoly

309

Navigace z klávesnice

310

Specifikace mediálních fragmentů URI

311

Adresy URL v narážkách

313

Souhrn funkcí pro usnadnění přístupu

313

Shrnutí

315

Kapitola 10

Audio a video zařízení

317

Prvek <device>

318

Atribut type

318

Atribut data

318

Stream API Video zobrazující samo sebe

319 319


9 Zaznamenávání

320

API pro WebSockets

322

Použití API pro WebSockets

322

Výměna zpráv

323

Sdílené řízení videa

326

Video konference

329

API ConnectionPeer

331

Shrnutí

331

Dodatek

Výhled a celkové shrnutí

Výhled API metadat API pro kvalitu služby Celkové shrnutí Kapitoly 2, 3 a 4 – seznámení s problematikou

333 333 333 335 336 336

Kapitoly 5, 6 a 7 – interakce s jinými prvky HTML

336

Kapitoly 8, 9 a 10 – nejnovější vývoj

337

Rejstřík

339


10

O autorovi Silvia Pfeiffer, PhD., se narodila a strávila mládí v Německu, kde také vystudovala kombinaci oborů Computer Science a Business Management. Později získala v počítačové vědě titul PhD. Její výzkum se soustředil na audiovizuální obsahovou analýzu s cílem zvládnout prudký nápor digitálního audio a video obsahu na Internetu. Výzkumu se věnovala už v minulém století, od příchodu webu, dlouho předtím, než vůbec vznikla myšlenka vytvořit něco takového, jako je YouTube. Poté, co v roce 1999 dokončila studia, byla Silvia pozvána do Austrálie, aby se zapojila do CSIRO (Commonwealth Scientific and Industrial Research Organisation). A právě tam, poté, co se krátce angažovala ve standardizaci MPEG-7, napadlo Silvii používat audiovizuální anotace za účelem použitelnosti mediálního obsahu na webu. Společně se svými kolegy rozpracovala myšlenku "plynule mediálního webu", takového, kde se budou všechny informace skládat z audio a video obsahu a kde budete tímto obsahem bude možné procházet stejně, jako když prohlížíte textové stránky a přecházíte jinam prostřednictvím hypertextových odkazů. Součástí tohoto webu by měl také být úplné a správně časované transkripce audiovizuálních zdrojů, aby je vyhledávače mohly indexovat a aby uživatelé byli schopni vyhledávat informace skryté hluboko uvnitř mediálních souborů prostřednictvím existujících a dobře známých přístupů pro vyhledávání na webu. Silvia a její kolegové se spojili s organizací Xiph a realizovali své nápady prostřednictvím rozšíření do Ogg, zásuvných modulů pro Firefox a serverových zásuvných modulů pro Apache. Tím, že implementovali souborovou podporu do výzkumného vyhledávače CSIRO, vytvořili v roce 2001 první video vyhledávač, který byl schopen získávat video na úrovni klipů prostřednictvím dočasných URI. Bylo to něco podobného, jako je vyhledávání videa, které bylo o mnoho let později přidáno do Googlu. Silvia zůstala u CSIRO až do roku 2006, kdy, inspirována vývojem Web 2.0 a úspěchem YouTube, začala pracovat u firmy Vquence, která se soustřeďuje na všechno, co se týká prohledávání videa a jeho metrik. Společně s ní zde pracovali Chris Gilbey a John Ferlito. V současné době je Silvia na volné noze a zabývá se webovými mediálními aplikacemi, mediálními standardy a usnadněním přístupu k médiím. Je hlavní organizátorkou každoročního workshopu Foundations of Open Media Software (FOMS). Často je zvána jako expert do W3C v oblastech HTML, Media Fragments, Media Annotations a Timed Text Working Groups. Přispívá do mediální technologie HTML5 prostřednictvím WHATWG a W3C a mívá krátkodobé smlouvy s Mozillou a Googlem, které jsou zaměřeny na standardy ohledně usnadnění přístupu k médiím. Silviin blog je na http://blog.gingertech.net.

O technickém recenzentovi Chris Pearce je softwarový inženýr, který pracuje u Mozilly na podpoře přehrávání audia a videa v HTML5 pro open source webový prohlížeč Firefox. Je také tvůrcem indexování snímků, které používá mediální kontejner Ogg. Přispívá do komunity Ogg/Xiph. Chris předtím pracoval na textovém editoru Mozilly a na nástrojích pro vývojáře softwaru pro mobily. Chris pracuje v kanceláři Mozilly v Aucklandu na Novém Zélandu a bloguje o záležitostech týkajících se vývoje internetového videa a Firefoxu na http://pearce.org.nz.


11

Poděkování Nejprve chci poděkovat všem skvělým lidem, kteří se podílejí na vývoji HTML5 a souvisejících standardů a technologií (jak u WHATWG, tak i u W3C) a kteří tak uskutečnili můj dlouholetý sen, učinit audio a video obsah prvořadými občany na webu. Věřím, že během následujících deseti let zažijeme díky těmto technologiím nový boom, větší než poslední boom zvaný "Web 2.0", a že budeme mít k dispozici nějakou audiovizuální komponentu, která od základu změní způsob, jakým lidé a firmy komunikují online. Dále chci poděkovat konkrétně softwarovým vývojářům u rozličných prohlížečů, kteří implementovali mediální prvky a jejich funkcionalitu a poskytovali mi zpětné vazby týkající se otázek vztahujících se k médiím, kdykoli jsem je potřebovala. Jmenovitě chci zmínit Chrise Pearce od Mozilly, který vykonal obrovský kus práce tím, že provedl odborné korektury v celé knize, a Philipa Jägenstedta od Opery za jeho cenné zpětné vazby týkající se záležitostí souvisejících s Operou. Osobně chci poděkovat přispěvovatelům z Xiph a FOMS, s nimiž bylo zábavnou projížďkou vyvíjet otevřenou mediální technologii a bořit hranice webu pro audio a video. Chci poděkovat Ianu Hicksonovi za jeho neúnavnou práci na specifikacích HTML5 a za důkladný rozbor záležitostí týkajících se videa. Chci poděkovat všem bloggerům, kteří publikovali všelijaké pozoruhodné experimenty s prvky <audio> a <video> a byli inspirací pro mnohé mé příklady. Jmenovitě chci uvést Paula Rougeta od Mozilly, jehož některá dema založená na HTML5 doslova boří hranice. Chci poděkovat Chrisu Heilmannovi, že mi dovolil opětovně použít design jeho přehrávače pro potřeby ukázky vlastních ovládacích prvků v kapitole o JavaScriptu. Chci poděkovat vývojářům Audio API od Mozilly a Googlu za všechnu pomoc, kterou mi poskytli, abych porozuměla dvěma existujícím návrhům Audio API pro mediální prvky. Chci poděkovat vývojářům u Ericsson Labs za jejich experimenty s prvkem <device>. Oceňuji, že mi dovolili použít snímky obrazovek z jejich dem v kapitole věnované zařízením. Chci poděkovat expertům v mediální podskupině HTML5 Accessibility Task Force za jejich přínosné diskuse, jimiž přispěli do kapitoly o usnadnění přístupu k médiím. Jmenovitě chci uvést Johna Foliota a Janinu Sajka, jejichž korektury oné kapitoly mi pomohly přesně vyjádřit potřeby uživatelů týkající se usnadnění přístupu. Chci poděkovat kolegům v pracovní skupině W3C Media Fragment URI, s nimiž byla radost vyvíjet architektury, které nakonec umožnily přímý přístup k sekcím audia a videa tak, jak je to popsáno v kapitole o usnadnění přístupu k médiím. Chci poděkovat Davidu Bolterovi a Chrisu Blizzardovi od Mozilly, kteří mi příležitostně umožnili účastnit se porad a konferencí a pokračovat v práci na standardech. Chci poděkovat vydavatelství Apress za to, že na mne vyvíjeli neustálý tlak, takže jsem tuto knihu dokázala dokončit v plánovaném termínu. A nakonec chci poděkovat za podporu své rodině, zejména mámě a tátovi, že měli se mnou svatou trpělivost, když jsem psala jednu z kapitol knihy během naší dovolené na Fidži. Také chci poděkovat Benovi za to, že toleroval poněkud duchem nepřítomnou matku, a Johnovi, že mi neustále fandil.


12

Předmluva Je trochu ironie, že tuto knihu jsem začala psát přesně toho dne, kdy poslední z hlavních prohlížečů ohlásil, že se chystá podporovat HTML5 a s ním i HTML5 video. 16. března 2010 se Microsoft přidal k Firefoxu, Opeře, Chrome a WebKit/Safari s prohlášením, že Internet Explorer 9 bude podporovat HTML5 a prvek HTML5 <video>. Několik týdnů předtím, než jsem byla s knihou hotová, byl vydán IE9 beta, takže jsem mohla do knihy zařadit i tento prohlížeč IE9, byť v betaverzi, aby kniha byla o něco užitečnější. V průběhu doby, kdy jsem psala tuto knihu, byla učiněna celá řada dalších prohlášení a do všech prohlížečů byly doplněno mnoho nových funkcí. Všechny příklady, které jsou uvedeny v knize, byly otestovány v takových verzích prohlížečů, které byly k dispozici v době dokončování knihy. Jednalo se o Firefox 4.0b8pre, Safari 5.0.2, Opera 11.00 alpha build 1029, Google Chrome 9.0.572.0, vše na Mac OS X, a Internet Explorer 9 beta (9.0.7930.16406) na Windows 7. Prohlížeče pochopitelně procházejí neustálou evolucí a co nefunguje dnes, možná už funguje, nebo začne fungovat hned zítra. Až začnete používat mediální funkce HTML5 – a zejména až s ním začnete vyvíjet své vlastní weby – doporučuji, abyste si u všech relevantních prohlížečů zkontrolovali, v jakém stavu se u nich nachází aktuální implementace té funkcionality, kterou požadujete.

Proč "kompletní průvodce"? Možná jste zvědaví, proč má tato kniha podtitul "kompletní průvodce", proč to jednoduše není úvod nebo přehled? Jsem si plně vědoma toho, že to možná zní trochu namyšleně vzhledem k tomu, že mediální prvky HTML5 jsou nové a mnohé o nich se musí teprve specifikovat, nemluvě o tom, že v prohlížečích stále postrádáme implementace několika důležitých funkcí. Když se mnou ve vydavatelství Apress hovořili o návrhu napsat knihu o HTML5 médiích, dali mi vyplnit formulář, v němž jsem měla uvést jisté podrobnosti – obsah knihy, shrnutí, srovnání s jinými knihami na toto téma atd. V tom formuláři už byl uveden titul "Definitive Guide to HTML5 Video". Usilovně jsem přemýšlela, jak ho změnit. Zvažovala jsem možnosti jako "Úvod do médií HTML5", "Všechno, co potřebujete vědět o HTML5 video", "Mediální prvky HTML5", "Ultimátní průvodce k HTML5 video", ale ani jedna z těchto variant pro název se mi příliš nelíbila. Nakonec jsem se rozhodla, že si s tím dál lámat hlavu nebudu a použiju navrhovaný titul jako výzvu. Měla jsem napsat nejkompletnější příručku k HTML5 prvkům <audio> a <video>, jaká bude v době vydání na trhu. Skutečně jsem probrala všechny aspekty mediálních prvků HTML5, o nichž jsem věděla, že existují, nebo že se na nich pracuje. Protože je ale téměř jisté, že tato kniha nebude navždy "kompletním průvodcem", dávala jsem si pozor, abych vždy zmínila změny, o nichž jsem věděla, že právě probíhají, a abych nezapomněla připomenout, že máte u jistých funkcí zkontrolovat aktuální chování prohlížeče, než se na ně začnete spoléhat. Ať ale usiluji sebevíc, budoucnost rozhodně předvídat neumím. Takže jediná možnost, jak tohle všechno vyřešit, je případné druhé vydání, o němž bude Apress se mnou jistě diskutovat, až nastane vhodná doba (a pokud bude kniha dostatečně úspěšná). Své komentáře, závady v textu, zprávy o chybách v kódu, návrhy na zdokonalení a nápady na nová témata, která by se měla do knihy přidat, zanechte na http://apress.com/ book/errata/1470, nic nebude opominuto. Do té doby doufám, že vám tato kniha udělá radost a že získáte spoustu praktických návodů, abyste s médii HTML5 dokázali vytvářet přesně takové webové návrhy, jaké jste si předsevzali.


13

Komu je tato kniha určena a co obsahuje Kniha je určena komukoli, kdo se zajímá o používání mediálních prvků HTML5. Předpokládá se, že víte, jak se píše základní kód HTML, CSS a JavaScript, ale máte malou – nebo žádnou – zkušenost s médii. Jestliže teprve začínáte a potřebujete se prostě jen dozvědět základní informace o tom, jak do webových stránek zařadit video, postačí vám první tři kapitoly. Dozvíte se v nich, jak se v HTML vytváří značkování fungující napříč různými prohlížeči, pokud jde o zařazování audia a videa do webových stránek. Také se dozvíte, jak zakódovat video tak, abyste mohli obsluhovat jakákoli přehrávací zařízení. Probereme také některé open source nástroje, které jsou k dispozici pro práci s novými mediálními prvky HTML5. Rovněž se dozvíte, jak stylovat zobrazení prvků <audio> a <video> v CSS, aby je ve stránkách nikdo nepřehlédnul. Další čtyři kapitoly jsou o integraci mediálních prvků s ostatními webovými technologiemi. Dozvíte se například, jak nahradit výchozí ovládací prvky webových prohlížečů vlastními. Naučíte se používat API JavaScriptu pro mediální prvky. Také se naučíte integrovat mediální prvky s ostatními konstrukcemi HTML5 , mezi něž patří SVG, Canvas a vlákna Web Worker. Ve zbývajících kapitolách obrátíme pozornost k pokročilejším mediálním funkcionalitám HTML5. Většinu z těchto funkcionalit lze označit za experimentální a doposud nejsou jednotně implemenovány do prohlížečů. Je zde úvod o aktuálním stavu a základní informace o tom, co se asi bude dít dál. Naučíte se číst audio data a manipulovat s nimi, internacionalizovat audio a video, včetně legend, titulků a popisů audia. Také se dozvíte, jak z různých zařízení, jako jsou webkamery, přistupovat k videím a jak je přenášet po síti. Výklad uzavřeme shrnutím a stručným výhledem, na co všechno se můžeme v budoucnu těšit.

Kontakt na autora Nijak se neostýchejte se svými názory a kontaktujte mě na silvia@html5videoguide.net. Najdete mě také zde: Twitter: @silviapfeiffer Můj blog: http://blog.gingertech.net

Zdrojové kódy Zdrojové kódy k ukázkám použitým v této knize jsou dostupné na této adrese: http://zonerpress.cz/download/html5-audio-a-video.rar

K dispozici jsou i stránky doprovázející tuto knihu: http://www.html5videoguide.net

Sdělte nám svůj názor Jako čtenáři této knihy se stáváte těmi nejdůležitějšími kritiky a komentátory. Vážíme si vašeho názoru a chtěli bychom vědět, co děláme správně, co bychom mohli dělat lépe, ve kterých oblastech bychom měli publikovat, a také bychom chtěli znát vaše další podnětné myšlenky, o které jste ochotni se s námi podělit.


14 Jako odborný redaktor Zoner Press vítám vaše názory. Můžete mi psát – poslat e-mail nebo dopis – a sdělit mi, co se vám v této knize líbilo nebo nelíbilo, stejně tak, co bychom měli udělat, aby naše další knihy byly lepší. Pokud mi napíšete, nezapomeňte prosím připojit název knihy, ISBN, jméno autora, vaše jméno, telefon, nebo e-mail. Pozorně zhodnotím vaše názory a poskytnu je autorovi a ostatním redaktorům, kteří pracovali na této knize. Prosím, vězte, že nemohu pomoci s technickými problémy, které se týkají obsahu knihy, a že díky velkému množství e-mailů, které dostávám, nemohu zaručit odpověď na každou zprávu. E-mail: miroslav.kucera@zoner.cz nebo knihy@zoner.cz. Adresa: ZonerPress, ZONER software, a.s, Miroslav Kučera, Nové sady 18, 602 00 Brno.


23

KAPITOLA 2 Prvky <audio> a <video> V této kapitole si představíme nové prvky <audio> a <video> HTML, vysvětlíme, jak se kóduje audio a video tak, abyste je mohli využívat v mediálních prvcích HTML5, jak se publikuje a jak vypadá uživatelské rozhraní. Hned teď je ale třeba zdůraznit, že <audio> a <video> jsou ve specifikaci HTML stále poměrně nové prvky a že značkování popisované v této kapitole se mohlo změnit od doby, kdy šla kniha do tisku. Jádro funkcionality <audio> a <video> by ale mělo zůstat stejné, takže pokud narazíte na něco, co nefunguje přesně tak, jak očekáváte, doporučuji zkontrolovat aktuální specifikaci, zda v ní nedošlo k nějakým aktualizacím. Specifikaci najdete na http://www.w3.org/TR/html5/spec.html nebo na http://www.whatwg.org/specs/web-apps/current-work/multipage/. Všechny příklady v této a následujících kapitolách jsou k dispozici na http://html5videoguide.net. Pravděpodobně usoudíte, že bude prospěšné, když otevřete prohlížeč a budete při četbě sledovat, jak příklady vypadají v aktuálních verzích prohlížečů, které máte nainstalované na svém počítači.

Prvky <video> a <audio> V této sekci se seznámíte se všemi atributy prvků <video> a <audio> a zjistíte, ve kterých prohlížečích tyto prvky fungují. Také se dozvíte o rozdílech v interpretaci těchto prvků v jednotlivých prohlížečích. Upozorníme také na možné chyby, abyste předem věděli, kde byste mohli narazit.

Prvek <video> Jak jsme vysvětlili v předchozí kapitole, v současné době musejí vydavatelé brát v úvahu tři různé formáty, chtějí-li pokrýt všechny prohlížeče podporující prvek <video> HTML5, viz tabulku 2-1.


24

Kapitola 2 – Prvky <audio> a <video>

Tabulka 2-1. Kodeky videa podporované hlavními prohlížeči. Kodek WebM

Kodek Ogg Theora

Kodek MPEG-4 H.264

Firefox

-

Safari

-

-

Opera

-

Google Chrome

Internet Explorer

-

-

Protože neexistuje žádný pevný základní společný kodek (baseline codec, viz historický vývoj popisovaný v kapitole 1), uvedeme příklady pro všechny tři tyto formáty. Běžnou praxí je začínat s příkladem typu "Hello World", takže máte tři jednoduché ukázky, jimiž se vkládá video do HTML5: Výpis 2-1. Vložení Ogg videa do HTML5 <video src="HelloWorld.ogv"></video>

Výpis 2-2. Vložení WebM videa do HTML5 <video src="HelloWorld.webm"></video>

Výpis 2-3. Vložení MPEG-4 videa do HTML5 <video src="HelloWorld.mp4"></video>

Všechny tři výpisy jsme vložili na jedinou webovou stránku, přidali ovládací prvky (panel s ovládacími prvky a ukazatelem průběhu přehrávání vidíte podél dolní strany videa; dostaneme se k němu později) a nadefinovali šířku na 300px, abychom mohli lépe porovnat vzhled ve všech pěti hlavních prohlížečích. Výsledky vidíte na obrázku 2-1.

Obrázek 2-1. Prvek <video> v pěti prohlížečích (zleva doprava): Firefox, Safari, Chrome, Opera a IE.


HTML5 – audio a video, kompletní průvodce

25

Firefox zobrazí videa Ogg a WebM a ukáže chybu pro video MPEG-4. Opera reaguje podobně: nezobrazí nic pro video MPEG-4. Safari a IE neukážou nic pro videa Ogg a WebM, zobrazí jen video MPEG-4. Chrome zobrazí všechny tři formáty. Možná jste si povšimli, že implementace prvku <video> se v jednotlivých prohlížečích od sebe poněkud odlišují. Například v některých se nezobrazuje prázdný rám u formátů, které neumějí dekódovat, a v některých se ovládací prvky zobrazí jen tehdy, když na ně najedete kurzorem myši. S těmito odlišnostmi se blíže seznámíte v průběhu kapitoly. Je tomu tak proto, že specifikace poskytuje jistou volnost v interpretaci. My očekáváme, že se chování prohlížečů bude postupně sjednocovat, až bude ze samotné specifikaci jasnější, co se má zobrazovat. Funkce a rozdíly budeme podrobněji analyzovat níže. Tohle měl být jen aperitiv po povzbuzení chuti.

Náhradní obsah Také jste si jistě všimli, že prvek <video> má otevírající a uzavírající značku. Je tomu tak ze dvou důvodů. Zaprvé, existují další prvky, které jsou dceřiné vůči prvku <video> – konkrétně prvky <source> a <track>. K nim se také dostaneme. Zadruhé, všechno, co je umístěno uvnitř prvku <video> a není to uvnitř některého z konkrétních dceřiných prvků prvku <video>, se považuje za "náhradní obsah". Jde o to, že webové prohlížeče, které nepodporují prvky <audio> a <video> z HTML5, budou tyto prvky ignorovat, nicméně budou schopny zobrazit jejich obsah. Toto řešení tak nabízí určitou míru zpětné kompatibility. Prohlížeče, které prvky <video> a <audio> HTML5 podporují, tento náhradní obsah nezobrazí. Je to vidět ve výpisu 2-4. Výpis 2-4. Vložení videa MPEG-4 do HTML5 včetně náhradního obsahu <video src="HelloWorld.mp4"> Your browser does not support the HTML5 video element. </video>

Pokud tento text ("Váš prohlížeč nepodporuje prvek video HTML5") zařadíte do příkladu výše kombinujícího výpis ve třech formátech a spustíte v nějakém postarším prohlížeči, dostanete to, co vidíte na snímku obrazovky na obrázku 2-2.

Obrázek 2-2. Prvek <video> ve starším prohlížeči, zde se jedná o IE8. Dovnitř prvku <video> můžete přidat jakkoli značkování HTML, včetně prvků <object> a <embed>. Díky tomu tak můžete poskytnout náhradní obsah například prostřednictvím přehrávače Adobe Flash ve formátu mp4 nebo flv, nebo s appletem Cortado Java pro ogv. Ačkoliv tyto zásuvné moduly videa pochopitelně nebudou podporovat API JavaScriptu prvku <video> HTML5, můžete použít knihovny JavaScriptu, které


Kapitola 2 – Prvky <audio> a <video>

26

jsou schopny emulovat něco z funkcionality API JavaScriptu a poskytnout tak náhradní obsah pro mnoho různých situací. Mezi tyto knihovny patří mwEmbed1, Video for Everybody2, Sublime Video3 nebo VideoJS4. Připomeňme ještě, že pokud používáte nějaký moderní webový prohlížeč s podporou HTML5, který podporuje formáty Ogg nebo WebM, ale už nepodporuje zdroj ve formátu MPEG-4, ve výpisu 2-4 se nezobrazí žádný náhradní obsah. Musíte pomocí JavaScriptu zachytit chybu načítání a podniknout patřičnou akci. To, jak se zachytávají chyby při načítání, se dozvíte v kapitole 4. Toto řešení je pro vás relevantní jen tehdy, pokud se chystáte používat pouze jeden mediální formát a chcete zachytávat chyby pro ty prohlížeče, které vámi zvolený formát nepodporují. Pokud vám nevadí podporovat více formátů, existuje jiné značkovací řešení, v němž se nepoužívá atribut src a všechny dostupné alternativní zdroje pro jediný prvek <video> se vypisující prostřednictvím prvku <source>. K tomu se dostaneme později (viz sekci 2.1.3). Nyní projdeme všechny obsahové atributy prvku <video>, abyste pochopili, co přesně prvek <video> nabízí.

Atribut src Ve svém nejzákladnějším tvaru obsahuje prvek <video> pouze atribut src, což je URL na zdroj videa. Zdrojem videa je soubor obsahující data videa a je uložen na serveru. Abychom vytvořili řádný dokument HTML5, obalme prvek <video> patřičným formálním kódem HTML5: Výpis 2-5. Dokument HTML5 s videem MPEG-4 <!DOCTYPE html> <html lang="en"> <head> <title>Guide to HTML5 video: chapter 2: example </title> </head> <body> <h1>Chapter 2: example</h1> <video src="HelloWorld.mp4"></video> </body> </html>

Na obrázku 2-3 můžete vidět, jak tento příklad vypadá ve Firefoxu (nicméně se zdrojem HelloWorld.webm, nikoli HelloWorld.mp4) a v IE9 (zdroj HelloWorld.mp4; přesně podle výpisu 2-5). Obsah obou prohlížečů vypadá identicky, protože jsme v tomto případě pro každý prohlížeč použili podporovaný zdroj. Jistě jste si povšimli, že obě videa vypadají pouze jako obyčejné obrázky. Je tomu tak proto, že zde nemáme žádné ovládací prvky, jimiž bychom mohli video spustit, nic, co by indikovalo, že se jedná o skutečné video. Používat prvek <video> v tomto minimálním provedení má smysl jen za dvou okolností – buď se video ovládá prostřednictvím JavaScriptu (na to se podíváme v kapitole 4), nebo je video explicitně nastaveno tak, aby se automaticky začalo přehrávat okamžitě poté, co se načte. Výchozí chování videa (tj. bez použití dalších atributů) je pozastavit se po inicializaci prvku <video>, takže proto videa vypadají "jako obrázek".

1 2 3 4

Viz http://www.kaltura.org/project/HTML5_Video_Media_JavaScript_Library Viz http://camendesign.com/code/video_for_everybody Viz http://sublimevideo.net/ Viz http://videojs.com/


157

KAPITOLA 5 HTML5 média a SVG SVG je zkratka pro Scalable Vector Graphics (škálovatelná vektorová grafika). Jedná se o jazyk pro popis dvourozměrných grafických objektů v XML. V minulosti byl SVG tzv. standalone formátem, který se používal ve webových prohlížečích prostřednictvím Adobe Flash ve formě vloženého zdroje (embedded resource) nebo jako zdroj obrázků. V dnešní době formát SVG nativně podporují všechny moderní prohlížeče, včetně Microsoft Internet Exploreru 9. Hlavní využití SVG na webu spočívá ve vytváření interaktivních grafik s mnoha objekty, které je možné libovolně zvětšovat bez toho, aby došlo ke ztrátě kvality. Mapy, všelijaké technické výkresy a hierarchické systémové diagramy – tohle všechno jsou typicky dobré příklady užití SVG. Současná verze SVG podporovaná v prohlížečích je SVG 1.11. Následující verze s označením SVG 1.22 existuje jako pracovní koncept a zahrnuje spoustu dodatečných funkcionalit specifikovaných v tzv. modulech. Obsahuje třeba modul "Media"3, který obsahuje prvky <audio> a <video>. Ze všech moderních webových prohlížečů pouze Opera podporuje některé z dodatečných funkcionalit SVG 1.2, včetně modulu Media. V této kapitole se podíváme, jak se může pomocí funkcionalit SVG 1.1 manipulovat s HTML5 videem. Protože prvek <video> má logicky viditelné rozměry, SVG se ho týká. Nedá se opravdově aplikovat na <audio> (lze ale realizovat SVG grafiku ve spolupráci s prvkem <audio>). My se v této kapitole především soustředíme na schopnosti SVG 1.1, nicméně se také podíváme na modul Media z SVG 1.2, abyste se dozvěděli, jaké dodatečné funkcionality poskytuje. V této kapitole samozřejmě nemůžeme poskytnout důkladný popis SVG. Protože z něj ale budeme používat jen několik prvků, bude snadné výklad sledovat a chápat. Uveďme si nicméně alespoň seznam různých typů prvků, které existují v SVG verze 1.1:  Strukturální prvky (<svg>, <defs>, <desc>, <title>, <metadata>, <symbol>, <use>, <g>, <switch>, <a>, <view>).

1 2 3

Viz http://www.w3.org/TR/SVG/intro.html (specifikace) Viz http://www.w3.org/TR/SVG12/ Viz http://www.w3.org/TR/2004/WD-SVG12-20041027/media.html


Kapitola 5 – HTML5 média a SVG

158

 Tvary a obrazce (<circle>, <ellipse>, <rect>, <line>, <polyline>, <polygon>, <path>, <cursor>).  Text (<text>, <tspan>, <tref>, <textPath>, <altGlyph>, <altGlyphDef>, <altGlyphItem>, <glyphRef>, <font> a další funkcionality související s písmem).  Stylování (<style>, <marker>, <linearGradient>, <radialGradient>, <stop>, <pattern>).  Efekty (<clipPath>, <mask>, <filter> a filtrovací efekty).  Animace (<animate>, <set>, <animateMotion>, <animateTransform>, <animateColor>, <mpath>). Ostatní (<script>, <image> a <foreignObject>).

Pokud se poohlížíte po nějakém dobrém zdroji informací, který by vám pomohl vyznat se v základech a použití SVG v různých prohlížečích, vřele doporučujeme tyto odkazy: https://developer.mozilla.org/En/SVG_in_Firefox (Firefox). http://webkit.org/projects/svg/status.xml (WebKit, tj. Chrome a Safari). http://www.opera.com/docs/specs/opera95/svg/ (Opera). http://blogs.msdn.com/b/ie/archive/2010/03/18/svg-in-ie9-roadmap.asp (IE).

Pokud chcete zkontrolovat, které prohlížeče mají implementovanou podporu té či oné funkcionality z verze 1.1, může vám hodně pomoci článek "Comparison of layout engines (Scalable Vector Graphics)" z Wikipedie, který naleznete na adrese http://en.wikipedia.org/wiki/Comparison_of_layout_engines_(Scalable_Vector_Graphics).

Použití SVG s prvkem <video> Interakce HTML5 prvku <video> a SVG může probíhat těmito třemi různými způsoby: inline SVG, SVG pro maskování a video v SVG. V následujících sekcích si je stručně popíšeme.

Inline SVG S příchodem HTML5 začalo být SVG nativně integrováno do webových stránek prostřednictvím jeho vlastního prvku <svg> nebo ve formě odkazované vlastnosti CSS. Z toho plyne, že nyní můžete vytvářet webové stránky s inline SVG grafikou, přičemž tyto SVG grafiky jsou plně integrovány se zbytkem stránky, což například znamená, že dodržují stylování CSS, umožňují JavaScriptu komunikovat s objekty SVG, kreslit grafiky nebo vytvářet všelijaké efekty (například při najetí kurzorem myši na nějaký objekt SVG). Prostřednictvím inline SVG můžete dále modifikovat dané grafiky a videa – například je ořezávat, přidávat všelijaké filtry nebo různé animace. Poznamenejme, že v současné době jen Firefox, IE a Chrome podporují inline SVG pro stránky HTML (tj. umožňují použít uvnitř HTML stránky prvek <svg>). Safari a Opera podporují inline SVG pouze pro stránky XHTML, protože XML se umí vypořádat se zařazeným jmenným prostorem. Tam, kde chceme ovládat prvek pomocí SVG prostřednictvím JavaScriptu, použijeme v této fázi XHTML s inline SVG. Ještě poznamenejme, že podpora SVG v IE je pořád velmi útržkovitá, což ostatně sami uvidíte u některých funkcí, které použijeme později v této kapitole.


HTML5 – audio a video, kompletní průvodce

159

SVG pro maskování Ve stránkách HTML se SVG používá hlavně jako nástroj pro pokročilé stylování a efekty. Ve Firefoxu máme k dispozici CSS atributy4 filter, mask a clip-path, pokud chceme pro efekty použít inline nebo externí fragmenty SVG. V prohlížečích založených na jádru WebKit je možné používat externí SVG soubory ve formě CSS masky prostřednictvím atributu -webkit-mask. Inline SVG v atributu -webkit-mask použít nejde. Opera a IE nemají v této fázi žádné prostředky, jak použít SVG v CSS pro nějaké extra efekty, ať už jsou definovány inline nebo v nějakém externím souboru SVG.

Video v SVG Všechny prohlížeče kromě IE jsou schopny podporovat prvek <video> uvnitř nějaké definice SVG, buď nativně, nebo jako funkci SVG 1.2 (jako je tomu v případě s prohlížečem Opera), nebo prostřednictvím SVG funkce <foreignObject>. IE doposud neimplementoval žádnou funkci SVG 1.2, což znamená, že zatím nepodporuje ani <video>, ani <foreignObject>.

Pár slov příkladům V příkladech této kapitoly předvedeme všechny tři způsoby, jimiž se používá SVG s HTML a prvkem <video>. Tam, kde chceme předvést pouze inline SVG prvky společně přímým napojením na prvek <video> prostřednictvím JavaScriptu, budeme používat HTML a XHTML (například pro vlastní ovládací prvky). Tento způsob funguje ve všech moderních prohlížečích. Pro demonstraci některých efektů SVG, jako je maskování videa, budeme používat HTML a externí SVG soubor. Do HTML souboru začleníme různý CSS kód pro prohlížeče založené na jádru WebKit (Safari a Google Chrome) a pro Firefox. Bohužel tím v těchto příkladech zůstanou stranou Opera a IE. Tam, kde budeme chtít experimentovat s inline prvky SVG i s efekty SVG, budeme moci použít pouze Firefox, takže budeme používat inline SVG. A nakonec se podíváme, jak se v SVG pracuje s videem, ale pouze ve formě inline SVG s XHTML, a to buď prostřednictvím prvku <video>, nebo prvku <foreignObject>. To jsou v současné době patrně nejkompatibilnější prostředky, jak používat SVG efekty pro video, aby fungovaly pokud možno ve všech prohlížečích, přestože tím zatím necháváme IE mrznout venku. Dá se ale očekávat, že vývojáři IE budou schopni poměrně rychle implementovat <foreignObject>, nebo možná dokonce i <video> pro SVG.

Základní tvary a <video> Když začneme na té nejzákladnější úrovni, SVG umožňuje vytvářet tyto základní tvary a obrysy: <circle> (kružnice). <ellipse> (elipsa). <rect> (obdélník). <line> (úsečka).

4

Navržené také do W3C ke standardizaci: http://people.mozilla.com/~roc/SVG-CSS-Effects-Draft.html


Kapitola 5 – HTML5 média a SVG

160

<polyline> (lomená čára). <polygon> (mnohoúhelník). <path> (cesta).

Tvary jako maska Kterýkoliv z těchto tvarů můžeme použít jako masku, jíž překryjeme video. To znamená, že můžeme video oříznout do složitého obrazce definovaného pomocí SVG. Pro tento účel použijeme SVG obrázek (pro prohlížeče s jádrem WebKit) nebo fragment SVG (pro Firefox), obojí ve formě masky v CSS. Výpis 5-1 ukazuje použití SVG souboru, jehož podoba je uvedena ve výpisu 5-2. SVG soubor obsahuje kružnici, kterou aplikujeme jako masku na video. Výsledky ve Firefoxu a v Safari vidíte na obrázku 5-1. Kompletní kód této ukázky naleznete na http://html5videoguide.net/code_c5_1.html. Výpis 5-1. Stylování videa, kde je externí SVG zdroj použit jako maska <video class="target" height="270" width="480" controls> <source src="HelloWorld.mp4" type="video/mp4"> <source src="HelloWorld.webm" type="video/webm"> <source src="HelloWorld.ogv" type="video/ogg"> </video> <style> .target { mask: url("basic_example_c5_1.svg#c1"); -webkit-mask: url("basic_example_c5_1.svg"); } </style>

Výpis 5-2. SVG zdroj, který se používá ve výpisu 5-1 <?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <defs> <mask id="c1" maskUnits="userSpaceOnUse" maskContentUnits="userSpaceOnUse"> <circle id="circle" cx="240" cy="135" r="135" fill="white"/> </mask> </defs> <use xlink:href="#circle"/> </svg>


HTML5 – audio a video, kompletní průvodce

161

Obrázek 5-1. Aplikování SVG masky na <video> v prohlížečích Firefox a Safari. Opera a IE doposud nepodporují SVG obrázky ve formě masky na prvky HTML prostřednictvím CSS. Protože jednoduše zobrazí úplné video, nezařadili jsme sem snímky obrazovek z těchto prohlížečů. Později se podíváme, jak dosáhnout stejného efektu v Opeře, nicméně pro IE ale řešení nemáme. Speciálním případem je Chrome. Příklad kdysi fungoval ve verzích Chrome 6.0.xxx, ale s poslední verzí, kterou jsme používali při práci na této knize, fungovat přestal a zobrazil stejné úplné video jako Opera a IE. Zdá se, že maskování SVG přestalo fungovat pro prvek <video>, i když nadále funguje pro prvek <img>. Tato chyba byla Googlem zaregistrována5. (V Chrome 11 je ukázka funkční – pozn. red.) Asi jste si v kódu povšimli, že Firefox požaduje odkaz přímo na fragment SVG adresovaný prostřednictvím fragmentu URL (#), zatímco prohlížeče založené na WebKitu se odkazují na úplný SVG zdroj. Proto v SVG zdroji máme zahrnuty dvě různé specifikace: prvek <mask> pro Firefox a prvek <use> pro prohlížeče založené na WebKitu. Prvek <use> umožňuje vyhnout se opakování definice kružnice – prostě se na ni jen odkazujeme, což ovšem vyžaduje použít jmenný prostor xlink. Prvek <use> v zásadě vytvoří instanci kružnice ve formě masky pro prohlížeče založené na WebKitu, zatímco Firefox požaduje pouze definici. Zajímavou věcí zpozorovanou na všech maskovaných videích je to, že jsou zapnuté ovládací prvky videa. To znamená, že je možné ovládat přehrávání videa klikáním myší, pokud dobře odhadnete, kde je skrytá oblast tlačítka "Přehrát" a ukazatel pro průběh přehrávání. Vedlejším efektem je, že události myši prostupují maskovanou oblastí – na to se musí dávat pozor, protože to může vést k neočekávaným vedlejším efektům u uživatelů. Asi by bylo lepší používat vlastní ovládací prvky. Poznamenejme, že prvek <mask> má v SVG dva prostředky pro stylování: můžete nastavit maskUnits a maskContentUnits buď na userSpaceOnUse, nebo na objectBoundingBox. Použijete-li userSpaceOnUse, můžete definovat rozměry jako absolutní a pozicovat masku kdekoliv uvnitř hranic objektu. Rozhodnete-li se místo toho pro objectBoundingBox, budou se souřadnice středu kružnice cx a cy, stejně jako poloměr r, interpretovat jako procenta vzhledem k rozměrům x a y objektu. Výpis 5-3 ukazuje dvě různé verze SVG používající <mask> s objectBoundingBox ve Firefoxu. Výsledky jejich realizace vidíte na obrázku 5-2. Tento SVG jsme napsali jako inline, abyste viděli, jak se to dělá. Masky jsou definovány v prvku <defs>, protože samy o sobě nemají být vidět. Kompletní kód této ukázky naleznete na http://html5videoguide.net/code_c5_2.html. Výpis 5-3. Dvě SVG masky použité ve Firefoxu s hodnotou objectBoundingBox <video class="target1" height="270" width="480" controls>

5

Viz http://code.google.com/p/chromium/issues/detail?id=63055


Silvia Pfeiffer

HTML5 audio a video

Kniha "HTML5 – audio a video" je kompletní průvodce, který se zaměřuje na používání HTML5 prvků <audio> a <video> na webu. Dlouho předtím, než přišly na svět tyto multimediální prvky, mohl webový vývojář zařadit audio a video do webových stránek pouze prostřednictvím prvků <object> a <embed>, které na straně koncového uživatele vyžadovaly, aby měl v prohlížeči nainstalovány potřebné pluginy, například pro obsah ve formátu RealMedia, QuickTime nebo Windows Media. Později přišel Flash, který s postupem času – díky svým animačním a interaktivním schopnostem – začal být uživateli akceptován natolik, že se stal pro vydavatele nejvhodnějším řešením pro úlohy, jak publikovat video online. Technologii Flash používaly například projekty Videos od Google nebo YouTube. Vývoj v této oblasti se ovšem nezastavil a s příchodem standardu HTML5 byly představeny prvky <audio> a <video> umožňující nativní přehrávání (tj. bez nutnosti mít potřebný plugin) multimédií v prohlížečích. Protože tato kniha má podtitul "kompletní průvodce", nevěnuje se pouze těmto novým mediálním prvkům HTML5, ale snaží se komplexně obsáhnout i další související záležitosti – například kódování mediálních zdrojů či možnosti, které pro stylování videa nabízí CSS3. V kontextu práce s multimédii na webu se také věnuje popisu a používání API JavaScriptu, vektorovému formátu SVG, Canvas nebo vláknům Web Workers. Nechybí ani popis API pro HTML5 audio či problematika přístupnosti médií. V knize naleznete: x Úvod x Prvky <audio> a <video> x Stylování s CSS3 x API JavaScriptu x HTML5 média a SVG x HTML5 média a Canvas

ZONER software, a.s. významný producent softwaru v oblasti digitální fotogra¿e, poþítaþové gra¿ky a multimédií, poskytovatel internetových služeb, souvisejících s prezentací na internetu a e-komercí, a nakladatelství odborné literatury.

x HTML5 média a Web Workers x API pro HTML5 audio x Přístupnost médií a internacionalizace x Audio a video zařízení x Výhled a celkové shrnutí

O autorovi: Silvia Pfeiffer je expertka s mezinárodním renomé. Soustřeďuje se na oblast webových mediálních aplikací, na mediální standardy a usnadnění přístupu k médiím.

www.zoner.cz

Web doprovázející tuto knihu: http://www.html5videoguide.net

Zdrojové soubory ke stažení:

E N C Y K LO P E D I E

W E B D E S I G N E R A

Pod tímto logem vycházejí publikace určené pro každého, kdo se zajímá o tvorbu webových stránek. Od ryze praktických příruček a průvodců až po komplexní publikace o všem, co potřebuje webdesignér při každodenní práci. Na vydavatelský plán a výhody, které můžete získat, se informujte na adrese vydavatelství.

Zoner Press tel.: 532 190 883 e-mail: knihy@zoner.cz www.zonerpress.cz ZONER software, a.s., Nové sady 18, 602 00 Brno

© Foto: Jana Vališová

http://zonerpress.cz/download/html5-audio-a-video.rar

DOPORUČENÁ CENA: 379 KČ KATALOGOVÉ ČÍSLO: ZR1016

ISBN 978-80-7413-147-9

9 7 8 8 0 7 4 1 3 1 4 7 9


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.