2010-06-25 71 views
3

我正在構建一個應用程序,需要從MP4容器中讀取H264和AC3流,並將它們複合到一個ISMV文件中。源MP4文件包含多個不同比特率的視頻流和多個不同語言的音頻流。DirectShow:從MP4容器中選擇一個源視頻流

當我爲我的源文件調用IGraphBuilder::AddSourceFilter時,我得到一個只有兩個輸出引腳的濾波器:「視頻」和「音頻」。如何選擇「視頻」和「音頻」使用哪一個特定的流(例如:視頻流的比特率)?

我是否必須實例化多個源過濾器才能讀取該文件並將它們複合到ISMV中,或者我錯過了什麼?

回答

4

這取決於您用於MP4的demux。我不認爲有一個股票MP4 demux,所以你可能有一個作爲解碼器包的一部分,這是作爲源和demux。

您可以在www.gdcl.co.uk/mpeg4上試用免費的開源MP4 demux。您將需要AddSourceFilter(獲取具有單個輸出的文件源),然後將源輸出顯式連接到demux輸入。然後,您將擁有與demux可識別的所有已啓用流相對應的輸出引腳,並且可以選擇所需的那些流。

G