2011-06-01 56 views
2

我的應用程序使用VMR9 Renderless模式播放WMV文件。我用IGraphBuilder :: RenderFileIMediaControl控制回放構建過濾器圖形。一切都好起來,但我不知道如何確定源視頻大小。有任何想法嗎?如何使用VMR9無渲染模式查找源視頻大小

注意:在How can I adjust the video to a specified size in VMR9 renderless mode?之前詢問過此問題。但解決方案是使用Windowless模式,而不是Renderless模式,這將需要重寫我的代碼。

回答

1

首先你需要視頻渲染器。你可以通過在IGraphBuilder接口上使用EnumFilters來完成。然後在該濾波器上調用EnumPins來查找輸入引腳。然後,您可以調用ConnectionMediaType以獲取被饋送到該過濾器的媒體類型。現在,取決於設置的格式類型,您可以將pbFormat指針轉換爲相關結構,然後從中找出視頻大小。如果您在此之前需要大小(以查看是否發生了一些縮放),則可以使用「ConnectedTo」穿過引腳回到下一個過濾器。然後您可以找到其輸入引腳並重復ConnectionMediaType調用。重複,直到你到達你想要的過濾器的針腳。

+0

謝謝你指點我正確的方向。它花了一段時間,但我能夠弄清楚如何通過瀏覽過濾器圖來找到我的源視頻。我希望能有一個更簡單的方法來完成這個任務,但它似乎是唯一的方法 - 至少在Renderless模式下。 – 2011-06-02 21:40:13

+0

@Knute:在DirectShow方面,沒有什麼是容易的。它的靈活性如同地獄般,但在我看來它越早越好。 – Goz 2011-06-02 22:06:22

+0

悲哀的媒體基金會更糟。 – Alan 2011-06-03 02:49:33

1

您可以使用MediaInfo項目http://mediainfo.sourceforge.net/hr/Download/Windows並通過VCS2010或VCS2008文件夾中包含的CS包裝獲取所需的所有視頻信息。

編輯:對不起,我以爲你在管理。但是在任何情況下MediaInfo都可以使用,所以也許會有所幫助。

+0

感謝您的建議。使用這樣的庫當然有可能比瀏覽過濾圖更容易。 – 2011-06-02 21:36:35

相關問題