オーディオまたはビデオ効果を追加する方法
[このページに関連付けられている機能である MFPlay はレガシ機能です。 これは MediaPlayer および IMFMediaEngine に置き換えられました。 これらの機能は、Windows 10 および Windows 11 用に最適化されています。 Microsoftでは、新しいコードで可能な限り DirectShow ではなく MediaPlayer と IMFMediaEngine を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存コードを、新しい API を使用するように可能であれば書き直すことを提案しています。]
このトピックでは、MFPlay でオーディオ/ビデオ効果を使用する方法について説明します。
MFPlay で効果を使用するには、効果を Media Foundation 変換 (MFT) として実装する必要があります。 詳細については、「Media Foundation Transforms」を参照してください。
オーディオまたはビデオ効果を追加するには
- 効果を実装する MFT のインスタンスを作成します。
- 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 が必要です。
関連トピック