gpt4 book ai didi

c++ - 从网络摄像头预览捕获图像的最佳 DirectShow 方式? SampleGrabber 已弃用

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:47:28 25 4
gpt4 key购买 nike

我开发了 DirectShow C++ 应用程序,它成功地将网络摄像头 View 预览到提供的窗口中。现在我想从这个实时网络摄像头预览中捕捉图像。为此,我使用了图形管理器、ICaptureGraphBuilder2、IMoniker 等。我搜索并找到了以下选项:WIA 和 sample 采集器。许多人建议使用 SampleGrabber,但根据 MS 的 msdn 文档 SampleGrabber已弃用,不应使用。而且我不想使用 WIA API。

那么从实时网络摄像头预览中捕获图像的最佳 DirectShow 方法是什么?

最佳答案

这是来自 DxSnap sample from DirectShow.NET library 的引述:

Use DirectShow to take snapshots from the Still pin of a capture device. Note the MS encourages you to use WIA for this, but if you want to do in with DirectShow and C#, here's how.

Note that this sample will only work with devices that output uncompressed video as RBG24. This will include most webcams, but probably zero tv tuners.

这是 C# 代码,但您应该明白了,因为接口(interface)都是一样的。还有其他关于如何在 C++ 中使用 Sample Grabber Filter 的示例。

Sample Grabber 已被弃用, header 已从几个最新的 SDK 中删除,但是运行时组件都在那里并且将在那里很长时间,否则大量应用程序将被破坏(例如视频聊天在浏览器托管的 GMail 中使用 Sample Grabber)。所以基本上 Sample Grabber 仍然是一种从网络摄像头捕获快照的简单方法,或者如果您更喜欢遵循最新的 MS API - 您可能想要查看 Media Foundation(2016 年 7 月 9 日更新:新的 Windows Server 安装可能需要一个来添加“媒体基础”和/或“桌面体验”功能,以使媒体基础 API 与 DirectShow 和 DirectShow 编辑服务一起可用,Sample Grabber 是其中的一部分。默认安装不提供 qedit .dll 开箱即用)。

此外,在 C++ 中,您当然不必使用 Sample Grabber Filter。您可以使用 DirectShow BaseClasses 开发自定义过滤器作为自定义转换过滤器或自定义渲染器,它们接受传入的视频馈送并从 DirectShow 管道导出帧。另一种选择是使用来自一个较旧 SDK 的 Sample Grabber 示例源代码(这不是 OS Sample Grabber 的确切源代码,但它在做同样的事情)。不过,Windows 附带的 Sample Grabber 仍然是一个不错的选择。

关于c++ - 从网络摄像头预览捕获图像的最佳 DirectShow 方式? SampleGrabber 已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11398758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com