Přejít k navigační liště

Zdroják » Různé » Moonlight 1.0: od instalace k první aplikaci

Moonlight 1.0: od instalace k první aplikaci

Články Různé

Nedávno vyšla finální verze Moonlight 1.0. Provedeme vás její instalací včetně balíčku kodeků pro přehrávání videa a ukážeme vám, jak si můžete vytvořit jednoduchou aplikaci, která poběží v Moonlightu 1.0 i Silverlightu 1.0.

Moonlight 1.0 je implementace technologie Silverlight 1.0 uvolněná pod licencí LGPL. Jako volitelnou součást Moonlight 1.0 si můžete doinstalovat Microsoft Media Pack pro přehrávání multimédií, které využívají licencované kodeky, jako je například kodek VC-1.

Identické kodeky obsahuje i Silverlight 1.0, takže je zaručeno bezproblémové přehrávání multimédií na všech platformách, které Silverlight 1.0, resp. Moonlight 1.0 podporují.

Instalace Moonlightu

  1. Ověřte, zda je Moonlight podporován na vašem systému. Pokud není, můžete se zapojit do vývoje.
  2. Na www.go-mono.com/moon­light/ si vyberte architekturu vašeho systému, klikněte na ikonu pro stažení a povolte stažení rozšíření.
    Instalace Moonlight
  3. Až se rozšíření nainstaluje, restartujte Firefox. Na stránce Moonlight byste nyní měli vidět informaci, že máte nainstalovaný nejnovější Moonlight.
    Potvrzení instalace Moonlight
  4. Následně si můžete volitelně nainstalovat audio a video kodeky. Otevřete stránku tv.hokej.cz (použít můžete i jakoukoliv jinou stránku, která streamuje video).
  5. Klikněte na Spustit ukázku, otevře se dialog instalace kodeků, klikněte na Install Codecs.
    Instalace kodeků
  6. Potvrďte licenci a až se kodeky stáhnou, mělo by video po obnovení stránky začít fungovat.
    Video hokeje

Ukázka vytvoření aplikace pro Moonlight 1.0, resp. Silverlight 1.0

Vývoji aplikací pro technologii Silverlight 2.0 zde bylo věnováno již několik článků, avšak verze 1.0 je často opomíjena, i když ve své době přinesla dvě zajímavé vlastnosti: celoobrazovkový režim a přehrávání streamovaného videa ve Full HD (kodek VC-1) a s tím zdarma dostupnou službu Silverlight Streaming. V jednoduché ukázce si vytvoříme vlastní video archiv, který bude využívat právě službu Silverlight Streaming.

Služba Silverlight Streaming

Tuto službu najdete na adrese silverlight.li­ve.com, kde si můžete zdarma vytvořit účet. Budete mít k dispozici 10 GB místa pro vaše videa. Omezení základního účtu jsou následující:

  • Délka videa maximálně 10 minut
  • Velikost videa maximálně 105 MB
  • Maximální bit rate 1,4 Mbps
  • Maximální objem přenesených dat za měsíc 5 TB

Po přihlášení se na Silverlight Streaming můžete v sekci Manage Videos přidat video, které chcete streamovat. Pokud na server nahrajete video ve formátu, kterému Silverlight nerozumí, server video překóduje. Práci s aplikacemi na Silverlight Streaming se zde nebudeme věnovat.

Na stránce s detailní informací o videu najdete HTML kód pro vložení videa do stránky a URL video streamu.

HTML kód pro vložení videa

Zatím není možné k videu zřídit přístupová práva – všechna videa jsou veřejná. Kromě administrace videí pomocí webového administračního rozhraní můžete využít i Silverlight Streaming API, které je postaveno na protokolu WebDAV. K webovému rozhraní se budete přihlašovat pomocí Live ID, ale Silverlight Streaming API využívá k přihlašování Accout ID a Account Key, které najdete v sekci Manage Account.

Vytvoření klíče

Získání seznamu videí a jejich URL může v PHP vypadat následovně:

