【问题标题】:Capturing Images from Playing Video File从播放视频文件中捕获图像
【发布时间】:2013-10-02 05:57:41
【问题描述】:

我正在开发 C# 桌面应用程序并将此链接引用到播放视频文件http://www.codeproject.com/Articles/2632/DirectShow-MediaPlayer-in-C,现在从这个正在播放的视频文件中,当我点击这个面板(如上面的链接所示)时,如何从播放的视频文件中捕获图像,我搜索但我发现所有显示从某些设备(例如网络摄像头等)捕获图像的示例,在我的情况下它不是设备它是我从目录和播放中浏览的文件,因为我是这个视频捕获的新手请直接我该怎么做呢

【问题讨论】:

    标签: c# video directshow directshow.net


    【解决方案1】:

    “捕获”通常是指从外部获取图像时的图像获取。您想要获取当前显示的视频帧的副本。有几种方法可以做到这一点,在视频可视化时播放时,视频渲染器通常提供GetCurrentImage 方法,该方法返回当前显示的视频帧的副本,甚至可能转换为 RGB。

    视频渲染器版本之间的方法语法略有不同。

    请参阅以前的主题以实现此目标:

    【讨论】:

    • 我搜索了很多并引用了上面的链接,但它们都显示从设备捕获帧。你能指导我一些从目录中捕获图像的代码,播放从目录中选择的视频文件,我不明白如何在点击事件上捕获帧
    • 上面的第一个链接从演示组件中捕获视频。源是设备还是文件都没有关系 - 当前显示的帧的副本来自相同/相似的可视化组件。
    • 你能告诉我在第一个链接中我将在哪里得到IBaseFilterIEnumFilters 类代码,因为我收到错误,因为缺少命名空间,因此我无法理解这些到底是做什么的,或者我错过了一些库或 dll 包括在这里?
    • 它是DirectShow.NET:一个文件夹是库本身,另一个是我在上面的答案中提到的示例包。
    【解决方案2】:

    您需要一个过滤器来捕获屏幕并将视频向下发送。

    在 DirectShow 库中有一个名为 PushSource 的示例过滤器,其中有 PushSourceDesktop

    在 Codeplex,有类似 (Click me) 或 Information (Click me) 这样的关于过滤器的示例。

    【讨论】:

      【解决方案3】:

      您也可以使用“SampleGrabber”DirectShow 过滤器:只需将它放在源过滤器和渲染过滤器之间的过滤器链中。

      有关 SampleGrabber 的更多信息: see MSDN

      【讨论】:

      • 这个答案是 c++ 我正在使用 C#,他们的 SampleGrabber 代码是 c# 吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      • 2012-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多