关于 DirectShow 中 Sample Grabber 的范围

发布于 2024-11-16 11:58:49 字数 397 浏览 2 评论 0原文

我的网络摄像头实时捕捉应用程序有 2 个相关问题。

  1. 网络摄像头以不同的格式捕获数据,例如 YUY2、RGB24、I420、MJPG 等。无论输入格式如何,我都需要将捕获的数据转换为 I420。因此,我需要了解 Direct Show 内置变换过滤器(例如 Sample Grabber)的当前范围/功能。样本采集器至少支持这么多转换吗?还是我必须编写自己的自定义过滤器?

  2. 许多网络摄像头似乎都有多种格式输出。当我连接媒体类型设置为 I420 的 Sample Grabber 时,Sample Grabber 过滤器是否会与网络摄像头驱动程序对话,以确保网络摄像头输出的数据将为 I420(如果网络摄像头支持)。

我已经发布了与上述相关的问题,但无法得到完全解答。请帮忙。

I have 2 related questions for my web cam live capture application.

  1. The webcams capture data in varying formats such as YUY2, RGB24, I420, MJPG etc. I need to convert the captured data to I420 irrespective of the input format. Hence I need to know the current scope/capability of the Direct Show inbuilt Transform filter such as Sample Grabber. Will the Sample Grabber support at least these many transformations? Or will I have to write my own custom filters?

  2. Many of the webcams seem to have multiple format output. When I connect Sample Grabber whose media type is Set to I420, will the Sample Grabber filter talk to the Web camera driver to make sure that the data output from Webcam will be I420 ( if the Web cam has support).

I had already posted questions related to the above, but couldn't get them fully answered. Please help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

残疾 2024-11-23 11:58:49

Sample Grabber 不会更改数据的媒体类型,但如果您在连接之前设置首选媒体类型,则它将要求输入流为该媒体类型。只需使用 RenderStream(智能连接,而不是直接连接),DirectShow 将插入所需的解码器或转换器(如果存在)。

Sample Grabber does not change media type of the data, but if you set a preferred media type before connecting then it will require the input stream to be of that mediatype. Just use RenderStream (intelligent connect, not direct one) and DirectShow will insert required decoders or transformers, if they are present.

半夏半凉 2024-11-23 11:58:49

查看 directx sdk 中的 RGBFilters 示例。例如,其中包含的过滤器之一是 TransNull24。该过滤器将传递所有未修改的样本,但仅当输入为 MEDIASUBTYPE_RGB24 时才能连接。您要做的是将网络摄像头过滤器连接到 TransNull24,并将 TransNull24 与采样采集器连接。如果网络摄像头能够输出 RGB24,则将使用它。否则,将在网络摄像头和 TransNull24 之间自动添加变换过滤器。现在,即使网络摄像头不直接支持,您的样本采集器中也只能接收 RGB24。

当然,您不需要 RGB24,但您可以简单地修改示例过滤器并创建您自己的 TransNullI420 过滤器。我不确定标准色彩空间转换过滤器是否可以输出 I420,因此您可能需要安装 ffdshow,然后将其配置为转换未压缩的视频。

Take a look at the RGBFilters example in the directx sdk. For example one of the filters included is TransNull24. That filter will pass all samples unmodified, but is only able to connect when the input is MEDIASUBTYPE_RGB24. What you do is connect the webcam filter to the TransNull24, and the TransNull24 with the samplegrabber. If the webcam is able to output RGB24, that will be used. Otherwise a transform filter will be automatically added between the webcam and the TransNull24. Now you will only receive RGB24 in your samplegrabber, even if the webcam does not support that directly.

Of course you don't need RGB24, but you can simply modify the example filter and create your own TransNullI420 filter. I am not sure the standard color space conversion filter can output I420, so you might need to install ffdshow, en configure it to convert uncompressed video.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文