共用方式為


預覽專案

[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]

[此 API 不受支援,未來可能會變更或無法使用。]

若要預覽專案,請先呼叫 CoCreateInstance 以建立基本轉譯引擎的實例。 類別識別碼CLSID_RenderEngine。 然後呼叫 IRenderEngine::SetTimelineObject 方法來指定您要呈現的時間軸。

第一次預覽時程表時,請依照所列的循序執行下列呼叫:

  1. 呼叫 IRenderEngine::SetRenderRange 以指定要預覽的時程表部分。 (選用)
  2. 呼叫 IRenderEngine::ConnectFrontEnd 以建置圖形的前端。
  3. 呼叫 IRenderEngine::RenderOutputPins。 此方法會將每個輸出釘選連接到視訊轉譯器或音訊轉譯器,以完成圖形。

下列程式碼範例顯示下列步驟:

IRenderEngine *pRender = NULL; 
hr = CoCreateInstance(CLSID_RenderEngine, NULL, 
    CLSCTX_INPROC_SERVER, IID_IRenderEngine, (void**)&pRender);

hr = pRender->SetTimelineObject(pTL);
hr = pRender->ConnectFrontEnd();
hr = pRender->RenderOutputPins();

現在執行篩選圖形。 首先,呼叫 IRenderEngine::GetFilterGraph 方法,以擷取篩選圖形管理員 IGraphBuilder 介面的指標。 然後查詢 IMediaControl 介面的 Filter Graph 管理員,並呼叫 IMediaControl::Run,如下列程式碼所示:

IGraphBuilder   *pGraph = NULL;
IMediaControl   *pControl = NULL;
hr = pRender->GetFilterGraph(&pGraph);
hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
hr = pControl->Run();

使用 Filter Graph Manager 的 IMediaEventEx 介面,等候預覽完成。 您也可以使用 Filter Graph Manager 的 IMediaSeeking 介面來搜尋圖形,就像使用檔案播放圖表一樣。

若要再次預覽專案,請回到零時間搜尋圖形,然後再次呼叫 Run 。 如果您變更時間軸的內容,請執行下列動作:

  1. 呼叫 SetRenderRange。 (選用)
  2. 呼叫 ConnectFrontEnd
  3. 如果 ConnectFrontEnd 方法傳回S_WARN_OUTPUTRESET,請呼叫 RenderOutputPins。 (如果 ConnectFrontEnd 傳回S_OK,您可以略過此步驟。)
  4. 將圖表搜尋回零時間。
  5. 執行圖形。

下列範例顯示下列步驟:

hr = pRender->ConnectFrontEnd();
if (hr == S_WARN_OUTPUTRESET)
{
    hr = pRender->RenderOutputPins();
}
LONGLONG llStart = 0; 
hr = pSeek->SetPositions(&llStart, AM_SEEKING_AbsolutePositioning, 0, 0); 
hr = pControl->Run();

如需載入和預覽專案檔的完整範例,請參閱 載入和預覽專案

管理影片編輯專案

轉譯專案