共用方式為


使用 DirectShow 編輯服務來操作 Windows Media

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

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

本節說明如何在 DirectShow Editing Services (DES) 應用程式中使用 Windows 媒體型內容。 有兩個主要案例:

  • 來源剪輯。 DES 專案可以包含來自 Windows Media 檔案的音訊和視訊剪輯。
  • 目標格式。 Windows Media 是影片編輯專案最終輸出的理想格式。

若要使用 Windows 媒體檔案,應用程式必須提供軟體憑證,也稱為密鑰。 它會藉由實作密鑰提供者對象來執行這項作業。 密鑰提供者是 COM 物件,會公開 IServiceProvider 介面。 如需了解有關實作金鑰提供者的資訊,請參閱解鎖 Windows Media Format SDK

若要搭配 Windows Media 檔案使用 DES,下列 DES 物件需要軟體密鑰:

  • 用於預覽或檔案寫入的渲染引擎。

  • MediaDet 物件,可從 ASF 檔案取得視訊畫面或媒體類型。

  • ![重要]

    請勿使用智慧轉譯引擎來讀取或寫入 Windows 媒體檔案。 一律使用基本渲染引擎 (CLSID_RenderEngine)。

     

若要為物件提供軟體密鑰,請查詢 IObjectWithSite 介面的物件,並使用密鑰提供者的指標呼叫 IObjectWithSite::SetSite。 例如,下列程式代碼會提供轉譯引擎的軟體密鑰:

// Create your key provider, using an application-defined function:
IServiceProvider *pKey;
hr = MyCreateKeyProviderFunction(&pKey);  

// Query the Render Engine for IObjectWithSite.
IObjectWithSite *pOWS;
hr = pRenderEngine->QueryInterface(__uuidof(IObjectWithSite), 
    reinterpret_cast<void**>(&pOWS));
if (SUCCEEDED(hr))
{
    // Give it your key provider.
    hr = pOWS->SetSite(pKey);
    pOWS->Release();
}
pKey->Release();

若要在 DES 專案中使用 Windows Media 來源剪輯,只需在呈現引擎上,使用密鑰提供者的指標呼叫 IObjectWithSite::SetSite

如需撰寫 Windows 媒體檔案的相關信息,請參閱在 DES 撰寫 Windows 媒體檔案。

使用 DirectShow 編輯服務