Microsoft hat mit Silverlight einen Flash/Flex-Rivalen mit durchaus ernstzunehmenden Ambitionen im Programm.

Grund genug, in diesem Beitrag einen Überblick zu geben, was Silverlight ist und alle wichtigen Fakten zu "Video in Silverlight" zusammenzufassen.

Allgemeines zu Silverlight

Silverlight-Plugin

Silverlight ist wie Flash ein Browser-Plugin. Das Plugin gibt es für Windows und Mac (Intel + PPC), die Features sind für beide Plattformen identisch. Alle wichtigen Browser werden bedient (Firefox, Internet Explorer, Safari). Microsoft und Novell arbeiten auch an einer Linux-Variante, die jedoch nicht Silverlight sondern "Moonlight" heißt.

Microsoft selbst beschreibt Silverlight als "cross-browser, cross-platform, and cross-device plug-in for delivering the next generation of media experiences and rich interactive applications for the Web."

Wichtig zu erwähnen ist noch, das Silverlight keinerlei andere Plugins (wie z.B. Windows Media Player) benötigt oder voraussetzt.

Wer prüfen möchte, ob er Silverlight bereits installiert hat (bzw. welche Version), kann dies hier tun: www.video-flash.de/playerversions/. Dort findet sich auch der Download-Link zur Installation.

Design und Programmierung von Silverlight-Programmen

Die Benutzeroberflächen von Silverlight liegen in der Beschreibungssprache XAML vor, einem XML-Format. Man kann also die Seitenelemente per XML-Code (vergleichbar Flex) selbst schreiben oder den Code von einem Grafikprogramme (z.B. Microsoft Expression Blend) erstellen lassen.

Hier ein Beispiel, wie ein kleiner blauer Kreis - zuerst in XAML, danach in der grafischen Ansicht von Blend:

XML:
  1. x:Class="MyFirstApp.Page"
  2.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4.     Width="400" Height="300"
  5.     Loaded="UserControl_Loaded"        >
  6.     x:Name="LayoutRoot" Background="#333333">
  7.         x:Name="ball" Width="34" Height="34"
  8.                  Fill="#FF3360FF" Stroke="White" Canvas.Left="33" Canvas.Top="31" RenderTransformOrigin="-3.79999995231628,-0.400000005960464" />
  9.     >
  10. >

blend-xaml

Die Interaktivität wird in Silverlight 1.0 mit JavaScript implementiert. Silverlight 2 bietet zusätzlich auch Alternativen wie Visual Basic oder C# (alle .NET Sprachen). Zum Entwickeln kann man das Visual Studio verwenden. Version 2.0 von Silverlight, die sich zurzeit noch in der Betaphase befindet, ist vollständig rückwärtskompatibel zur ersten Version.

Eine Silverlight-Anwendung besteht in der Regel aus den Files Silverlight.js und CreateSilverlight.js, die wie SWFObject bei Flash dafür sorgen, dass der Silverlight-Content in HTML eingebettet wird. Des Weiteren gehören die Benutzeroberfläche im XAML-Format und die Programmlogik dazu.

Hier der Screenshot eines Video-Players:

silverlight-player

Video und Audio in Silverlight

Video-Codecs

Grundsätzlich können mit Silverlight verschiedene Varianten des bekannten Windows Media Video Formats (WMV) abgespielt werden. Dies funktioniert wie bereits erwähnt sowohl auf Windows als auch auf dem Mac.

In Silverlight werden folgende Videocodecs unterstützt:

  • Windows Media Video 7 (WMV1)
  • Windows Media Video 8 (WMV2)
  • Windows Media Video 9 / VC1 (WMV3, WMVA, WMVC1)

Die beiden Codecs Windows Media 7 und 8 werden im wesentlichen deshalb unterstützt, damit bereits vorhandener (alter) Content mit Silverlight abgespielt werden kann. Windows Media 7 ist beispielsweise von 1999 und basiert auf MPEG-4 Part 2 (wie z.B. die ursprüngliche DivX-Version).

Beim Encoding speziell für Silverlight sollte man VC-1 bzw. Windows Media Video 9 (WMV 9) wählen. Windows Media Video 9 und VC-1 sind unter dem Strich nur verschiedene Namen für die gleiche Technologie. VC-1 ist verabschiedete Bezeichnung des Codecs, wie er z.B. von der HD-DVD und von Blu-ray unterstützt wird. Windows Media Video 9 wird der Codec im direkten Microsoft-Umfeld genannt.

Es gibt drei Profile von WMV 9, die mit Silverlight kompatibel sind:

  • WMV 9 bzw. VC-1 (Simple Profile)
  • WMV 9 bzw. VC-1 (Main Profile)
  • WMV 9 bzw. VC-1 (Advanced Profile)

Die ersten beiden Profile (Simple und Main) wurden mit dem Windows Media Player 9 eingeführt. Das dritte Profile (Advanced / WVC1) gibt es seit Version 11 des Media Players von Microsoft. Im Vergleich mit MPEG-2 benötigt dieser Codec bei gleicher Qualität ca. 1/3 der Datenrate. Beim Advanced Profile gilt es zu beachten, dass die Videos für Silverlight keine Halbbilder enthalten dürfen (also nicht "interlaced" sein dürfen).

Audio-Codecs

Silverlight spielt Sounddateien im Format Windows Media Audio ab. Der Ton darf sowohl als eigene Datei (.wma) wie auch als Audiocodec in WMV-Files vorliegen.

  • WMA 7: Windows Media Audio 7
  • WMA 8: Windows Media Audio 8
  • WMA 9: Windows Media Audio 9
  • MP3

