2014-04-23 58 views
2

Media Foundation H264 Encoder MFT文檔沒有提到編碼器的CLSID。其它編碼器類ID,和H264解碼器MFT類ID在Media Foundation H264編碼器的CLSID在哪裏?

\Program Files (x86)\Microsoft SDKs\7.1\Include\wmcodecdsp.h or 
\Program Files (x86)\Windows Kits\8.x\Include\am\wmcodecdsp.h 

我看到此編解碼器,當我枚舉設備限定,並且能夠獲得CLSID,即{6ca50344-051a-4ded-9779-a43305165e35 },從枚舉列表,但我找不到一個命名的GUID,我期望是這樣的:CLSID_CH264MediaEncObject

我想使用GUID(而不是枚舉的名稱)在構建我的拓撲時作出決定基於用戶選擇哪個編碼器。我可以define_guid這個,但它似乎很奇怪。

因此: 爲什麼沒有H264編碼器MFT的命名GUID?

回答

2

這看起來有意爲之,因爲Media Foundation API建議您讓API爲您選擇合適的編碼器。你的角色是建立一個合適的配置文件,並讓轉碼API使用請求的參數創建拓撲。

我想你知道MSDN主角,但記錄:Tutorial: Encoding an MP4 File - Create the Transcode Profile

特別是,他們似乎想保留對編碼器的選擇控制,以自動使用硬件編碼器適用:

Certified Hardware Encoder

如果認證硬件編碼器是否存在,它通常是而不是媒體基礎相關場景的收件箱系統編碼器。

在DirectShow中壓縮機的問題之一是壓縮機之間的共同列表和壓縮機之間的競爭。出於很多原因,應用程序寧願硬編碼特定的壓縮器,而不是使用給定格式的最佳選擇。在MF中,這種方法是不同的:配置文件定義了您最終想要輸出的內容,然後API負責提供編碼器。

+0

謝謝羅馬!這是有道理的。 我正嘗試構建一個實時捕捉應用程序,用於從網絡攝像頭捕捉音頻+視頻,並且沒有看到任何好的示例或教程。這是否修改你的答案? – SteveS

+0

我不知道好樣品。我會拿上面的答案中提到的這個教程,並以某種方式將它合併到另一個視頻/音頻捕獲示例中。我自己也沒有碰過MF,我仍然在使用DirectShow進行製作。 –

1

在Windows SDK 8.1上,名稱爲CLSID_CMSH264EncoderMFT(wmcodecdsp.h)。

相關問題