如何添加音频或视频效果

[与本页关联的功能 MFPlay 是一项旧版功能。 它已被 MediaPlayerIMFMediaEngine 取代。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngine,而不是 DirectShow。 如果可能,Microsoft 建议应重写使用旧 API 的现有代码,以尽可能地使用新的 API。]

本主题介绍如何在 MFPlay 中使用音频/视频效果。

若要为 MFPlay 使用效果,该效果必须作为媒体基础转换 (MFT) 实现。 有关详细信息,请参阅媒体基础转换

添加音频或视频效果

  1. 创建实现效果的 MFT 实例。
  2. 调用 IMFPMediaPlayer::InsertEffect

调用 InsertEffect,然后打开媒体文件进行播放。 MFPlay 会自动确定效果是视频效果还是音频效果。

InsertEffect 方法还采用一个布尔参数,该参数指定效果是可选还是必需。 如果 MFPlay 无法添加所需的效果(例如,因为流格式不兼容),则会发生播放错误。 在大多数情况下,最好将效果设置为可选。

MFPlay 继续对所有后续播放使用该效果。 若要删除效果,请调用 IMFPMediaPlayer::RemoveEffectIMFPMediaPlayer::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