是否可以禁用允许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,因为这会产生明显不同的可见结果。
答案 0 :(得分:0)
是,这可以从Windows 7开始。
我没有看到任何差异,因为仍然创建了与预期不同的图表。 DirectVobSub(自动加载)持续显示在图表中,但禁用任何其他过滤器。
除了通过注册表禁用DirectVobSub之外,我没有找到任何其他方法。
P.s。:我想要的'效果'是可以在速率变化后动态改变视频的播放速率而没有可见的延迟。在图中挂钩DirectVobSub似乎阻止了这种情况。
作为旧评论的参考:
在我认为通过将AVI Splitter设置为首选AVI过滤器之前,一切都按预期工作,并且不需要禁用DirectVobSub。它在这一点上似乎起作用的实际原因是因为我正在构建x64而不是x86,而DirectVobSub并没有因此而干预。