[英]GMFBridge with GMF GDCL MPEG 4 Mux Filter
我嘗試將 GDCL MPEG 4 Mux 與 GMFBridge 一起使用。
我的原始圖表是:
SourceFilter ---> GDCL MPEG 4 Mux Filter ---> FileWriter
我想根據我的特殊標准(例如時間,例如每五分鍾)提供新文件名,但不想再次創建整個圖表。 所以我嘗試使用 GMFBridge。
我不工作。 我真的不知道如何使用 GMFBridge 或者它不起作用。
注意:這是我對 GMFBridge 所做的
為了使用,我將我的圖表分為兩部分:
FirstPart ==> SourceFilter---> GDCL MPEG 4 Mux Filter--> BridgeSinkFilter
和
SecondPart ==> BridgeSourceFilter ---> FileWriter
我的程序偽代碼
IGraphBuilder firstPartGraph = (IGraphBuilder) new FilterGraph();
IGraphBuilder secondPartGraph = (IGraphBuilder) new FilterGraph();
IBaseFilter bridgeSinkFilter;
IBaseFilter bridgeSourceFilter;
IBaseFilter sourceFilter;
IBaseFilter muxerFilter;
IBaseFilter fileWriterFilter;
// Create bridge controller and init
IGMFBridgeController bridge = (IGMFBridgeController)new GMFBridgeController();
bridge.AddStream(true,eFormatType.MuxInputs, true);
// Then insert Sink filter
bridge.InsertSinkFilter(firstPartGraph, bridgeSinkFilter);
// Configure first part filters
firstPartGraph.AddFilter(sourceFilter);
firstPartGraph.AddFilter(muxerFilter);
firstPartGraph.AddFilter(bridgeSinkFilter); // Have to add this??
ConnectFilters(firstPartGraph,sourceFilter,muxerFilter);
ConnectFilters(firstPartGraph,muxerFilter,bridgeSinkFilter);
// Now add bridge sourceFilter
bridge.InsertSourceFilter(bridgeSinkFilter,secondPartGraph,bridgeSourceFilter);
// Then configure second part graph
secondPartGraph.AddFilter(bridgeSourceFilter); // Have to add this??
secondPartGraph.AddFilter(fileWriterFilter);
ConnectFilters(secondPartGraph,bridgeSourceFilter,fileWriterFilter);
// Now bridge two graphs
bridge.BridgeGraphs(bridgeSinkFilter,fileWriterFilter,bridgeSourceFilter);
// Execute both graphs
IMediaControl mediaControlForPartOne = (IMediaControl)firstPartGraph;
mediaControlForPartOne->Run();
IMediaControl mediaControlForPartSecond = (IMediaControl)secondPartGraph;
mediaControlForPartSecond->Run();
現在如何停止第二個圖形部分並設置新文件名,然后使用橋重新連接圖形?
修理它:
謝謝。
我只是改變了我的 grapg divison,現在開始工作:
FirstPart ==> SourceFilter--> BridgeSinkFilter
SecondPart ==> BridgeSourceFilter ---> GDCL MPEG 4 Mux Filter---> FileWriter
您需要將多路復用器和文件編寫器放在第二個圖中。 有兩個原因。 首先,多路復用器和文件寫入器之間的流量包括自定義接口,而不僅僅是標准的 IMemInputPin 協議(允許在圖形停止后最終確定標題),其次,它是您想要停止以關閉文件的多路復用器,而不是文件編寫器。
所以,第一個圖中的 source 和第二個圖中的 mux=>file writer 應該沒問題。
G
如果您的兩個圖表都工作,並且在第二個圖表中得到正確的 output; 您可以斷開圖表:
BridgeGraphs(NULL, NULL);
現在您可以停止第二個圖形,將其刪除並創建一個新圖形。 啟動新圖表,並再次連接它們:
BridgeGraphs(bridgeSinkFilter, newBridgeSourceFilter);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.