DirectShow IVideoWindow的宽度不能超过4096px

时间:2019-03-25 08:31:14

标签: c# video directshow x264 ffdshow

我有一个使用DirectShow来显示播放视频剪辑的C#应用​​程序。我们最近尝试播放9600x1080 px的视频,但该视频无法显示。 DirectShow发出所有事件。

我们使用K-Lite编解码器包(1295),并使用ffdshow libx264作为编解码器和视频渲染器。使用相同渲染器的Media Player Classic可以很好地播放剪辑。我们应用程序的最新版本使用DirectShow.NET,而旧版本则直接调用DirectShow接口。我们的应用程序的旧版本和新版本都有相同的问题。

经过一些实验,我们发现了以下内容:

  • 如果视频窗口宽度为4096px或更窄,它将呈现视频。如果它是4097或更宽,则不会渲染任何视频。我们尝试播放HD剪辑和720剪辑,结果相同。它们将在视频窗口为4096x1080时播放,而在窗口为4097x1080或更宽时不播放。

  • 在更改分辨率或图形设置时,应用设置时视频会闪烁一些(几帧),这表明它实际上正在播放视频,但仅显示黑色。

在Windows 10 64位上测试。

有什么想法可以解决这个问题?

1 个答案:

答案 0 :(得分:1)

必不可少的部分是您正在使用的视频渲染器。即使您没有提到,也可能只使用默认值,这是窗口模式下的VMR-7。这样可以使您的旧版旧组件具有您遇到的限制。

您有兴趣更新您的应用程序以使用EVR。

  

Choosing the Right Video Renderer

     

[…]

     

在Windows Vista和更高版本中,如果硬件支持,则应用程序应使用EVR。

     

[…]方法默认情况下使用VMR-7。 […] EVR和VMR-9从来都不是默认渲染器。