从每帧视频中捕获单个像素行并将它们编译在一起

时间:2011-07-18 12:42:14

标签: c# ffmpeg directx directshow video-processing

我正在开发一个项目,我需要从提供的视频文件的每一帧中获取单个水平或垂直像素行(或者我想),并从中创建一个图像,基本上附加像素行整个视频中的图像。我计划提供的视频文件不是常规视频,它实际上只是从视频游戏(Halo:Reach)中直接向下捕捉平移相机(或者就游戏将让我来说,这是-85.5 °)。我会向下看,将摄像机向前平移到景观上,然后从每帧捕获一个像素行捕获的视频文件(30fps)并将行编译成一个图像,有效地(希望)将景观重建为一个单个图像。

我考虑过快速而肮脏的方式,使用AxWindowsMediaPlayer控件并锁定表单,使其无法移动或调整大小,然后只使用Graphics对象捕获屏幕,但这不是足够快,会有太多问题,我需要直接访问框架。

我听说过FFLib和DirectShow.NET,我实际上刚刚安装了Windows SDK,但还没有机会搞乱和使用DirectX的东西(我记得有一段时间我很困惑)当我搞砸了)希望有人可以给我指向正确的方向。

如果有人有任何他们认为有帮助的信息,我会非常感激。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用renderless mode(例如VMR9,EVR)中呈现的视频,它允许您自己处理每一帧。通过使用frame stepping playback,您可以每次步进一帧并处理帧。

DirectShow.NET可以帮助您尽可能使用托管代码,我可以推荐它。然而,它只是DirectShow的包装器,所以寻找更高级的库也是值得的。

一些旁注:你不会遇到角度与角度不同的照明问题吗?也许更容易捕获一些截图并使用existing stitching algorithms