如何避免使用GMFBridge写非I帧

时间:2011-06-29 09:48:02

标签: directshow

我使用GMFBridge将流源视频文件录制到dicrete文件中。就像DSBoy一样 GMFBridge with GMF GDCL MPEG 4 Mux Filter

FirstPart ==>  SourceFilter--> BridgeSinkFilter
SecondPart ==> BridgeSourceFilter ---> GDCL MPEG 4 Mux Filter---> FileWriter 

我以10分钟的间隔记录流,并为下一条记录打开新文件。 它可以工作,但是当第一个记录正常时,​​其他记录在开头时打开绿色坏帧(其余视频都可以)。

我认为当我使用bridge停止文件编写器并使用新文件重新创建它时,它会将Non-I Frame写入文件。如果是这样,我怎样才能避免使用这种directshow过滤器结构在记录开头写入非I帧?

祝福

1 个答案:

答案 0 :(得分:4)

你的解释听起来不错。 GMFBridge最初是为未压缩视频而设计的,因此您需要添加一些代码才能实现这一功能。

最简单的解决方案是在多路复用器图中添加代码,在多路复用器之前删除数据直到看到GOP开始,但这并不理想,因为您将丢失数据。

要正确执行此操作,您需要在看到GOP的开头时触发桥接开关。一种方法是编写一个GOP检测器滤波器,它位于桥接器前面的上游图形中。

准备好切换(10分钟后),应用程序启用GOP检测器。当GOP探测器看到GOP开始时,它会阻止传递,并向应用程序发出信号。当应用程序看到信号时,它会将桥接器切换到新的多路复用器图形,然后在GOP检测器上重新启用传送。