<?php
// zde vlozte vase AccountId a AccountKey z uctu na silverlight.live.com
$accountId = '';
$accountKey = '';
 
$baseUrl = "https://silverlight.services.live.com/$accountId/";
 
require_once "HTTP/Request.php";
$req = new HTTP_Request($baseUrl);
$req->setBasicAuth($accountId, $accountKey);
 
$req->sendRequest();
if($req->getResponseCode() == 200)
{
  $baseUrl = str_replace('https:', 'http:', $baseUrl);
  $fileSetXml = new SimpleXMLElement($req->getResponseBody());
 
  foreach ($fileSetXml->xpath('fileSet') as $fileSet)
  {
      // jmeno videa
      $fileSetName = $fileSet['name'];
  $videoUrl = $baseUrl . str_replace('+', '%20', urlencode($fileSetName)) . '/video.wmv';
echo "<a href='"$videoUrl"'>$fileSetName</a><br />";
  }
}
?> 

Videa jsou připravena na streamovacím serveru Silverlight Streaming a nyní se podívejme na základní principy aplikací pro Moonlight 1.0, resp. Silverlight 1.0. Hotovou aplikaci najdete ke stažení na konci článku.

Stručný úvod do vývoje aplikací pro Moonlight 1.0

Vývoj aplikací pro Moonlight 1.0 je v podstatě podobný s vývojem javascriptových aplikací, s tím rozdílem, že uživatelské rozhraní není popsáno pomocí HTML, ale pomocí jazyka XAML.

XAML je deklarativní jazyk založený na XML pro popis uživatelského rozhraní, který byl vytvořen pro potřeby Windows Presentation Foundation a byl uveden společně s .NET Frameworkem 3.0. Kromě popisu uživatelského rozhraní slouží i k popisu vektorové grafiky, animací, událostí a datových vazeb. Jako vývojový nástroj můžete tedy použít libovolný textový editor, který například používáte pro tvorbu webových stránek. Pro ladění aplikace pak můžete použít Firebug, neboť veškerá aplikační logika je vytvořena pomocí JavaScriptu.

Vazba XAML na JavaScript a zpět

Zeleně podtržený text je název javascriptové funkce, která se spustí při stisku levého tlačítka myši v ploše, kterou ohraničuje Canvas, a žlutý text je název objektu popsaného v XAML. Parametr sender je vaše aplikace, kde se k jednotlivým objektům dostanete pomocí metody findName. Objekty se pojmenovávají pomocí atributu  x:Name.

Ukázka kódu v XAML
Kód pro spuštení videa

Vložení aplikace do stránky

Aplikaci vložíte do stránky způsobem, který je popsán v článku Silverlight 2: vytváříme ukázkovou aplikaci. Jediný rozdíl je, že ve vlastnosti version uvedete 1.0 a parametr source se odkazuje přímo na výchozí XAML „stránku“. Vlastnosti width a height doporučuji nastavit na absolutní hodnotu, ne na procentuální, jinak bude mít Moonlight 1.0 problém aplikaci zobrazit.

Silverlight.createObjectEx({
  source: "Page.xaml",
  parentElement: document.getElementById("videoPlayer"),
  id: "SilverlightControl",
  properties: {
    width: "620",
    height: "550",
    version: "1.0"
}}); 

Kód ke stažení

Zdrojový kód celého příkladu si můžete stáhnout: Demo MoonlightVide­oServer (ZIP 5860 bytů)

Závěr

Jak vidíte, k vytvoření aplikace pro Moonlight 1.0, resp. Silverlight 1.0, vám stačí pouze textový editor a video si můžete nechat zdarma streamovat službou Silverlight Streaming. Finální verze Moonlightu 2.0 je plánována na září 2009.


Autorem článku je Štěpán Bechynský, specialista pro vývojové nástroje ve společnosti Microsoft v České republice. Informace pro vývojáře také najdete na blogu odborníků z českého Microsoftu.

Používáte Moonlight?

Komentáře

Subscribe
Upozornit na
guest
26 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
pravdokop

