带有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     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...