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

C# 从每一帧视频中捕获一个像素行,并将它们一起编译,c#,ffmpeg,directx,directshow,video-processing,C#,Ffmpeg,Directx,Directshow,Video Processing,我正在做一个项目,我需要从提供的视频文件的每一帧中提取一个水平或垂直像素行(或列,我猜),并从中创建一个图像,基本上在整个视频中将像素行附加到图像上。我计划提供的视频文件不是一个普通的视频,它实际上只是一个视频游戏(Halo:Reach)中的一个平移摄像头的捕获,它可以直接向下看(或者在游戏允许的范围内,即-85.5°)。我会往下看,非常缓慢地将相机向前平移到风景上,然后从捕获的视频文件(30fps)的每一帧中提取一个像素行,并将这些行编译成一幅图像,该图像将有效地(希望)将风景重建成一幅图像

我正在做一个项目,我需要从提供的视频文件的每一帧中提取一个水平或垂直像素行(或列,我猜),并从中创建一个图像,基本上在整个视频中将像素行附加到图像上。我计划提供的视频文件不是一个普通的视频,它实际上只是一个视频游戏(Halo:Reach)中的一个平移摄像头的捕获,它可以直接向下看(或者在游戏允许的范围内,即-85.5°)。我会往下看,非常缓慢地将相机向前平移到风景上,然后从捕获的视频文件(30fps)的每一帧中提取一个像素行,并将这些行编译成一幅图像,该图像将有效地(希望)将风景重建成一幅图像

我想用一种快速而肮脏的方式来实现这一点,使用AxWindowsMediaPlayer控件并锁定表单,使其无法移动或调整大小,然后只使用图形对象来捕获屏幕,但速度不够快,会有太多问题,我需要直接访问帧

我听说过FFLib和DirectShow.NET,实际上我刚刚安装了Windows SDK,但还没有机会弄乱DirectX的东西(我记得在我弄乱它的时候,它让我很困惑)。希望有人能给我一个指向正确方向的指针


如果任何人有任何他们认为可能有用的信息,我将不胜感激。谢谢大家!

您可以使用在中渲染的视频(例如VMR9、EVR),它允许您自己处理每一帧。通过使用,可以每次单步执行一帧并处理该帧

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


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

我最初尝试捕获多个屏幕截图并缝合它们,问题是透视。首先,我不能直接向下看,我能向下看的最远距离是-85.5°,另一个问题是,当相机移动时,从不同的角度看东西。我能想到的唯一选择是将“相机”平移到风景上,基本上只“扫描”视频每帧的一行。我会计算出合适的扫描行来解释相机的不完全向下的角度。我会继续胡闹,我会在DirectShow.Net上有所进展。