… ale nehodlám se učit další zbytečnou technologii uměle vytvořenou mamutí firmou, která potřebuje zaměstnat své tisíce programátorů.

mm

To je super, že jsi nám pověděl tak důležitou informaci. Snad se to nedozví pánové z MS, poněvadž by okamžitě zastavili vývoj. K čemu by to pak programovali, když to nebudeš používat, viď?

mirozbiro

Ja mam teda taky osypky z takovyhle novych standardu, uz vidim, ze mi zacnou chodit wordovske dokumnenty ulozene pod timhle shitem (nic osobniho, treba je to lepsi nez flash…co ja vim).

Ale je tu otazka do fora – co na to kluci berete?

Jiří Knesl

Pobavilo! :))

Jakákoliv firma má právo vyvíjet si jakoukoliv technologii, kterou bude chtít. Vůbec nezáleží na tom, zda je mamutí, nebo malá. Záleží jen na tom, zda je něčím zajímavá.

A Silverlight/Moonlight zajímavý bezpochyby je.

Microsoft samozřejmě nevydává tyto technologie proto, že by potřeboval zaměstnat tisíce programátorů. Tato firma to dělá s určitým podnikatelským záměrem, možná tím něco vydělá, možná ne. Zákazník na tom může jen vydělat.

Cartman

Ano, Microsoft predelava cely Java a Flash stack s podnikatelskym zamerem podstrcit svoji kopii existujici technologie jako predinstalovanou ve Windows a pokusit se udelat (kolikaty uz) vendor lock-in. Java a Flash jsou otverene technologie ktere nemaji patentova "uskali" a "minova pole", .NET/Silverlight nikoliv. Zatimco Flash a Java vypadaji a funguji stejne na vsech platformach, Mono (Linux) a .NET (Windows) jsou dva odlisny nekompatibilni svety.

Anonymní

No musím se ozvat proti Flash. Tak Flash bych nenazval otevřenou technologií. Dále taky flash nefunguje stejně na všech platformách. Viz slavná chyba linuxové verze – flash player na linuxu neumí korektně zpracovat znaky s diakritkou (jakýže se to píše rok? ascii kódování je už řekl bych překonané) :-)

Jiří Knesl

I kdyby to byla pravda, pak stejně Silverlight nabízí podporu mnoha programovacích jazyků, skvělou integraci do .NETu, do budoucna jistotu velké konkurence pro Flash a JavaFX (jestli JavaFX bude vůbec někdo používat). To znamená, že v ideálním případě se bude Flash vyvíjet rychleji, na čemž vydělají uživatelé i vývojáři.

Jinak Flash je v podstatě uzavřený a Java byla donedávna taky a kromě ruzných GNU fanatiků s tím nikdo neměl žádný problém.

Nechci tady vyvolávat flamewar, přidržme se tedy racionálního přínosu pro uživatele a vývojáře. Zdravá konkurence přínosna rozhodně je vždy a všude.

mirozbiro

Zakaznik na tom muze jen vydelat… echm, myslim, ze je tu jeste moznost, ze na tom zakaznik muze prodelat…. Podnikatelsky zamer nebyva takovy, aby zakaznik vydelal na firme, ale firma na zakaznikovi, ne?

Ano, muze nastat situace, kdy vydelaji oba. Jenze zmineny vendor lock-in jsme uz videli u MS tolikrat, ze ma duse zustava velmi skepticka… Spis nez otevreny format pro vsechny platformy vidim v budoucnosti kolizi v IE mezi predinstalovanym moonprdem a instalatorem flashe. A nejakou 'killer' aplikaci jako rozesilani smiliku v moonsilveru, a nasledny autoinstalacni dialog 'pokud nyni nezmacknete ano, nebudete jiz nikdy moct v klidu spat' u adresata.

Proc jsem jenom takovy pesimista…

Jiří Knesl

Navzdory existujícím "lock-in"-ům mají technologie MS nesporné výhody. MS rozhodně nepodtrhne vývojářské firmy, zejména v situaci, kdy se snaží proniknout s novou technologií.

