DirectShow IVideoWindow不能超过4096px

问题描述 投票:0回答:1

我有一个C#应用程序,它使用DirectShow来显示播放视频片段。我们最近尝试播放9600x1080像素的视频,但不会显示。 DirectShow会发出一切事件。

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

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

  • 如果视频窗口宽度为4096px或更窄,则会呈现视频。如果它是4097或更宽,则不会呈现任何视频。我们尝试播放具有相同结果的HD剪辑和720剪辑。它们将在视频窗口为4096x1080时播放,但在窗口为4097x1080或更宽时则不播放。
  • 当更改分辨率或图形设置时,在应用设置时会有一些闪光(几帧)的视频,因此这表明它实际上正在播放视频,但它只显示黑色。

在Windows 10,64位上测试。

我们可以做些什么来解决这个问题?

c# video directshow x264 ffdshow
1个回答
1
投票

关键部分是您正在使用的视频渲染器。即使您没有提及,也可能只使用默认值,这是窗口模式下的VMR-7。这将为您提供一个老旧的遗留组件,其中包含您遇到的限制。

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

Choosing the Right Video Renderer

[…]

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

[...]方法默认使用VMR-7。 [...] EVR和VMR-9绝不是默认的渲染器。

© www.soinside.com 2019 - 2024. All rights reserved.