共用方式為


編碼器 API

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

編碼器 API 提供統一介面來設定軟體和硬體編碼器。 應用程式可以使用編碼器 API 來設定編碼器,以及儲存組態設定。 編碼器廠商可以使用編碼器 API 來公開編碼器的功能。 雖然編碼器 API 主要是針對編碼器所設計,但譯碼器也可以支援它。

編碼器 API 會透過編碼器篩選器公開的 ICodecAPI 介面向應用程式公開。 編碼器篩選器可能是原生 DirectShow 篩選、硬體編碼器或 DirectX 媒體物件 (DMO)。

  • 軟體篩選:實作為原生 DirectShow 篩選器的編碼器應該直接公開 ICodecAPI
  • 硬體編碼器:編碼裝置會透過一或多個AVStream迷你驅動程序公開,由 KSProxy 以使用者模式表示。 KSProxy 會將 ICodecAPI方法呼叫轉譯成 KS 屬性集。 如需詳細資訊,請參閱 DDK 檔。
  • DMO:DMO 應該公開 ICodecAPI 介面。 DirectShow 應用程式可以查詢 DMO 包裝函式篩選器,其會藉由匯總 DMO 來公開介面。 不是以 DirectShow 為基礎的應用程式可以直接查詢 DMO。

編碼器 Capabilties

編碼器可以藉由將它們儲存在系統登錄中來註冊高階功能清單。 每個功能都是由 GUID 來識別。 若要列舉特定編碼器的功能,請執行下列動作:

  1. 建立代表編碼器篩選的Moniker。 (請參閱使用系統裝置列舉值
  2. 查詢 IGetCapabilitiesKey 介面的篩選 Moniker。
  3. 呼叫 IGetCapabilitiesKey::GetCapabilitiesKey。 方法會傳回包含篩選功能清單之登錄機碼的句柄。
  4. 呼叫 RegEnumValue 函式,以列舉傳回索引鍵的值。

如果您要開發編碼器,請在註冊篩選條件時建立功能的登錄專案。 針對軟體篩選,請建立名為 Capabilities 的索引鍵,該索引鍵與 FilterData 相鄰,並 FriendlyName 索引鍵。 一般而言,您會在呼叫 AMovieDllRegisterServer2 以註冊標準篩選數據之後新增這項資訊。 如需詳細資訊,請參閱 如何註冊 DirectShow 篩選。 或者,您可以建立 CapabilitiesLocation 機碼,其中包含字串,提供登錄中 功能 機碼的位置。 字串應該以 「HKLM\」、“HKCR\” 或 「HKCU\」 開頭,以指出登錄子樹。 針對隨插即用裝置,驅動程式的安裝程式檔案應該建立與篩選 FriendlyName 鍵相鄰的 功能 密鑰,或者可以使用 CapabilitiesLocation 密鑰,如軟體篩選器所述。

建立 功能 索引鍵之後,請為每個功能 GUID 建立值。 值的名稱應該是 GUID 的字串形式,格式為 {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}。 每個實值類型都應該是下列其中一項:

  • 單一數值。 使用 DWORD 值。
  • GUID。 使用 GUID 的字串形式。
  • 數值組。 使用格式為 “a,b” 的字串來代表值組,例如寬度和高度,或是分數的分子和分母。
  • 值的陣列。 使用多字串 (REG_SZ_MULTI) 來表示多個值。

下列範例顯示軟體篩選器的登錄設定:

\HKCR\CLSID\Filter Category\Instance\Filter CLSID\Capabilities\
    
Values: 
    
    guid1: 1234 (REG_DWORD)   
    
    guid2: "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" (REG_SZ)
    
    guid3: "2","4","6" (REG_SZ_MULTI)
    
    guid4: "720,480" (REG_SZ) 

編碼器配置檔

編碼器配置檔 是可在運行時間套用至編碼器的固定組態設定清單。 配置檔與編碼器無關;應用程式可以選取編碼器,然後選取配置檔,並將配置檔設定套用至編碼器。 設定檔是由 GUID 識別,應該儲存在登入中的下列位置:

\HKLM\Software\Microsoft\EncoderProfiles\Profile GUID\

其中 配置檔 GUID

是識別配置檔之 GUID 的字串形式。 為每個設定建立值。 同時建立名為 “FriendlyName” 的字串值,其數據會識別配置檔(例如 “LowBandwidthVideo” )。

編碼器和譯碼器開發