My sice používáme Flash, ale vždy je co zlepšovat. A pokud MS trh "interaktivního předávání multimedií" rozvíří a povede to k rychlejšímu vývoji (třeba možnosti zapisovat kód do Flashe místo Action Scriptu v Ruby nebo Pythonu), tak na tom vyděláme.

Pokud to MS "zvoslí", ničemu to nevadí, aspoň bude jasné, že Flash nemá zatím konkurenci.

Navíc v této diskuzi vidím dost iracionální přístup: "Microsoft monopol = zlo; Adobe/Macromedia monopol = není problém"

Aleš Roubíček

Chlapče jseš úplně mimo mísu. Narozdíl od Javy nebo Flashe jsou základní části .netu standardizované a popsané tak, že si každý může udělat vlastní implementaci.

Tenhle článek je o Moonlightu, což je implementace Silverlightu od Novellu. Vidíš zde nějaký vendor lock-in?

pravdokop

Ale mně je úplně jedno, kdo to implementoval. Vymyslel to Microsoft, přesněji řečeno vykradl Javu a přidal k tomu hromadu svých proprietárních výmyslů. A protože je to mamutí firma, protlačil své řešení do světa bez ohledu na jeho kvalitu či skutečnou potřebnost.
Kdyby .NET a tudíž i Silverlight neexistoval, nikdo by si toho ani nevšimnul.
Podobné praktiky MS bohužel nepoužil poprvé a jistě ani naposledy. Naštěstí (jsa poučen trpkými zkušenostmi z let minulých) mu jeho WOW-pindy již nebaštím a zůstávám u přirozeně multiplatformních a časem prověřených technologií.

Aleš Roubíček

Kdyby ta technologie byla špatná, nikdy by se tak nerozšířila a nebyla adoptována širokou vývojářskou obcí i mimo MS platformu. Víš lidi, který dělaj v dotnetu nejsou nesvéprávní debilové, co automaticky sežerou všechno, co jim MS naservíruje.

To, že sis dokázal vybrat "přirozeně multiplatformní a časem prověřené technologie", je skvělé! Věř, že i ostatní si kodáží bez nucení vybrat ty své. Respektuj, že každý má jiné potřeby a může větší možnost výběru vítat.

FYI Java je stejně proprietární technologie vyvinutá ještě v mamutější firmě s názvem SUN Microsystems.

Standa

Každá technologie je uměle vytvořená. Nezmám technologii, která by vznikla přirozeně sama od sebe. A "mamutí" (např. MS co do počtu zaměstnanců určitě ne) firmy mají mamutí peníze na vývoj, což mi taky přijde normální.

lkopecky

