禁用MediaElement使用的过滤器

时间:2011-10-24 11:26:52

标签: wpf directshow mediaelement directshow.net

是否可以禁用允许WPF的MediaElement使用的过滤器?

我正在使用DirectShow.NET通过IAMPluginControl禁用特定过滤器。

IAMPluginControl pluginControl
    = new DirectShowPluginControl() as IAMPluginControl;
if ( pluginControl == null )
{
    throw new InvalidOperationException(
        "Can't access DirectShow plugin filter control." );
}

bool disabled = pluginControl.SetDisabled(_directVobSub, true) == 0;
disabled &= pluginControl.SetDisabled(_directVobSubAutoloading, true) == 0;
disabled &= pluginControl.SetDisabled(_lavSplitter, true) == 0;

InitializeComponent();

我在调用InitializeComponent()之前在视频控件的构造函数中执行此操作。 pluginControl表示过滤器实际上已停用,但这似乎不会影响MediaElement的图表。

一个重要的注意事项是我无法明确地看到图表。我只是猜测图表仍在使用DirectVobSub,因为这会产生明显不同的可见结果。

1 个答案:

答案 0 :(得分:0)

,这可以从Windows 7开始。

我没有看到任何差异,因为仍然创建了与预期不同的图表。 DirectVobSub(自动加载)持续显示在图表中,但禁用任何其他过滤器。

除了通过注册表禁用DirectVobSub之外,我没有找到任何其他方法。

P.s。:我想要的'效果'是可以在速率变化后动态改变视频的播放速率而没有可见的延迟。在图中挂钩DirectVobSub似乎阻止了这种情况。


作为旧评论的参考:

在我认为通过将AVI Splitter设置为首选AVI过滤器之前,一切都按预期工作,并且不需要禁用DirectVobSub。它在这一点上似乎起作用的实际原因是因为我正在构建x64而不是x86,而DirectVobSub并没有因此而干预。