共用方式為


影片預覽

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

本主題描述如何使用 MFPlay 從視訊相機預覽視訊。

MFPlay 提供從擷取裝置預覽影片的最簡單方式,Microsoft Media Foundation。 如果下列條件全部成立,您應該使用 MFPlay:

  • 您不需要將影片擷取至檔案。
  • 您不需要對影片轉譯方式進行精細的控制。 (例如,您不需要控制 Direct3D 裝置的建立。
  • 在轉譯之前,您不需要處理相機的視訊數據。

否則, 來源讀取器 可能是較佳的選項。

若要搭配影片擷取裝置使用 MFPlay,請執行下列步驟:

  1. 建立擷取裝置的媒體來源。 請參閱 列舉影片擷取裝置
  2. 呼叫 MFPCreateMediaPlayer 以建立播放程式對象的實例。
  3. 呼叫 IMFPMediaPlayer::CreateMediaItemFromObject 方法。 傳入媒體來源之 IMFMediaSource 介面的指標。 方法會接收IMFPMediaItem介面的指標。
  4. 呼叫 IMFPMediaPlayer::SetMediaItem
  5. 呼叫 IMFPMediaPlayer::P lay 開始預覽。

下列程式碼顯示這些步驟:

    IMFPMediaItem *pItem = NULL;

    if (SUCCEEDED(hr))
    {
        hr = MFPCreateMediaPlayer(
            NULL,       // URL.
            FALSE,      // Do not start playback yet.
            0,          // Option flags.
            NULL,       // Callback interface.
            hwnd,
            &g_pPlayer
            );
    }

    if (SUCCEEDED(hr))
    {
        hr = g_pPlayer->CreateMediaItemFromObject(
            g_pSource,
            TRUE,       // Blocking call.
            0,          // User data.
            &pItem
            );
    }

    if (SUCCEEDED(hr))
    {
        hr = g_pPlayer->SetMediaItem(pItem);
    }

    if (SUCCEEDED(hr))
    {
        hr = g_pPlayer->Play();
    }

    SafeRelease(&pItem);

在一般應用程式中,您會在 MFPCreateMediaPlayer 函式中提供回呼介面的指標,並使用回呼介面從播放機取得事件。 為了簡單起見,此處所示的程式代碼會略過這些步驟。 如需詳細資訊,請參閱 開始使用 MFPlay

關閉

在應用程式結束之前,請關閉媒體來源和播放機物件,如下所示:

  1. 在媒體來源上呼叫IMFMediaSource::Shutdown
  2. 在播放機物件上呼叫IMFPMediaPlayer::Shutdown
    if (g_pSource)
    {
        g_pSource->Shutdown();
        g_pSource->Release();
        g_pSource = NULL;
    }

    if (g_pPlayer)
    {
        g_pPlayer->Shutdown();
        g_pPlayer->Release();
        g_pPlayer = NULL;
    }

需求

MFPlay 需要 Windows 7。

MFPlay

視訊