「YouTube」や「ニコニコ動画」のような多くの動画配信サービスでは、メディアの再生にFlashが利用されています。ネットワークを介した動画のストリーミング配信といえば、Real NetworksのReal VideoかMicrosoftのWindows Media、もしくはAppleのQuickTimeという時代もありましたが、配信サーバーのライセンス料や再生ソフトウェアのインストール実績などから、今日ではFlashが主流になりつつあります。

Flashが選択される理由には、多くのコンピュータにインストールされているという実績に加えて、単純なメディア再生機能だけではなくAction Scriptによるプログラムで双方向なコンテンツを実現できる点にあるでしょう。ニコニコ動画などは、まさに好例です。

Windows Mediaもまた、広く動画配信サービスに用いられているフォーマットですが、強くWindowsプラットフォームに依存する点が大きなデメリットとなっていました。Windows Mediaはデジタル著作権管理DRMによってコンテンツを保護できるためビジネスの動画配信で使われる傾向にあります。しかし、Mac OSなどの非Windowsユーザーが閲覧できないため配信者にとってビジネスの可能性を狭めてしまいます。Silverlightは、この問題を解決する新しい動画配信プラットフォームになるでしょう。

Silverlightは、誕生当初から動画配信に力を入れていました。DRMにも対応したWindows Mediaの再生が可能なので、Windows Media Playerを使わずにWebページにWindows Mediaを埋め込むことができます。加えて、SilverlightはMac OSでも動作するクロスプラットフォームなプラグインなのでWindows以外の環境でもWindows Mediaが再生できるようになります。オープンソースで開発されているLinux版のSilverlightであるMoonlightにも、Microsoftが技術協力してWindows Mediaに対応しています。

Silverlight内では、動画はMediaElementクラスのオブジェクトとして扱われます。

System.Windows.Controls.MediaElementクラス

public sealed class MediaElement : FrameworkElement
System.Object
  System.Windows.DependencyObject
    System.Windows.UIElement
      System.Windows.FrameworkElement
        System.Windows.Controls.MediaElement

MediaElementクラスはUIElementクラスから派生しているため、他のコントロールや図形と同じように動画をコンテンツとしてデザインに含めることができます。動画を回転させるも、半透明にして背景と合成するも自由です。

図01 半透明で重ね合わせた動画

上の図は、MediaElementオブジェクトを回転や傾斜させ、不透明度を表すOpacityプロパティを50%に設定して重ね合わせた状態です。動画をボタンやリスト項目上に表示するといったことも簡単にできます。

加えて、領域を塗りつぶすためのブラシの一種であるVideoBrushクラスは、動画を使って図形やテキストを塗りつぶします。このクラスはBrushクラスから派生する論理ブラシの一種です。VideoBrushクラスで再生する動画にはMediaElementを指定するため、ソースとなるMediaElementを通じて動画を制御することができます。

public sealed class VideoBrush : TileBrush
System.Object
  System.Windows.DependencyObject
    System.Windows.Media.Brush
      System.Windows.Media.TileBrush
        System.Windows.Media.VideoBrush

動画はUIElementの一種なので、GridクラスやCanvasクラスなどのパネルに貼り付けて他のコントロールと組み合わせられます。動画上に字幕のような形でテキストや図形を重ねることも簡単です。複雑なデザインの中に、デザイン要素として動画を組み込むこともできるため、ただ動画を再生をするプレイヤとして利用するだけではなく、動画を応用した双方向のコンテンツを実現できます。

図02 テキストや図形、コントロールを重ねる

上の図は、動画の上に標準ボタンや楕円形、テキストなどを重ねています。このようなデザインもXAMLで簡単に宣言できるため、特別なプログラムは必要ありません。ただし、ニコニコ動画のように動的にユーザーが入力したコメントや動画に対する評価などの情報を動画に重ね合わせるには、実行時にサーバーに問い合わせて得られた情報を用い、プログラムからインスタンスを生成する必要があります。応用すれば、コンテンツをさらに面白く見せる工夫ができます。

Silverlight 2で再生可能なメディアは、Windows Media Video、Windows Media Audio、そしてMP3だけですが、Silverlight 3ではビデオコーデックにH.264が、オーディオコーデックにAACがサポートされるため、モバイルなども広く使われているMP4ファイルを再生できるようになります。Silverlight 3で再生可能なメディアについてはMSDNの「Supported Media Formats, Protocols, and Log Fields.aspx)」をご覧ください。さらに、開発者が任意のデコーダを開発できるようになります。公式でサポートされていないフォーマットのメディアも、デコーダを開発すれば再生できるようになるでしょう。

著者プロフィール:赤坂玲音

フリーランスのテクニカルライタ兼アプリケーション開発者。主にクライアント技術、プレゼンテーション技術が専門。2005年から現在まで「Microsoft MVP Visual C++」受賞。技術解説書を中心に著書多数。近著に『Silverlight入門』(翔泳社)などがある。