language-agnostic - 逐帧访问视频

标签 language-agnostic video filter frames

什么是最容易编码的技术,可以让我实时访问视频的帧,并允许我修改它们。我知道 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/

相关文章:

javascript - 从数组中删除多个元素

javascript - 重新排序和过滤对象数组

language-agnostic - 与语言无关的随机洗牌问题

language-agnostic - 如何找到方形图案角的像素坐标?

language-agnostic - 复杂性(初学者问题)

c++ - 任何编程语言中的变量名是否占用内存空间

audio - 如何将 AUDIO 组与 VIDEO 流结合并使用 ffmpeg 生成新的 .ts 文件?

swift - 如何从 JSON 中过滤多个值并将结果附加到 TableView Swift 4

node.js - 找不到 ffprobe?

javascript - 加载后播放 HTML5 视频