DirectShow vmr 从 avi 播放不良运动(如果不是原始分辨率)

DirectShow vmr bad motion playback from avi if not in native resolution

我在 .Net Windows 应用程序中有一个相当简单的回放图。 (通过 DirectShowLib)

File Source ->  [Some Splitter] -> VMR7 || VMR9

分离器可以是 lav,ffdhow,任何东西,它只是一个智能连接。

渲染器可用时为 VMR9,否则为 VMR7。

VMR 没有什么聪明的用途,只是为了渲染视频无窗口,并在用户要求时捕获样本。

这已经工作了很多年,视频可以是任何东西,包括 DV 或 MPEG2(因此 VMR 用于帧捕获而不是样本采集器)。

就在最近,我在多个 Windows 10 个系统上遇到了一个问题,这些系统实际上都使用 VMR9(尽管 VMR7 没有解决这个问题),在播放某些剪辑得比原始文件更小或更大的 avi 文件时很明显avi。原尺寸玩,画面没问题

使用 EVR 而不是 VMR 可以解决所有视频问题,但它让我有些痛苦,因为它的图像捕获是输出矩形的大小而不是源。

所以我想知道是否有人可以阐明我在将 VMR 与 avi 文件(多种格式,DV / h264 ..)一起使用时遇到的情况。请注意,graph studio 和 vlc player 显示相同的问题。

我将这种效果描述为严重的运动重影,请注意,如果在 EVR 或 VMR 上以源尺寸渲染原始视频文件看起来不错。

非常感谢任何想法。

----------------额外信息------------------------

值得一提的是,所有有问题的 avi 文件都是通过 USB 捕获设备从复合/s 视频源捕获的。

所呈现的伪影是典型的没有去隔行的隔行扫描内容的呈现。

在某些情况下(例如在您的 EVR 测试中)可以自动提供反隔行扫描,尤其是。通过 Direct3D 设备。否则你会看到提到的效果。粗略地说,由于 VMR 已被废弃 API,即使旧系统可以处理去隔行,较新的系统也很可能无法通过 VMR-9 应用自动去隔行。

要解决您有兴趣应用去隔行扫描的问题,无论是使用额外的 post 处理过滤器的硬件还是软件去隔行扫描。