Windows Media Player SDK の紹介
Denys Howard
Microsoft Corporation
September 2002
対象製品:
Microsoft(R) Windows Media(TM) Player
要約: Windows Media Player の外観と動作を変更する方法、Web または Windows ベースのアプリケーションに Windows Media Player を埋め込む方法、およびプラグイン オブジェクトを用いて Windows Media Player の機能を拡張する方法について説明します。この記事では、Windows Media Player Software Development Kit (SDK) を紹介し、これらの機能の使用方法について説明します。
Windows Media Player 9 シリーズ SDK のダウンロード
目次
はじめに
プレーヤー アプリケーションの作成
スキンの作成
プラグインの作成
詳細について
はじめに
Microsoft(R) Windows Media(TM) Player により、デジタル オーディオとビデオの優れた再生を体験できますが、追加情報を表示したり、ビデオやオーディオのコンテンツの再生方法を変更したりする作業が必要となる場合があります。開発コード名「コロナ」と呼ばれる Windows Media Player Software Development Kit (SDK) を使えば、スタンドアロンのプレーヤーの機能を拡張でき、また自分の専用アプリケーションに再生機能を埋め込むことができます。この記事では、SDK について詳細に説明し、以下に述べる 3 つの主要な機能について取り扱います。これらは、デジタル メディア プログラミングを初めて体験する意志決定者とプラグラマを対象としています。
プレーヤーを Web アプリケーションまたは Microsoft Windows(R) ベースのアプリケーションに埋め込むことができます。Windows Media Player は、モジュール構造のアーキテクチャであるので、必要な部分だけを利用することができます。特に、ユーザー インターフェイスは、オーディオやビデオのコンテンツを再生する機能から分離されています。再生機能を活用すると、アプリケーションにあるプレーヤーの既存のユーザー インターフェイスを使用するのか独自のユーザー インターフェイスを作成するのかどうかを決定できます。
Windows Media Player のスキン機能を使用すれば、プレーヤーを基礎として使用することにより、プレーヤーの外観を明確に印象づけたり、根本的に異なる機能を作成したりできます。
新しい対話型コントロールを追加したり、プレーヤーがレンダリングする前にオーディオやビデオのデータを変更したり、Windows Media ファイルから標準でないストリームをレンダリングしたりすることで、プレーヤーの中核機能を拡張するプラグインを作成することもできます。
この記事には、以下のトピックが含まれています。
- プレーヤー アプリケーションの作成
Web または Windows ベースのアプリケーションに Windows Media Player 機能を埋め込む方法について説明します。 - スキンの作成
Windows Media Player の外観と動作を変更するスキン機能について説明します。 - プラグインの作成
Windows Media Player の外観または動作を変更するプラグインについて説明します。これには、独自のコンテンツのレンダリング、オーディオまたはビデオ再生の変更、および対話型コントロールを通じたまったく新しい機能の提供が含まれています。
プレーヤー アプリケーションの作成
Windows Media Player には、ビデオやオーディオをレンダリングする Microsoft ActiveX(R) コントロールが含まれています。このコントロールは、Windows Media Player を実行するコンピュータ上で利用できます。Windows Media Player はスタンドアロンの技術ですが、ActiveX コントロールの形式でコンポーネント オブジェクト モデル (COM) サーバーも含まれています (プレーヤーと ActiveX コントロールとの間の関係は、Microsoft Internet Explorer と Explorer が提供する WebBrowser ActiveX コントロールとの間の関係と同じです)。
Windows Media Player ActiveX コントロールを使用するアプリケーションを作成する機会は 2 度あります。Web アプリケーションでコントロールを使用する場合、またはWindows ベースのアプリケーションでコントロールを使用する場合です。
Web アプリケーションで Windows Media Player を使用するには、そのページの HTML (ハイパーテキスト マークアップ言語) に OBJECT 要素を挿入します。OBJECT 要素にネストされる PARAM 要素を含めて、Windows Media Player ActiveX コントロールを表示するかどうか、装備する操作ボタン、およびコントロールのその他のプロパティを指定します。複数の OBJECT 要素を含めることで、1 つの Web ページ上に複数のコントロールを含めることができます。埋め込んだプレーヤーを完全にコントロールするには、そのページの HTML 内にスクリプト コードを記述します。
Windows ベースのアプリケーションで Windows Media Player を使用するには、コントロールの機能を提供するリファレンスを DLL (ダイナミック リンク ライブラリ) に挿入します。たとえば、 Microsoft Visual Basic(R) では、[コンポーネント] ダイアログ ボックスを使用して、「Windows Media Player」へのリファレンスを設定します。これは、Wmp.dll ファイル内にあるライブラリの表示名になります。
コントロールのプロパティを設定する方法は、使用するプログラミング環境によって異なります。たとえば、Visual Basic では、ユーザー設定の [プロパティ] ダイアログ ボックスを使用して設計時にプロパティを設定します。プロパティを設定または読み取るコードを記述して、実行時にメソッドを呼び出すこともできます。
エンド ユーザーは、 Windows Media Player がインストールされている、いずれの Windows ベースのコンピュータ上でもアプリケーションを実行できます。エンド ユーザーは、すでに慣れ親しんだユーザー インターフェイスを通じて、あるいは新たに作成したユーザー インターフェイスを通じて、オーディオを聞いたりビデオを見たりできます。
企業のプログラマは、プレーヤーが提供する再生機能を簡単に活用し、アプリケーション固有のビジネス要件のみに注力することができます。
スキンの作成
Windows Media Player のスキン技術を使用して、標準の動作を維持しながらプレーヤーの外観を変更できます。プレーヤーに付属しているスキンは、この機能の例です。これらのスキンを使えば、プレーヤーは非常に異なって見えますが、[再生] および [一時停止] ボタン、再生リストの表示、フル モードへの復帰などの基本機能はすべてそのまま維持されています。
スキン技術を使用すると、標準のプレーヤーとは外観や動作がまったく異なるアプリケーションを作成することもできます。スキンに任意のコントロールの一組を含めて、これらにユーザー設定の操作を割り当てることができます。ユーザー設定の操作を定義するには、JScript(R) コードを記述します。プログラミング プラットフォームとしてスキン技術を使用するのに Microsoft Visual C++(R) や Visual Basic を習得する必要はありません。
スキン定義ファイル、画像ファイル、および JScript ファイルは、.wmz ファイル名の拡張子を持つ 1 つのファイルに圧縮できます。これは、エンド ユーザーにスキンを配信するための標準の方法です。
ボーダーという特別なスキンを作成することもできます。これは、フル モード時の Windows Media Player の プレイ ビュー機能で表示されます。ボーダー、再生リスト ファイル、およびデジタル メディア ファイルを .wmd ファイル名の拡張子を持つ 1 つのダウンロード可能ファイルに圧縮できます。エンド ユーザーが .wmd ファイルへのリンクをクリックすると、Windows Media Player は、含まれているファイルを展開し、ボーダーを プレイ ビュー機能に適用し、再生リスト ファイルに指定されたコンテンツの再生を開始します。
このダウンロード可能ファイルにより、印象の強いエンターテイメントや教育体験をエンド ユーザーに配信することができます。この機能では、エンド ユーザー側でのインストールは必要なく、配信側で広範囲にわたるカスタマイズをサポートします。
プラグインの作成
Windows Media Player SDK には、さまざまな拡張性をサポートするインターフェイスが含まれています。DLL ファイルから与えられた COM オブジェクトを書き込むことで、プレーヤーの基本機能を拡張できます。
SDK には、サンプル プラグイン プロジェクトを作成できる Visual C++ 用のウィザードが含まれています。プロジェクトには、プラグインをコンパイルして登録するのに必要なコードおよびサンプル実装が含まれています。ウィザードを実行すると、プラグインで必要となる固有のコードを実装するためのプログラミング作業に集中することができます。
プラグインに用意された拡張性を用いると、デジタル メディア コンテンツを配信して操作するプラットフォームとして Windows Media Player を使用できます。各種のプラグインについて、以下のトピックで説明します。
視覚エフェクト プラグイン
視覚エフェクト プラグインにより、プレーヤーがフル モードまたはスキン モード (スキンに依存するモード) のときに、オーディオのみの再生中プレーヤーの プレイ ビュー機能に魅力的で動的な画像を追加できます。視覚エフェクトの外観と動的な動きは、再生されている音楽に基づいたもので、同期化されています。
視覚エフェクトは、COM オブジェクトとして実装します。多くの場合、プレーヤーは、現在選択されている視覚エフェクトに対するイベントを生成します。イベントには、次のデータが含まれています。
- 現在のオーディオの周波数と音量についての情報を含んだ TimedLevel 構造体
- 描画表面を指定するデバイス コンテキストへのハンドル
- 描画表面のサイズを定義する RECT 構造体
視覚エフェクト オブジェクトに、このイベントを処理する Render メソッドを実装します。
Windows GDI (グラフィック デバイス インターフェイス) 機能、Microsoft Direct3D(R) または DirectDraw(R) 機能、またはその他の技法を使用して、視覚エフェクトのためのグラフィックをプログラムできます。
Windows Media Player プラグイン ウィザードによって生成されるサンプル実装は、デバイス コンテキスト上で描画される GDI 機能への呼び出しの中で、オーディオの周波数と音量のデータを (TimedLevel 構造体で) 使用します。この実装を変更または置き換えることで、視覚エフェクトに必要な効果を生み出すことができます。
ウィザードは、自動登録の COM DLL をコンパイルするのに必要なコードのすべてを記述することもできます。視覚エフェクトの効果を確認するには、プロジェクトをコンパイルしてから Windows Media Player を実行し、新しい視覚エフェクトを選択するだけです。
ユーザー インターフェイス プラグイン
Windows Media Player は、エンド ユーザーにさまざまな情報と機能を提供します。ただし、ユーザー設定の対話性やユーザー設定のデータを提供することが必要な場合があります。これは、ユーザー インターフェイス プラグインを用いて実行できます。
Windows Media Player のフル モードは、プレイ ビュー機能や再生リスト ペインなど、多数の領域から構成されています。一部の領域は、既定では表示されませんが、エンド ユーザーによって表示することができます。この領域としては、プレイ ビュー機能の下部に表示できる設定領域と、再生リストの上部に表示できるメタデータ領域があります。
5 種類のユーザー インターフェイス プラグインがあります。このうちの 3 つは、プレーヤーの異なる領域に表示されます。各領域には、同時に 1 つのプラグインだけを有効にできます。
- 表示プラグイン
このプラグインは、プレイ ビュー機能の一部として表示され、視覚エフェクトが表示される場所になります。通常、広い領域であるため、表示プラグインは、対話性についての大量のデータや複雑なコントロールのセットを表示するための適切なソリューションになります。 - 設定プラグイン
このプラグインは、プレイ ビュー機能の一部として表示され、視覚エフェクトが表示される領域の下側になります。この領域には、グラフィック イコライザ、ビデオ設定、および Windows Media Player の再生や外観を設定するその他のコントロールが含まれています。設定プラグインは、類似のユーザー設定機能を追加するための適切なソリューションであり、プレーヤーの外観や動作をエンド ユーザーが設定できるようになります。 - メタデータ プラグイン
このプラグインは、再生リストの上部に表示されるより狭い領域です。メタデータ プラグインは、トラック、アルバム、または再生リストについての簡潔な情報を表示するための、あるいは簡単なコントロールやハイパーリンクのための適切なソリューションです。たとえば、Windows Media Player には、現在再生しているアルバムやアーティストに関する詳細な情報へのリンクとなるカバー アートを表示するメタデータ プラグインが含まれています。
Windows Media Player のウィンドウには表示されない 2 種類のユーザー インターフェイス プラグインがあります。
- ウィンドウ プラグイン
このプラグインは、別のウィンドウに表示されます。ウィンドウ プラグインは、エンド ユーザーがプレイ ビュー機能から別の機能に切り替えるとき、または別のプラグインをロードするときに、情報を表示したり、対話機能を提供したりするための適切なソリューションです。 - バックグラウンド プラグイン
このプラグインには、グラフィカル ユーザー インターフェイスはありません (ただし、他のプラグインと同様、プロパティ ページを提供することはできます)。バックグラウンド プラグインは、エンド ユーザーの入力を必要としない自動サービスのための適切なソリューションです。
Windows Media Player プラグイン ウィザードでは、各種のユーザー インターフェイス プラグインの実装サンプルを作成できます。この実装サンプルの細部を変更し、必要な機能を提供し、さらにプロジェクトをコンパイルすれば、プレーヤーを使用してプラグインをテストできます。ウィザードには、自動登録の COM DLL をコンパイルするのに必要なすべてのコードが含まれているので、ユーザー独自の要件についてのコード作成に集中することができます。
DSP プラグイン
DSP (デジタル信号処理) プラグインは、再生中にデジタル メディア ストリームを変更します。DSP プラグインを用いると、カラー ビデオを白黒ビデオに変更したり、配色を逆にしてネガのような画像にしたりできます。オーディオにビブラートや残響効果を追加することもできます。プラグインは、デジタル メディア コンテンツを処理するときに、そのコンテンツの再生を変更します。DSP プラグインは視覚エフェクト プラグインと異なり、視覚的な出力を生成するための元の値としてデジタル オーディオ データを受信しますが、オーディオの再生そのものには影響を与えません。
Windows Media Player SDK の他に、書き込み DSP プラグインは、Microsoft DirectX(R) SDK を必要とします。このプラグインの明確な特長は、DirectX SDK が提供する IMediaObject インターフェイスを実装するということです。
エンド ユーザーのコンピュータに DSP プラグインがインストールされて有効になると、Windows Media Player はデータがレンダリングされる直前にオーディオとビデオのデータをこのプラグインに渡します。プレーヤーは、入力バッファと出力バッファの両方を割り当てて、両方のバッファにプラグインをアクセスさせます。さまざまな IMediaObject インターフェイスのメソッドを実装して入力バッファからデータを読み取り、プラグインにふさわしい方法でこのデータを処理し、変更したデータを出力バッファに書き込む必要があります。Windows Media Player は出力バッファから取り出したデータをレンダリングします。
Windows Media Player プラグイン ウィザードを実行すると、DSP プラグインのサンプル実装を作成できます。サンプルは IMediaObject インターフェイスを実装し、DoProcessOutput というユーティリティ関数も実装します。多くの場合、ユーザーの DSP プラグイン独自のコードを用いてこのユーティリティ機能を変更するだけで、ウィザードに用意された他のコードをすべて活用できます。
レンダリング プラグイン
Windows Media フォーマット SDK を使用すると、任意のデータのストリームを Windows Media ファイルに追加できます。このストリームは、いずれの形式のデータも可能ですが、既定では Windows Media Player が認識しない形式です。
このようなストリームを含んだ Windows Media ファイルをレンダリングするには、次の 2 つの選択肢があります。
- ユーザー設定の再生アプリケーションを作成できます。この場合、独自のコンテンツをレンダリングするコードの他に、標準のオーディオ、ビデオ、およびスクリプト ストリームをレンダリングするコードと、さらにユーザー インターフェイスを表示するためのコードを含める必要があります。
- Windows Media Player 用のレンダリング プラグインを作成できます。この場合、同様に独自のコンテンツをレンダリングするコードを作成する必要がありますが、本来備わっているプレーヤーの機能を活用して、サポートされているストリームをレンダリングし、エンド ユーザーがすでによく知っているユーザー インターフェイスを提供できます。
Windows Media Player プラグイン ウィザードは、レンダリング プラグインのサンプル実装を作成できます。サンプルは、レンダリング プラグインが必要とする多数のインターフェイスを実装し、また DoRendering というユーティリティ機能も実装します。ユーザー独自のストリームをレンダリングするためのコードを用いてこのユーティリティ機能を変更するだけで、ウィザードに用意された他のコードをすべて活用できます。
詳細について
プレーヤーのアプリケーション、スキン、またはプラグインを作成する方法の詳細については、Windows Media Technologies Web ページから Windows Media Player SDK をダウンロードしてください。
法律上の通知
本ソフトウェアは部分的に、Independent JPEG Group の研究成果を利用しています。
GIF decompression code, copyright 1990, David Koblas。この著作権表示がすべてのコピーに記載され、さらに著作権表示と許可表示の両方がサポート ドキュメントに記載される限り、いかなる目的であれ無償で、本ソフトウェアおよびその関連文書を使用、コピー、変更、および配布することを許可します。本ソフトウェアは「無保証」で提供されるものであり、明示または黙示を問わずいかなる保証もありません。