Share via


アルファ ブレンド (DirectShow)

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

[この API はサポートされていないため、今後変更または使用できない可能性があります。]

この記事では、 DirectShow Editing Services (DES) でのアルファ ブレンドについて説明します。

アルファは、ピクセルまたは画像の透明度を測定します。 32 ビットの非圧縮 RGB ビデオでは、アルファ チャネル (A) と 3 つのカラー コンポーネント (RGB) の 4 つのコンポーネントによって各ピクセルが定義されます。 アルファ値が 0 のピクセルは完全に透明です。 アルファ値が 255 のピクセルは不透明です。 これらの値の間で、ピクセルはさまざまな透明度を持ちます。

DirectShow では、32 ビット RGB ビデオ用に 2 種類のメディアが定義されています。

  • MEDIASUBTYPE_ARGB32: ビデオは、有効なアルファ チャネルを持つ 32 ビット RGB です。
  • MEDIASUBTYPE_RGB32: ピクセルは 32 ビットですが、アルファ チャネルは必ずしも有効ではありません。

DES でアルファ ブレンドを実行するには、ビデオ グループの圧縮されていないメディアの種類をMEDIASUBTYPE_ARGB32に設定します。 C++ で、 IAMTimelineGroup::SetMediaType メソッドを呼び出します。 XTL 形式では、group 要素の bitdepth 属性を 32 に設定すると、これも実現されます。

次に、アルファ チャネルを含むビデオ データが必要です。 いくつかのオプションがあります。

  • アルファ データを含む 32 ビット RGB ビデオが既にある AVI ファイルを使用できます。 現在、アルファは MPEG または Microsoft Windows Media Format (WMF) ソース ファイルではサポートされていません。
  • DES では、アルファ データを含む 32 ビット ビットマップ (.bmp) ファイルと Targa (.tga) ファイルがサポートされています。
  • アルファを使用して 32 ビット RGB データを作成するカスタム ソース フィルターを作成できます。 出力メディアの種類は MEDIASUBTYPE_ARGB32する必要があります。 フィルターは、タイムラインソース オブジェクトのサブオブジェクトとして使用します。

ビデオ ソースにアルファがない場合は、アルファ データを作成する効果を使用できます。 アルファ セッター効果は、イメージ全体のアルファ チャネルを定数値に設定します。 アルファを時間の経過と共に変化させるには、アルファ セッター効果を使用して IPropertySetter インターフェイスを使用します。 グループの圧縮されていないメディアの種類が MEDIASUBTYPE_ARGB32されている限り、元のソースは 32 ビットである必要はありません。

最後に、アルファ ブレンドを実行する効果または画面切り替えにビデオを渡します。 コンポジター画面切り替えではアルファ ブレンドが実行され、キー遷移はアルファ値でキーを設定できます。

次のサンプル XTL プロジェクトでは、アルファ ブレンドが実行されます。

<timeline>
<group type="video" bitdepth="32" width="320" height="240">
<track>
  <clip start="0" stop="6" src="c:\Example.avi" />
</track>
<track>
  <clip start="0" stop="6" src="c:\Example2.avi">
    <!-- Alpha Setter effect. -->
    <effect clsid="{506D89AE-909A-44f7-9444-ABD575896E35}" start="0" stop="6">
      <param name="alpha" value="255">
        <linear time="6" value="0" />
      </param>
    </effect>
  </clip>
  <!-- Key transition, with alpha keying. -->
  <transition clsid="{C5B19592-145E-11d3-9F04-006008039E37}" start="0" stop="6">
    <param name="KeyType" value="3" />  
  </transition>
</track>
</group>
</timeline>

DirectShow Editing Services の使用