什么是最容易编码的技术,可以让我实时访问视频的帧,并允许我修改它们。我知道 DirectShow,但它的编程模型似乎相当复杂。是否有一个框架可以让像这样的框架过滤器的编程变得更容易?
最佳答案
Give me real time access to a video's frames, and allow me to modify them
您是否希望获取未压缩的视频帧并在渲染之前对其进行修改?还是要修改视频帧,将它们保存回媒体文件?
第一个会稍微容易一些。尽管 DirectShow 起初看起来很复杂,但它确实是一个优雅的框架。我强烈建议查看 DirectShow.NET 示例。要访问视频的帧,您只需配置 SampleGrabber 过滤器并将其添加到 DirectShow 图形,执行 graph.RenderFile(mymediafile, null),您将收到每个帧的回调。您可以修改像素数据,它会出现在渲染的视频中。这不应占用超过 1 页的代码。我有一个 example source code on using SampleGrabber ,但它是为网络摄像头制作的。播放媒体要容易得多(graph.RenderFile!)。
如果您需要将这些内容写入文件,您将执行与上述类似的操作,但您必须配置图形以使用视频编码器和多路复用器,而不是使用视频渲染器。对于 DirectShow 的新手来说可能并不有趣;)。
如果您只想获取帧,directshow 中有一个非常简单的界面,称为 IMediaDet。我有 written a simple class轻松地从媒体文件中提取任何帧。它面向 WPF,但您可以直接使用 GDI。
关于language-agnostic - 逐帧访问视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1538800/