我有一个C#应用程序,它使用DirectShow来显示播放视频片段。我们最近尝试播放9600x1080像素的视频,但不会显示。 DirectShow会发出一切事件。
我们使用K-Lite编解码器包(1295)并使用ffdshow libx264作为编解码器和视频渲染器。使用相同渲染器的Media Player Classic可以很好地播放剪辑。我们的应用程序的最新版本使用DirectShow.NET,而旧版本直接调用DirectShow接口。我们的应用程序的旧版本和新版本都有相同的问题。
经过一些实验,我们发现了以下内容:
在Windows 10,64位上测试。
我们可以做些什么来解决这个问题?
关键部分是您正在使用的视频渲染器。即使您没有提及,也可能只使用默认值,这是窗口模式下的VMR-7。这将为您提供一个老旧的遗留组件,其中包含您遇到的限制。
您有兴趣更新您的应用程序以使用EVR。
Choosing the Right Video Renderer
[…]
在Windows Vista及更高版本中,如果硬件支持,应用程序应使用EVR。
[...]方法默认使用VMR-7。 [...] EVR和VMR-9绝不是默认的渲染器。