带有GMF GDCL MPEG 4 Mux滤波器的GMFBridge

| 我尝试将GMCLridge与GDCL MPEG 4 Mux一起使用。 我的原始图形是:
SourceFilter ---> GDCL MPEG 4 Mux Filter ---> FileWriter
我想根据自己的特殊标准(例如time,例如每五分钟一次)指定新的文件名,但不想再次创建整个图形。所以我尝试使用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的区分,然后开始工作:
  FirstPart ==>  SourceFilter--> BridgeSinkFilter
  SecondPart ==> BridgeSourceFilter ---> GDCL MPEG 4 Mux Filter---> FileWriter 
    
已邀请:
        如果两个图都正常工作,并且在第二个图中获得正确的输出;您可以断开图形:
BridgeGraphs(NULL, NULL);
现在,您可以停止第二张图,将其删除并创建一个新图。启动新图,然后再次连接它们:
BridgeGraphs(bridgeSinkFilter, newBridgeSourceFilter);
    
        您需要在第二张图中放置多路复用器和文件编写器。有两个原因。首先,mux与文件编写器之间的流量包括自定义接口,而不仅仅是标准的IMemInputPin协议(以允许在图形停止后最终确定头),其次,它是您想要停止以关闭文件的mux,而不是文件编写器。 因此,第一个图形中的source,第二个图形中的mux => file writer,您应该没问题。 G     

要回复问题请先登录注册