C# DirectShow IVideoWindow可以';不要超过4096px
我有一个C#应用程序,它使用DirectShow来显示和播放视频剪辑。我们最近尝试播放一段9600x1080像素的视频,但它无法播放。DirectShow会发出事件,这些事件会影响一切 我们使用K-Lite编解码器包(1295),并使用ffdshow libx264作为编解码器和视频渲染器。使用相同渲染器的Media Player Classic可以很好地播放片段。我们的应用程序的最新版本使用DirectShow.NET,而旧版本直接调用DirectShow接口。我们的应用程序的旧版本和新版本都有相同的问题 经过一些实验后,我们发现:C# DirectShow IVideoWindow可以';不要超过4096px,c#,video,directshow,x264,ffdshow,C#,Video,Directshow,X264,Ffdshow,我有一个C#应用程序,它使用DirectShow来显示和播放视频剪辑。我们最近尝试播放一段9600x1080像素的视频,但它无法播放。DirectShow会发出事件,这些事件会影响一切 我们使用K-Lite编解码器包(1295),并使用ffdshow libx264作为编解码器和视频渲染器。使用相同渲染器的Media Player Classic可以很好地播放片段。我们的应用程序的最新版本使用DirectShow.NET,而旧版本直接调用DirectShow接口。我们的应用程序的旧版本和新版本都
- 如果视频窗口宽度为4096px或更窄,它将渲染视频。如果是4097或更宽,则不会渲染任何视频。我们试着播放高清视频和720视频,结果是一样的。当视频窗口为4096x1080时,它们将播放,但当窗口为4097x1080或更宽时,它们不会播放
- 更改分辨率或图形设置时,应用设置时会出现一些视频闪烁(几帧),因此这表明它实际上正在播放视频,但只显示黑色
我们能做些什么来解决这个问题呢?关键部分是您正在使用的视频渲染器。即使您没有提到,也可能只是使用默认值,这是一个窗口模式下的VMR-7。这会使您得到一个过时的遗留组件,并且会受到限制 您对更新应用程序以使用EVR感兴趣 [……] 在Windows Vista和更高版本中,如果硬件支持EVR,应用程序应该使用它 […]方法默认使用VMR-7。[…]EVR和VMR-9从来都不是默认的渲染器
这似乎是一个公平的观点。我们使用的是
IGraphBuilder.RenderFile
,没有任何特殊处理,因此它可能会使用您提到的VMR-7。我将用EVR做一些测试。