jen skoda, ze je moonlight s FF3 nestabilni a po relativne kratky dobe sestreli prohlizec :(

jak je to s ostatnima prohlizecema? da se to v nich nejak rozhejbat? Jsem to zkousel nainstalovat do Mozilla Suite a nejak mi to nevzalo, ze skript nenalezen :(

Ilfirin

Pravda, nijak dlouhodobě jsem jej nepoužíval, ale mě teda nesestřelil lišku ani jednou. Na jaké stránce vám to padá? (třeba nelezu na ty "správné")

lubos kopecky

treba prave na tv.hokej.cz, po trech restartech prohlizece behem jedny tretiny sem se na to vybodnul a uz to okno ani neotviral, abych ji dokoukal, a sel zpet sledovat textovy prenosy…

Dano

Pokial som zistil o com vlastne je tak som bol uz aj na konci…

VfB

ale je možnost přehrávat přes SL videa i z vlastního serveru? pokud by byl uživatel nucen použít tem live server, tak by to byla hodně velká překážka pro používání SL, mít obsah svého webu na cizím (nedůvěryhodném) serveru, bez možností nastavení práv, tak to opravdu není to pravé ořechové

Aleš Roubíček

Samozžejmě že jde. Na IIS7 k tomu slouží třeba Media Pack, který umí třeba i media throttling. Jiné streamovací servery to budou jistě umožňovat také.

VfB

to víš, kdyby to bylo od jiné firmy tak se neptám, ale MS umí překvapit xD

petr.ocasek

Nic jako "SL videa" neexistuje. Pomocí SL přehrávejte jednoduše normální WMV (či WMV v kodeku VC-1) či až bude SL3 tak i h.264.

A pokud se bavíme o opravdovém streamingu, tak SL v kombinaci IIS7 přináší skvělou věc: Smooth Streaming, viz http://www.iis.net/extensions/SmoothStreaming.

grunt

No nevím, zda-li zrovna WMV(VC-1)/WMA + MP3 byla ta nejšťastnější volba pro streamování videa na internetu.

Sten

Otázkou je, jestli Silverlight podporuje vhodnější.

Aleš Roubíček

Je to problém, když jde o streamované video kodeky jsu součástí plug-inu? Tedy krom toho, že na nich pracovali inženýři v MS? BTW oblíbený DivX je původně leaknutá a cracknutá verze MS kodeku…

harvie

K čemu panebože je tenhle port? Naštěstí silverlight používá zanedbatelné minimum webů (ani samotný microsoft.com se tím nijak nepřikrášluje). Proč tedy zvyšovat popularitu takové věci ještě nasazením na desktopovém linuxu? Navíc linuxová verze je o jedno celé číslo pozadu (afaik moonlight je portem silverlight 1.0 a silverlight už je ve verzi 2).

Stačí, že mi všechny prohlížeče co mám dokáže 50x denně zamrazit flash.

Nechápu to stejně jako nechápu projekt mono. Proč raději nepřijít s něčím novým a rychlejším. S C# mám celkem otřesné zkušenosti (dokonce i v porovnání s javou) i na rychlejším stroji. Takže by mne znova zajímalo PROBOHA PROČ?

Lepší by bylo věnovat úsilí do posílání patchů vývojářům javy (pokud vím, už je "taky opensource"). A lobování za lepší flash na linuxu (případně rovnou otevření kódu). Pak se možná jednou povede, že si rychlejší počítače každý rok budou muset kupovat jenom windowsáci a že linuxový desktop nebude připomínat nefunkční bastl, tak pevně obalený kvaziporty mikrosoftích technologií, že půjde ke dnu ještě rychleji, než windows.

Microsoft to dělá schválně s tou "vstřícností" vůči linuxu…

mám dojem, že už i gnome má mono v závislostech. stejně jako mě v gnome štve HAL a D-BUS, který společně desktop nehorázně brzdí a dělají problémy s připojováním oddílů typů, na které v gnome zapomněli.

Jan Jelínek

Ono s tím Flashem to nebude tak snadné. Flash si díky své minulosti (historii vývoje) sebou nese spoustu nešvarů, které bude velice těžké odstranit. Jedním z důvodů vývoje Silverlightu je to, že zde MS cítí potenciál jak v kratší době dosáhnout v určitých oblastech daleko lepších výsledků.

A co se týče rozšířenosti Silverlightu. Věřte že v budoucnu budou uživatelé Linuxu za Moonlight rádi. V tuto chvíli není Silverlight rozšířen, v tom máte pravdu. Ale vzhledem k jeho možnostem se předpokládá jeho masivnější využití v budoucnu.

Silverlight je strašně mlaďoučká technologie na to aby nalezla široké použití a v tuto chvíli se uplatňuje pouze v specifických projektech (jelikož si prostě málokdo lajsne vytvořit svoje stránky v SL kvůli nízké rozšířenosti SL plug-inu) – takovými specifickými projekty jsou třeba oficiální přímé přenosy z olympiády či inaugurace Obamy.

Vím, že většina lidí má velký odpor k Silverlightu především proto že je od MS. Ale jsem si jistý že za pár let (1-3) až si tohle všechno "sedne", až se vytvoří přirozené povědomí a lidi začnou SL hodnotit podle možností které nabízí a ne podle toho od koho je.

Proto i ty Linuxový uživateli :) buď rád za projekty jako je Moonlight.

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.