2017-07-24 171 views
0

我已經使用Media Foundation API編寫了一個程序,該程序需要一個AVI文件並將其視頻樣本解碼爲未壓縮的RGB幀。Media Foundation外部編解碼器支持

最近,我發現一個包含音頻和視頻軌道的AVI文件,但Windows Media Player沒有播放視頻軌道(正在播放音頻)。

我試圖用另一個播放器(Gom Player)打開文件,它建議我下載更多的編解碼器包:LEAD MJPG/MCMP Video Codec。安裝之後,WMP開始解碼並播放視頻軌道。但之後,我再次無法使用MF API解碼文件。

我的猜測是Media Foundation僅限於Windows發佈的內容。是對的嗎?

此外,是告訴媒體​​基金會使用外部安裝的編解碼器解碼的方法?

回答

2

Media Foundation API提供可擴展性,但Media Foundation可接受的編解碼器需要提供相應的格式:它們應該可用並註冊爲Media Foundation轉換。這是一種罕見的情況,因爲Media Foundation並不普遍,大部分可下載的編解碼器都具有DirectShow API接口或Video For Windows API接口,但Media Foundation不支持。

如果你有一個合適的編解碼器,媒體基金會可能會選擇它。

Windows Media Player嘗試通過Media Foundation播放,或者在發生故障時回退到DirectShow。這解釋了爲什麼可下載的編解碼器修復了Windows Media Player而不是Media Foundation。

+0

是否有示例代碼或演示如何使用DirectShow API解碼媒體文件的示例? – mbaros

+1

[Windows SDK 7.1]中有DirectShow示例(https://www.microsoft.com/en-us/download/details.aspx?id=8279)。其中一些也在[這裏]描述(https://msdn.microsoft.com/en-us/library/windows/desktop/dd375468)。 [如何播放文件](https://msdn.microsoft.com/en-us/library/windows/desktop/dd389098)可能是一個很好的介紹。 –

+0

非常感謝。 – mbaros