修复 DirectShow 上的像素纵横比 (PAR) 问题的最佳方法是什么?
What's the best way to fix Pixel Aspect Ratio (PAR) issues on DirectShow?
我正在使用 DirectShow 滤镜图从视频中抓取帧。当前的实现遵循这张图:
SourceFilter->SampleGrabber->NullRenderer
这在大多数情况下都是逐帧提取图像以供进一步处理。但是,我遇到了一些没有 1:1 PAR 的视频的问题。这些图像在我的处理步骤中出现拉伸。
我目前发现的解决此问题的唯一方法是在无窗口模式下使用 VMR9 渲染器,该渲染器使用 GetCurrentImage() 以正确的纵横比提取位图。但是这种方法对于连续抓取几千帧的情况用处不大。
我现在的问题是:解决此问题的最佳方法是什么?有没有人也遇到过这个问题?
Sample Grabber 为您获取具有原始像素的帧。如果附加了宽高比并且像素不是 "square pixels",则这不是问题。要转换为方形像素,您只需分别拉伸图像。在 DirectShow 管道之外执行此缩放步骤会更容易,并且您拥有所需的所有数据:像素和原始媒体类型。可以用正方形像素计算出对应的分辨率,重新采样图片。
我正在使用 DirectShow 滤镜图从视频中抓取帧。当前的实现遵循这张图:
SourceFilter->SampleGrabber->NullRenderer
这在大多数情况下都是逐帧提取图像以供进一步处理。但是,我遇到了一些没有 1:1 PAR 的视频的问题。这些图像在我的处理步骤中出现拉伸。
我目前发现的解决此问题的唯一方法是在无窗口模式下使用 VMR9 渲染器,该渲染器使用 GetCurrentImage() 以正确的纵横比提取位图。但是这种方法对于连续抓取几千帧的情况用处不大。
我现在的问题是:解决此问题的最佳方法是什么?有没有人也遇到过这个问题?
Sample Grabber 为您获取具有原始像素的帧。如果附加了宽高比并且像素不是 "square pixels",则这不是问题。要转换为方形像素,您只需分别拉伸图像。在 DirectShow 管道之外执行此缩放步骤会更容易,并且您拥有所需的所有数据:像素和原始媒体类型。可以用正方形像素计算出对应的分辨率,重新采样图片。