Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DirectShow IVideoWindow可以';不要超过4096px_C#_Video_Directshow_X264_Ffdshow - Fatal编程技术网

C# DirectShow IVideoWindow可以';不要超过4096px

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接口。我们的应用程序的旧版本和新版本都

我有一个C#应用程序,它使用DirectShow来显示和播放视频剪辑。我们最近尝试播放一段9600x1080像素的视频,但它无法播放。DirectShow会发出事件,这些事件会影响一切

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

经过一些实验后,我们发现:

  • 如果视频窗口宽度为4096px或更窄,它将渲染视频。如果是4097或更宽,则不会渲染任何视频。我们试着播放高清视频和720视频,结果是一样的。当视频窗口为4096x1080时,它们将播放,但当窗口为4097x1080或更宽时,它们不会播放

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

在Windows 10上测试,64位


我们能做些什么来解决这个问题呢?

关键部分是您正在使用的视频渲染器。即使您没有提到,也可能只是使用默认值,这是一个窗口模式下的VMR-7。这会使您得到一个过时的遗留组件,并且会受到限制

您对更新应用程序以使用EVR感兴趣

[……]

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

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


这似乎是一个公平的观点。我们使用的是
IGraphBuilder.RenderFile
,没有任何特殊处理,因此它可能会使用您提到的VMR-7。我将用EVR做一些测试。