• TwitterRSS
  • Domů na Webylon
  • Kritika W3C
  • Kompatibilita, HTML 5, Historie
  • Rozhýbané formáty

    14. května 2012

    Před dávnými časy se lidé koukali na televizi a poctivě konzumovali omezenou nabídku pořadů. Nyní mají rychlý internet a jediné, co je může omezit, jsou technické záležitosti — zejména použitý formát videa.

    Jedním z hlavních taháků HTML 5 mají být mediální elementy <video> a <audio>. Potáhnou dobře?

    Špetka historie

    Snahy protlačit video na web jsou už dosti staré. Průkopníkem se v dubnu 1995 stala dnes již vyhaslá hvězda jménem RealPlayer.

    Prvním webovým prohlížečem, který si v éře hlemýždích modemových připojení troufl integrovat audiovizuální obsah přímo do HTML, byl Explorer 2 v listopadu 1995. Zavedl atribut dynsrc na elementu <img>, do něhož se zadávala adresa souboru s videem — pak se ignoroval src a místo obrázku se ukazovalo video. Skutečné živé video. Ve formátu AVI. Atributem controls šlo zapnout, aby se ukazovaly ovládací prvky.

    <img dynsrc="ziva-koala.avi" src="mrtva-koala.jpg" controls> Obrázek s ukázkou atributů dynsrc a controls a koaly v pradávné verzi Exploreru

    (Jelikož se mi nepovedlo chytit žádnou vlastní koalu, půjčil jsem si tu, kterou zachytil kolega O'Reilly.)

    Pěkné, že? Eukalyptové opojení si však mohla tenkrát vychutnat maximálně desetina brouzdalů. Všechny konkurenční prohlížeče zobrazovaly v nejlepším případě obyčejný obrázek. Další verze Exploreru byla dodávána s chytřejším přehrávačem, který dokázal přehrávat i lépe komprimované formáty.

    — Microsoft, Tisková zpráva k vydání betaverze Exploreru 3, květen 1996

    Přehrávač ve formě ActiveX prvku se vkládal do stránek pomocí dalšího nestandardního rozšíření HTML, které později prosáklo do W3C doporučení HTML 4.0: elementu <object>. Netscape tento element neznal, už měl vlastní systém pluginů NPAPI stavěný na <embed>u a majitelé dražší verze „Gold“ dostávali s trojkovým navigátorem i plugin LiveVideo.

    Další zajímavou oživující hračkou dodávanou s Explorerem 3 byla ActiveX komponenta FutureSplash, která umožňovala přehrávat vektorové animace. Ty bývaly díky dobré kompresi populárnější než datově objemná videa.

    První válka formátů

    Na přelomu tisíciletí jste mohli na webu potkávat videa speciálně enkódovaná pro tři různé přehrávače: Windows Media Player, Apple QuickTime a RealPlayer. Každý vyžadoval svůj formát. Publikování videí bylo tenkrát docela pracné, drahé a celkově nepohodlné. Průměrná rychlost internetových připojení ovšem pozvolna rostla.

    Pod slupkou QuickTimu běžel kodek od firmy Sorenson, se kterou se Apple koncem roku 2001 rozešel. Sorenson si proto našel nového kamaráda: výrobce Flashe, firmu Macromedia. Tím začal konec epochy „videa pouze pro vyvolené“. Díky již dříve vybudované silné tržní pozici a dobrému (jednotnému) API na obsluhu videa Flash celkem hravě převálcoval konkurenční formáty. Neuběhly ani tři roky a kdokoliv mohl publikovat své podnětné poznatky o slonech.

    Flash zdárně ukončil válku. Též si tím pojistil přežití v nelehkých časech, kdy tvůrci stránek začali důsledněji přemýšlet o přístupnosti a o jiných ideálech, se kterými si bohužel moc netykal.

    Mimoběžná standardizace

    Kdesi v pozadí první války formátů se krčila úsměv připomínající vize W3C: SMIL. Formáty a kodeky moc neřešila… a nikoho moc nezajímala.

    <DOCTYPE html PUBLIC "-//W3C//DTD XHTML+SMIL//EN" "http://www.w3.org/2001/SMIL20/WD/xhtmlplussmil.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:smil="http://www.w3.org/2001/SMIL20"> <head> <title>Jaký mají sloni chobot?</title> </head> <body> <p>Video z analýzy chobotů:</p> <smil:video src="zoo.mpeg"> Tvůj prohlížeč nepodporuje element &lt;video> ze jmenného prostoru http://www.w3.org/2001/SMIL20. Rozluč se buď s ním, či s námi. </smil:video> </body> </html>

    O SMIL projevili výrobci prohlížečů pramalý zájem. Akorát v Exploreru (ve verzi 5.5 až 8) dokázal běžet nestandardní a na používání docela krkolomný předchůdce SMILu jménem HTML+TIME, který k přehrávání videa interně využíval windowsí Media Player.

    Později se kormidla vývoje chopili realisté z WHAT WG, kteří se rozhodli probudit oficiálně uspané HTML.

    Ahoj,

    Opera má interní experimentální buildy s implementací elementu <video>.

    […]

    V příloze je návrh specifikace elementu a jak můžete vidět, jsou v něm stále otevřené otázky. Element i se svým API jsou samozřejmě otevřené debatě. Nenutíme to světu ;-)

    — Anne van Kesteren, Mailing list WHAT WG, únor 2007

    Návrh specifikace tenkrát kodeky také neřešil.

    Jablko sváru

    Jako blesk z čistého nebe přišlo 4. března 2008 prohlášení Steva Jobse, že Flash nevpustí na iPhony. Takový webový výstřel z Aurory. Z pohledu webového videa obtížně obhajitelný:

    „Flash je náročný na procesor.“
    Vybalení videa z FLV pouzdra a jeho přehrávání nejsou náročnější než práce s jinými formáty. Apple si mohl dupnout, že dovolí jen omezenou podmnožinu tříd z Flashe.
    „Flash má potíže s bezpečností.“
    Opět — mohl vzniknout Flash UltraLite Player určený jen na přehrávání videa, bez riskantních síťových blbinek.
    „Flash není otevřený.“
    Video v MPEGu také ne. Vztah Applu k otevřeným mediálním formátům je spíš chladný. Chcete-li v iPhonech plynulou animaci, musíte použít Applem patentované CSS vlastnosti.
    „Flash nepočítá s dotykovým ovládáním.“
    Na spouštění videa není zapotřebí složitější logika, než převod dotyk = klik.

    Po dvou letech zkusil tento krok obhájit sám velký šéf firmy:

    Z bolestivé zkušenosti víme, že umožnění vstupu softwarové vrstvy třetí strany mezi platformu a vývojáře nakonec vyústí v podřadné aplikace a zbrzdí vymoženosti a rozvoj platformy. Stanou-li se vývojáři závislí na vývojářských knihovnách a nástrojích třetí strany, mohou využívat vylepšení platformy teprve tehdy, když se třetí strana rozhodne zavést tyto novinky. Nemůžeme být vydáni na milost třetí straně rozhodující, zda a kdy budou naše vylepšení dostupná naším vývojářům.

    Ještě horší stav je, pokud třetí strana vytváří multiplatformní vývojářský nástroj. Třetí strana nemusí zavádět zlepšováky z jedné platformy, dokud nejsou dostupné na všech jejích dostupných platformách. Tudíž vývojáři můžou přistupovat pouze k nejmenší společné množině vlastností. Opět, nemůžeme přijmout důsledek, že je vývojářům znemožněno využívat naše inovace a vylepšení jen proto, že nejsou dostupné na platformách konkurence.

    Flash je multiplatformní nástroj. Není cílem Adobe pomáhat vývojářům psát nejlepší iPhonové, iPodové a iPadové aplikace. Jejich cílem je pomoct vývojářům psát multiplatformní aplikace. Adobe doposud přijímalo vymoženosti platforem Applu bolestivě pomalu.

    […]

    Nové otevřené standardy stvořené v mobilní éře, jako je HTML 5, zvítězí na mobilních zařízeních (a na PC také).

    — Steve Jobs, Úvahy o Flashi, duben 2010

    Čert vem aplikace, flashová videa se užívají jako součást webových stránek určených pro všechny. Na webu není nejmenší společná množina vlastností strašákem, ale každodenním chlebem, a multiplatformnost patří mezi přirozené cíle. Majitelé iPhonů nemají ideologické, ani technické důvody k tomu, aby flashová videa neviděli. Apple narušil příměří. Je jedno, jak to zkusíte zaobalit — pro dodavatele videoobsahu vyrobil problém.

    Jako kompenzaci za způsobené škody nabídl dobrý pocit ze souladu s moderním W3C standardem. Stačí to? Důležitým marketingovým tahem v obhajobě bylo posunout úhel pohledu veřejnosti, aby nevnímala válku videoformátů, ale mohutnější ideologický spor Flash versus HTML 5, respektive Flash versus úplně všechno nové, co se prohlížeče učí. Jak krásně černobílé…

    Druhá válka formátů

    Nyní můžete na webu potkávat videa speciálně enkódovaná do tří různých formátů: Flash Video (s kodekem Sorenson), MPEG 4 (s kodekem H.264) a OGG (s kodekem Theora).

    V HTML 5 není přikázán ani doporučen žádný konkrétní formát a výrobci prohlížečů zatím jasně deklarují, že se na žádném neshodnou. Mozilla bojkotuje MPEG, Microsoft a Apple OGG. Google si peče vlastní formát WebM a už rok vyhrožuje, že také přestane podporovat MPEG 4 (nejspíš vyčkává, až bude mít silnější pozici). Mezitím Adobe pomalu rezignuje. Flash se sice naučil MPEG 4, ale v oblasti Androidů vyklízí pole a do telefonních/tabletových verzí Windowsu mu Microsoft přibouchává dveře s obdobně slavnostní fanfárou jako Apple.

    Lze považovat za úspěch, že se přední tahouni dohodli na názvu elementu, na atributech a na API, ovšem to je asi tak všechno, co se jim povedlo. Bez jednotného formátu videa je <video> bezobsažnou obálkou a nebýt umělého nátlaku ze strany telefonů, neobstálo by v konkurenci s homogenním Flashem.

    Zkuste se všít do kůže obyčejného tvůrce stránky a představit si, kolik kroků teď musíte udělat, abyste dostali do stránky vlastní video umístěné na vlastním serveru, které dokáže bez potíží přehrát 99 % lidí. Hotovo? Otravné, že? Proč to nemůže být jednodušší?

    Z této druhé války nejvíce těží ti, kdo dokážou nekompatibility automaticky zarovnávat: videohostingy. Proč se vůbec trápit se standardy a nestandardy, když to za vás vyřeší YouTube, hm? Ale jaký smysl pak má existence standardu?

    Co by kdyby

    Zkuste si se mnou menší myšlenkové cvičení:

    Kdyby Apple umožnil vznik Flashe UltraLite pro iPhone…
    Problém s videem by neexistoval. Po vyjasnění sporů o formáty a kodeky by svět plynule přešel na <video>, protože Flash je opravdu zlá potvůrka (lidi, co přes něj vkládají video, netouží po wow-efektech). Výrobci prohlížečů by se museli dohodnout na skutečném standardu, pokud by chtěli regulérně porazit Adobe.
    Kdyby HTML 5 nevzniklo…
    Apple by použil <object> z HTML 4. Specifikace nenutila prohlížeče používat na <object>y externí pluginy, ani jim nezakazovala přidružit k objektům specializované API v DOMu. Takový krok by byl hůře obhajitelný, než odvolání na „nové otevřené standardy z mobilní éry“.
    Kdyby neexistovala žádná standardizovaná možnost vložení videa…
    Podobně, jako ostatní před ním, by Apple pravděpodobně zkusil nějakou vlastní vymyslet a prosadit. Podobně, jako to zkouší u streamování videa, které současná specifikace elementu <video> v HTML 5 výslovně ignoruje.

    Bez asistence W3C by bylo mnohem obtížnější de facto standard zbourat. De jure standard by měl sjednocovat, měl by sloužit jako mírová smlouva, nikoliv zbraň.

    Element <video> je sice vymyšlený chytře, ale je to spíš pomník tvrdohlavosti. V konečném důsledku je úplně jedno, že vznikl.