Für Silverlight 1 kann man Windows Media Audio 9 einsetzen, das übrigens bis zur zweiten Version (WMA 2) von 1999 rückwärtskompatibel ist.

Silverlight 2 führt zusätzlich Windows Media Audio 10 Professional ein. Es handelt ebenfalls um einen verlustbehafteten Audiocodec. WMA 10 Pro ist bei niedrigen Bitraten (32 bis 96 Kbps) bis zu zweimal effizienter als das "klassische" WMA (9.2). "Audio is quite understandable at 32 Kbps, danceable at 48, an flawless at 64-96." Adressiert man also Silverlight 2 (und/oder den Windows Media Player 11), liegt man mit diesem Audiocodec richtig.

Außerdem kann Silverlight auch ganz gewöhnliche MP3-Dateien (.mp3) abspielen. Produziert man speziell für Silverlight, bietet jedoch vor allem WMA 10 Pro deutlich besser Qualität.

Generell ist noch zu erwähnen, dass Silverlight intern immer mit 44.1 KHz läuft. Somit sollte beim Encoding immer diesen Wert wählen, um unnötiges Resampling beim Abspielen zu vermeiden.

Ab Silverlight 3: MPEG-4/AVC bzw. H.264, AAC

Adobe setzt mit Flash auf MPEG-4 (beispielsweise .mp4) und kann Videos mit dem Videocodec H.264 und dem Audiocodec AAC (Advanced Audio Coding) abspielen. Dieses Format wird von Silverlight aktuell noch nicht unterstützt, befindet sich jedoch gerade in der Planung (siehe Microsoft Silverlight wird H.264 und AAC (MPEG-4) unterstützen!). Möchte man solche Videos mit Silverlight abspielen, muss man sie vorher umwandeln. Ansonsten heißt es warten bis Silverlight 3.

Nicht unterstützte Codecs

Der Vollständigkeit hier auch die Codecs und Eigenschaften, die nicht in Silverlight funktionieren:

  • Windows Media Screen
  • Windows Media Audio Professional
  • Windows Media Voice
  • Kombination von Windows Media Video und MP3 (also WMV-Video + MP3 als Audio)
  • Windows Media Videomit ungerade Auflösung, z.B. 127 x 135 (Auflösung muss durch zwei teilbar sein)
  • Interlaced Videos (Videos mit Halbbildverfahren)

Progressive Download und Streaming

Der Progressive Download, als das Herunterladen der Videos von einem gewöhnlichen Webserver, ist (wie in Flash) auch mit Silverlight möglich.

Das (echte) Streaming funktioniert mit Windows Media Services (WMS), die auf Server mit Windows Server 2003 und 2008 laufen. Selbstverständlich können damit neben On-Demand- auch Live-Streams ausgeliefert werden. Dies entspricht also quasi dem Flash-Pendant Flash Media Server (bzw. Wowza Server, Red5, etc.).

Um das Thema Silverlight und Streaming zu pushen, bietet Microsoft zurzeit kostenlose Streamingaccounts auf streaming.live.com (10 GB Speicherplatz, bis 5 TB Traffic, bis zu 10 Min Video, bis 1,4 Mbps Datenrate).

streaming-silverlight

Sonstiges

Abgrenzung: Silverlight vs. Windows Media Player

Das Silverlight-Plugin ist eine separate Komponente und ist unabhängig vom Windows Media Player. Während Silverlight auf das Web und den Webbrowser fokussiert ist, sorgt der Windows Media Player vor allem für das Abspielen von lokalen Videofiles und Support innerhalb von Applikationen.

Konkret bedeutet dies, dass Silverlight keinen installierten Windows Media Player voraussetzt – also unabhängig davon ist. Deshalb enthält Silverlight im Vergleich weniger Codecs, da es sich um ein schlankes Browserplugin handelt.

Fullscreen

Der Vollbildmodus ist vorhanden und funktioniert ebenso wie in Flash. Per Klick kann nahtlos in den Vollbildmodus gewechselt werden, ohne dass die Videowiedergabe unterbrochen oder wieder von vorne begonnen werden muss.

High Definition

Wie in Flash spielt auch das Thema High Definition (HD) in Silverlight eine Rolle. Dies ist wie so oft sehr stark von der Rechenleistung abhängig. Microsoft gibt an, dass Silverlight z.B. 720p-Videos mit einem 3-GHz- und/oder Dual-Core-Prozessor abspielt.

Encoder

Der hauseigene von Microsoft Encoder heißt Expression Encoder. Neben dem Encoding von Videofiles in Silverlight-kompatible Videos kann er auch für Livestreaming eingesetzt werden. Zudem sind auch Videoplayer-Templates enthalten, die zusammen mit dem fertigen Video direkt exportiert werden können.

expression-encoder

Des Weiteren gibt es natürlich zahlreiche weitere Encoder. Dazu gehören beispielsweise der kostenlos herunterladbare Windows Media Encoder, Sorenson Squeeze oder Adobe Premiere Pro CS3, um nur einige zu nennen.

Für OS X (Mac) gibt es das QuickTime-Plugin Flip4Mac, das mitterweile von Microsoft aufgekauft wurde. Hat man dieses installiert, kann man direkt aus QuickTime die entsprechenden Windows Media Videos erstellen. Seit neuestem sind auch die Silverlight-Player-Templates in Flip4Mac enthalten.

Weitere Beiträge zu Silverlight findet man unter dem Stichwort Silverlight hier im Blog. Zum Abschluss einige externe Links. Wer weitere interessante Infos hat, bitte einfach einen Kommentar hinterlassen.