逐帧访问视频

luv*_*ere 3 language-agnostic video frames filter

什么是最容易编码的技术,可以让我实时访问视频的帧,并允许我修改它们.我知道DirectShow,但它的编程模型似乎相当复杂.是否有一个框架可以使编程这样的帧过滤器更容易?

Jer*_*ill 5

让我实时访问视频的帧,并允许我修改它们

您是否希望获得未压缩的视频帧并在渲染之前对其进行修改?或者您想修改视频帧,将它们保存回媒体文件?

第一个会稍微容易些.尽管DirectShow起初可能看起来很复杂,但它确实是一个优雅的框架.我强烈建议查看DirectShow.NET示例.要访问视频的帧,您只需配置SampleGrabber过滤器并将其添加到DirectShow图,执行graph.RenderFile(mymediafile,null),您将收到每个帧的回调.您可以修改像素数据,它将出现在渲染视频上.这不应该超过1页的代码.我有一个使用SampleGrabber示例源代码,但它是为网络摄像头制作的.播放媒体要容易得多(graph.RenderFile!).

如果您需要将这些内容写入文件,您将执行类似于上述操作的操作,但您不必使用视频渲染器,而是必须将图形配置为使用视频编码器和复用器.对DirectShow的新手来说可能并不好玩;).

如果你只想获得帧,那么directshow中有一个非常简单的界面叫做IMediaDet.我编写了一个简单的类来轻松地从媒体文件中提取出任何帧.它面向WPF,但您可以将其与直接GDI一起使用.