次の方法で共有


オーディオまたはビデオ効果を追加する方法

[このページに関連付けられている機能である MFPlay はレガシ機能です。 これは MediaPlayer および IMFMediaEngine に置き換えられました。 これらの機能は、Windows 10 および Windows 11 用に最適化されています。 Microsoftでは、新しいコードで可能な限り DirectShow ではなく MediaPlayerIMFMediaEngine を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存コードを、新しい API を使用するように可能であれば書き直すことを提案しています。]

このトピックでは、MFPlay でオーディオ/ビデオ効果を使用する方法について説明します。

MFPlay で効果を使用するには、効果を Media Foundation 変換 (MFT) として実装する必要があります。 詳細については、「Media Foundation Transforms」を参照してください。

オーディオまたはビデオ効果を追加するには

  1. 効果を実装する MFT のインスタンスを作成します。
  2. IMFPMediaPlayer::InsertEffect を呼び出します。

再生用のメディア ファイルを開く前に、InsertEffect を呼び出します。 MFPlay は、効果がビデオ効果であるかオーディオ効果であるかを自動的に判断します。

InsertEffect メソッドは、効果が省略可能か必須かを指定するブール型パラメーターも受け取ります。 MFPlay が必要な効果を追加できない場合 (たとえば、ストリーム形式に互換性がないなど)、再生エラーが発生します。 ほとんどの場合、効果をオプションとして設定することをお勧めします。

MFPlay は、後続のすべての再生に効果を引き続き使用します。 効果を削除するには、IMFPMediaPlayer::RemoveEffect または IMFPMediaPlayer::RemoveAllEffects を呼び出します。

HRESULT AddPlaybackEffect(REFGUID clsid, IMFPMediaPlayer *pPlayer)
{
    IMFTransform *pMFT = NULL;

    HRESULT hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, 
        IID_PPV_ARGS(&pMFT));

    if (SUCCEEDED(hr))
    {
        hr = pPlayer->InsertEffect(pMFT, TRUE); // Set as optional.
    }

    SafeRelease(&pMFT);
    return hr;
}

要件

MFPlay には Windows 7 が必要です。

オーディオとビデオの再生に MFPlay を使用する