如何添加音频或视频效果
[与本页关联的功能 MFPlay 是一项旧版功能。 它已被 MediaPlayer 和 IMFMediaEngine 取代。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer 和 IMFMediaEngine,而不是 DirectShow。 如果可能,Microsoft 建议应重写使用旧 API 的现有代码,以尽可能地使用新的 API。]
本主题介绍如何在 MFPlay 中使用音频/视频效果。
若要为 MFPlay 使用效果,该效果必须作为媒体基础转换 (MFT) 实现。 有关详细信息,请参阅媒体基础转换。
添加音频或视频效果
- 创建实现效果的 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。
相关主题