メディアの拡張機能の使用 (HTML)

[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]

このトピックでは、メディアの拡張機能について、および Windows ランタイム アプリでメディアの拡張機能を使う方法について説明します。

はじめに

メディアの拡張機能は、Windows ランタイム アプリのメディア パイプラインに機能を追加します。 追加できる拡張機能には、オーディオ エフェクト、ビデオ特殊効果、キャプチャ効果、コード変換、デジタル著作権管理 (DRM)、新しいデコーダーとエンコーダーのサポート、カスタム キャプチャ シンクなどがあります。 VideoStabilization 効果や DRM MediaProtectionManager など、一部の拡張機能はシステムに組み込まれています。 システムに組み込まれていない機能は、カスタムのメディア拡張機能を使って追加できます。

カスタムのメディアの拡張機能を使う詳しい例については、メディア拡張機能のサンプルをご覧ください。 カスタムのビデオ グレースケール効果を作って有効にする方法、カスタム デコーダー、および組み込みの VideoStabilization 効果を使う方法が示されています。

メディア拡張機能を使う別の例として、リアルタイムの通信のサンプルがあります。

メディア パイプライン、効果と拡張機能の追加/削除

メディア ファンデーション パイプラインは、Media Sourceメディア ファンデーション トランスフォーム (ビデオ特殊効果、エンコーダーとデコーダーなど)、Media Sink で構成されます。Windows ストア アプリに効果と拡張機能を追加する方法は多数あります。 MediaExtensionManager により、メディア ソース、エンコーダー、デコーダーを置き換えることができます。再生、キャプチャ、コード変換の各オブジェクトにメソッドを適用することにより、効果の追加や削除ができるようになります。 MediaCapture クラスを使うと、カスタム シンクを追加できます。

オーディオ再生オブジェクトとビデオ再生オブジェクトに対する効果の追加と削除の方法は、使うプログラミング言語によって異なります。

JavaScript を使った Windows ランタイム アプリでは、msInsertVideoEffectmsInsertAudioEffectmsClearEffects を使います。これらのメソッドは、HTML5 の audio タグと video タグで公開されています。

C#、または Visual Basic を使った Windows ランタイム アプリには、MediaElement.AddAudioEffectMediaElement.AddVideoEffectRemoveAllEffects を使います。

コード変換の効果の追加と削除を行うには、MediaTranscoder.AddVideoEffectMediaTranscoder.AddAudioEffectMediaTranscoder.ClearEffects を使います。

メディア キャプチャの効果の追加と削除を行うには、MediaCapture.AddEffectAsyncMediaCapture.ClearEffectsAsync を使います。

スキーム ハンドラー、バイト ストリーム ハンドラー、オーディオ エンコーダー、オーディオ デコーダー、ビデオ エンコーダー、ビデオ デコーダーを登録するには、MediaExtensionManager を使います。

メディア キャプチャにカスタム シンクを追加するには、MediaCapture.StartRecordToCustomSinkAsyncMediaCapture.StartPreviewToCustomSinkAsync を使います。

DRM は、MediaProtectionManager でサポートされています。

組み込みの拡張機能

Windows ランタイムには、ハンドヘルド カメラからキャプチャしたビデオなどで手ブレを補正するための効果が組み込まれています。

ビデオ手ブレ補正を追加する方法」では、JavaScript を使った Windows ランタイム アプリで VideoStabilization 効果を使う方法について説明します。 メディア拡張機能のサンプルでも、VideoStabilization 効果を使う方法について説明しています。

カスタムの拡張機能

カスタムのメディア拡張機能を使って、メディア パイプラインに新機能を追加できます。 たとえば、ビデオをグレースケールに変換するカスタムのビデオ特殊効果を作ることができます (メディア拡張機能のサンプルをご覧ください)。 また、カスタム拡張機能を作って、システムでネイティブにサポートされていないビデオ形式とオーディオ形式のサポートを追加することもできます。

カスタム拡張機能の作成は、2 つの部分で構成されます。1 つはメディア ファンデーション コンポーネントを書き込むこと、もう 1 つはこのコンポーネントを Windows ランタイムのメディア拡張機能オブジェクトで折り返すことです。 さまざまなカスタムのメディア拡張機能を作る詳しい例については、メディア拡張機能のサンプルをご覧ください。

メディア拡張機能は、コンポーネント オブジェクト モデル (COM) インターフェイスおよび Windows ランタイム インターフェイスの両方を実装するハイブリッド オブジェクトで構成されます。COM インターフェイスは Microsoft メディア ファンデーション パイプラインとやり取りします。Windows ランタイム インターフェイスは、コンポーネントをアクティブ化し、Windows ストア アプリとやり取りします。

ほとんどの場合、Visual C++ コンポーネント拡張機能 (C++/CX) を使って Windows ランタイムとやり取りすることをお勧めします。ただし、メディア拡張機能のように、COM インターフェイスと Windows ランタイム インターフェイスの両方を実装するハイブリッド コンポーネントの場合は、これは不可能です。C++/CX では、Windows ランタイム オブジェクトしか作ることはできません。そのため、ハイブリッド オブジェクトの場合は、Windows ランタイム C++ テンプレート ライブラリを使って Windows ランタイムとやり取りすることをお勧めします。 Windows ランタイム C++ テンプレート ライブラリでは、COM インターフェイスの実装に対するサポートが制限されている点に注意してください。

カスタム拡張機能は、その機能が作られ、登録されているアプリケーションでのみ使うことができる点に注意してください。 他のアプリケーションでは使うことができません。

Hh700365.wedge(ja-jp,WIN.10).gifカスタムの効果を作る大まかな手順

  1. ネイティブのメディア ファンデーション拡張機能を作り、IMediaExtension を実装します。
  2. 拡張機能を登録してアクティブ化します。
  3. アプリケーションでメディア パイプラインに拡張機能を追加します。

Windows ストア アプリのメディア ファンデーション メディア拡張機能の作成について詳しくは、WRL とメディア ファンデーションを使った Windows ランタイムのアプリの作成に関するチュートリアルメディア拡張機能のサンプルに関するページをご覧ください。

関連トピック

メディア拡張機能のサンプル

メディアのコード変換のサンプル

リアルタイムの通信のサンプル

WRL とメディア ファンデーションを使った Windows ストア アプリの作成に関するチュートリアル

メディア ファンデーション トランスフォーム

<video> タグの効果を有効にする方法

ビデオ手ブレ補正を追加する方法