共用方式為


如何新增音訊或視訊效果

[與此頁面 MFPlay 相關聯的功能是舊版功能。 它已被 MediaPlayerIMFMediaEngine 取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能使用 MediaPlayerIMFMediaEngine,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]

本主題描述如何搭配 MFPlay 使用音訊/視訊效果。

要在 MFPlay 中使用效果,必須將此效果實作為媒體基礎轉換器(MFT)。 如需詳細資訊,請參閱 媒體基礎轉換

若要新增音訊或視訊效果

  1. 建立一個用來實現該效果的 MFT 實例。
  2. 呼叫 IMFPMediaPlayer::InsertEffect

開啟媒體檔案以供播放之前,請先呼叫 InsertEffect MFPlay 會自動判斷效果是視訊效果還是音訊效果。

InsertEffect 方法也會採用 Boolean 參數,指定效果是選擇性還是必要。 如果 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 進行音訊/視訊播放