Share via


Wideo i Silverlight w praktyce - część 3

 

W ostatnim odcinku krótkiej serii (dla chętnych: część 1 i część 2), omawiającej wykorzystanie technologii Silverlight do odtwarzania materiałów multimedialnych skoncentruję się na meritum, czyli przygotowaniu samego odtwarzacza. Od ostatniego odcinka upłynęło kilka tygodni, w czasie których pojawiły się wersje testowe platformy (Silverlight 2.0 Beta 1) oraz związanych z nią narzędzi - Expression Studio. Poniższe propozycje uwzględniać więc będą nowe funkcjonalności, dotyczące w szczególności Expression Encodera 2.

 

Kontrolki Silverlight w Visual Studio - dla wygodnych programistów

Od pewnego czasu w ramach rozszerzeń ASP.NET  dostępna jest kontrolka Media. To najprostszy sposób na osadzenie gotowego odtwarzacza w ramach strony ASP.NET. Cała konfiguracja sprowadza się do wskazania źródła materiału (Url), oraz właściwości audio-wizualnych - natężenia głosu (opcje Volume i Mute) oraz wyglądu (Configure skin… ). Wraz z kontrolką dostarczane jest kilka gotowych, predefiniowanych skórek. Jest również możliwość wykorzystania w tym celu własnego projektu (zapisanego w formacie XAML):

 

 Uwaga: Nowszą, dystrybuowaną w ramach Silverlight 2 SDK oraz ASP.NET 3.5 Extensions odmianą tej kontrolki jest MediaPlayer.

 

Expression Encoder - dla wygodnych, niekoniecznie programistów

Jeśli nie chcemy wykorzystywać odtwarzacza Silverlight w środowisku ASP.NET, a zależy nam na szybkim przygotowaniu kodu HTML i JavaScript, który realizowałby funkcjonalność analogiczną do opisanych powyżej kontrolek, pomocnym narzędziem może okazać się Expression Encoder. Przygotowując materiał wideo (Uwaga: nie dotyczy to trybu live!), w zakładce Output możemy określić szablon odtwarzacza, który zostanie wygenerowany do podglądu wykonanej pracy. W efekcie uzyskamy kompletną stronę WWW - jedynym jej mankamentem jest jej ścisłe powiązanie z przygotowanym przed chwilą materiałem. Można to jednakże łatwo zmienić - wystarczy otworzyć katalog z wygenerowanym kodem JavaScript (patrz opcja Job Output > Directory) i zajrzeć do pliku StartPlayer.js. W definicji tablicy strCode znaleźć możemy wartość mediaSource, określającą lokalizację źródłowego materiału wideo, np.:

 

var strCode = 'this._playlist=[{ "mediaSource": "przykladowe_video.wmv", …

 

mediaSource w powyższym przykładzie wskazuje na lokalny plik, umieszczony w tym samym katalogu, co strona WWW. Nic nie stoi na przeszkodzie, aby  wartość ta określała dowolną inną lokalizację, przykładowo https://mójserwerwideo/live.

Jeśli podczas testów okaże się, że zmiana parametru mediaSource nie przyniosła właściwych rezultatów, należy upewnić się, że testujemy naszą stronę z wykorzystaniem serwera WWW. Dotyczy to w szczególności scenariusza, w którym nasze źródło skierowane jest do zewnętrznego zasobu (np. strumienia mms) - wystarczy rzucić okiem, czy pojawiający się w przeglądarce internetowej adres URL strony odtwarzacza zaczyna się przedrostkiem http lub https.

Aby osadzić tak przygotowany projekt na własnej stronie WWW należy w jej kodzie wstawić jedynie nastepujący blok (szczegóły znaleźć można w pliku Default.html):

 

<div id="divPlayer_0">  <script  type='text/javascript'>    var player = new StartPlayer_0();  </script></div> 

 

Ważną, choć trudną do zauważenia na pierwszy rzut oka  nowością w Expression Encoder 2 jest integracja z Expression Blend. Obok nazwy szablonu odtwarzacza znajduje się niewielki przycisk skrywający menu kontekstowe. Jedną z dostępnych opcji jest Edit copy in Expression Blend, która pozwala na uruchomienie, zmodyfikowanie i zapis bieżącej skórki w środowisku Blend:

  

Dla prawdziwych mężczyzn - Expression Blend

Największym wyzwaniem jest budowa odtwarzacza od podstaw samodzielnie. W tym celu pomocny będzie oczywiście Expression Blend, jednakże biorąc pod uwagę związany z tym zadaniem nakład pracy, taki scenariusz może mieć sens jedynie w przypadku bardzo specyficznych wymagań dotyczących funkcjonalności bądź wyglądu playera. W większości przypadków lepszym rozwiązaniem jest wykorzystanie jednego z "gotowców" (choćby wspomnianych powyżej szablonów w Expression Encoder) jako podstawy do dalszej rozbudowy i zmian. Zainteresowanych szczegółami odsyłam do artykułu Tima Heuera, o symptomatycznym tytule " Cheating at creating a silverlight media player ".