生成静音音轨

时间:2011-06-15 18:23:34

标签: directshow

我正在使用一个简单的DirectShow图形将一些视频转换为WMV格式,这很好。我现在正在尝试使用基于Synth Filter示例的过滤器为视频提供静音音轨,我遇到了一些问题。

基本上,当连接此过滤器(合成滤镜)时,我不知道如何停止图形。我想因为它只是永远提供样本,直到有人告诉它停止,在过滤器图上调用IMediaEvent :: WaitForCompletion的常用方法不起作用(图形永远不会停止)。我想要它做的当然是视频源过滤器完成后立即停止。

我尝试使用IMediaSeeking :: GetPositions跟踪图表的位置,然后在超过源文件的持续时间时手动停止图表,但使用此方法的停止时间的准确性并不高。 / p>

有人能想到更好的方法吗?我是否需要另一个监视视频源输出的过滤器,并且还有一个指向音频源的指针,以便在视频源传送EndOfStream后立即停止它?有没有办法从纯粹的应用程序端代码实现这一点?

1 个答案:

答案 0 :(得分:1)

我过去做过一些与众不同的事情。我添加了对IMediaSeeking的支持到静音发生器滤波器,然后你需要确保设置转换的开始和停止时间(即使它只是0和持续时间),这样静音发生器可以产生适量的音频然后发送EOS。