ここでは、SilverlightのMediaElementオブジェクトで扱うことができるメディア形式に関して解説します。
MediaElementオブジェクトでは、ビデオコンテンツ、オーディオコンテンツのほかに、ストリーミングにも対応しており、それらのサポートに関して詳細に定義されております。
まずは、サポートするフォーマットとサポートしないフォーマット、それにサポートするプロトコルに関して以下に列挙します。
| ASX機能 | 詳細 | |
|---|---|---|
| PreviewMode属性 | ASXタグに存在。この属性を指定すると「AG_E_ASX_UNSUPPORTED_ATTRIBUTE」エラーが発生 | |
| BannerBar属性 | ASXタグに存在。この属性を指定すると「AG_E_ASX_UNSUPPORTED_ATTRIBUTE」エラーが発生 | |
| SkipIfRef属性 | ENTRYタグに存在。この属性を指定すると「AG_E_ASX_UNSUPPORTED_ATTRIBUTE」エラーが発生 | |
| PARAMタグ | このタグ要素を指定すると「AG_E_ASX_UNSUPPORTED_ELEMENT」エラーが発生 | |
| REPEATタグ | このタグ要素を指定すると「AG_E_ASX_UNSUPPORTED_ELEMENT」エラーが発生 | |
| EVENTタグ | このタグ要素を指定すると「AG_E_ASX_UNSUPPORTED_ELEMENT」エラーが発生 | |
| STARTMARKERタグ | このタグ要素を指定すると「AG_E_ASX_UNSUPPORTED_ELEMENT」エラーが発生 | |
| ENDMARKERタグ | このタグ要素を指定すると「AG_E_ASX_UNSUPPORTED_ELEMENT」エラーが発生 | |
| 無効なコンテンツ | ASXタグが受け入れられないコンテンツを指定した場合、MediaFailedエラーが発生 | |
| 代替URL | ENTRYタグが複数のREF子要素を持つ場合、最初の1つのみを読み込む。最初の1つの読み込みが失敗した場合、WMPとは異なり、Silverlightでは次の要素を読み込まずにMediaFailedエラーが発生 | |
MediaElementオブジェクトでは、ダウンロードに加えて、Windows Mediaサーバからのストリーミングをサポートします。
例えば、メディアURIにMMSスキームを指定した場合、MediaElementオブジェクトは最初にファイルをストリームします。それが失敗した場合は、ファイルをダウンロードします。逆に、メディアURIにHTTPやHTTPSを指定した場合、最初にファイルをダウンロードし、失敗した場合はファイルをストリームします。
以下にMediaElementオブジェクトでサポートするプロトコルを列挙します。
JavaScriptアプリケーションやWindowsフォーム、ASP.NETなどの.NETアプリケーションには「イベント」と呼ばれる処理(イベントハンドラ)を定義できます。
「イベントハンドラ」とは、何かの動作をトリガとして実行される処理のことで、例えば、PCを操作する際のキーボード入力やマウス操作などの動作もすべてプログラムでイベントをハンドリングして、文字を入力したり、マウスカーソルを動かしたりしています。
Silverlightアプリケーションは、Webブラウザ上で画面として実行されるアプリケーションですので、当然「イベントハンドラ」を定義できます。ただし、この「イベントハンドラ」もすべてのことができるわけではなく、プログラム言語ごとにハンドリングできるイベントモデルが異なります。Silverlight 1.0におけるイベントモデルは表4のとおりです。
| イベントタイプ | イベント | 概要 | |
|---|---|---|---|
| プラグインサポートやオブジェクト生存期間 | OnError | Silverlightプラグインがランタイムエラーを起こした際に発生 | |
| OnFullScreenChange | SilverlightプラグインのFullScreenプロパティを変更した際に発生 | ||
| OnLoad | Silverlightプラグインがロードされた際に発生 | ||
| Loaded(UIElement上) | Silverlightコンテンツが解析された後、レンダリングされる前に発生 | ||
| ダウンローダーサポート | Completed | ダウンロードリクエストが完了した際に発生 | |
| DownloadProgressChanged | ダウンロードリクエストによってコンテンツがダウンロードされている間に発生 | ||
| フォーカス | GotFocus | オブジェクトがフォーカスを得た際に発生 | |
| LostFocus | オブジェクトからフォーカスが外れた際に発生 | ||
| イメージ(ImageやImageBrush) | ImageFailed | メディア関連のエラーが起こった際に発生 | |
| DownloadProgressChanged | DownloadProgressプロパティが変更された際に発生 | ||
| キーボード入力 | KeyDown | プラグインにフォーカスがある状態でキーが押された際に発生 | |
| KeyUp | プラグインにフォーカスがある状態でキーが解放された際に発生 | ||
| メディア | BufferingProgressChanged | BufferingProgressプロパティが変更した際に発生 | |
| Completed | ストーリーボードの再生が完了した際に発生 | ||
| CurrentStateChanged | CurrentStateプロパティの値が変更した際に発生 | ||
| DownloadProgressChanged | DownloadProgressプロパティが変更された際に発生 | ||
| MarkerReached | タイムラインマーカーがメディア再生中に接触した際に発生 | ||
| MediaEnded | MediaElementがオーディオやビデオの再生が完了した際に発生 | ||
| MediaFailed | メディア関連のエラーが起こった際に発生 | ||
| MediaOpened | メディアストリームが確認され、オープンされ、ヘッダーが読み込まれた際に発生 | ||
| マウス入力 | MouseEnter | マウスがオブジェクトの範囲内で押された際に発生 | |
| MouseLeave | マウスがオブジェクトの範囲内で解放された際に発生 | ||
| MouseLeftButtonDown | マウスの左ボタンが押された際に発生 | ||
| MouseLeftButtonUp | マウスの左ボタンが解放された際に発生 | ||
| MouseMove | マウスの座標位置が変更された際に発生 | ||
これらのイベントは、すべてのオブジェクト上で使用できるわけではなく、オブジェクトごとに使用可能なイベントが定義されております。それについては、本連載で紹介しているタグオブジェクトのリファレンスやSilverlight 1.0 SDKに付属されているヘルプドキュメントを参考にしてください。
次のページでは、さらにSilverlight 1.0におけるイベント処理について解説し、アプリケーション開発に欠かせないエラー処理について解説します。
Copyright © ITmedia, Inc. All Rights Reserved.