关于DirectShow中样本抓取器的范围

关于DirectShow中样本抓取器的范围,directshow,webcam,Directshow,Webcam,我有两个关于我的网络摄像机实时捕获应用程序的相关问题 网络摄像头以不同的格式捕获数据,如YUY2、RGB24、I420、MJPG等。我需要将捕获的数据转换为I420,而不考虑输入格式。因此,我需要知道Direct Show内置转换过滤器(如采样采集器)的当前范围/功能。示例抓取器是否至少支持这些转换?或者我必须编写自己的自定义过滤器 许多网络摄像头似乎有多种格式输出。当我连接媒体类型设置为I420的样本抓取器时,样本抓取器过滤器是否会与网络摄像头驱动程序对话,以确保网络摄像头输出的数据为I420

我有两个关于我的网络摄像机实时捕获应用程序的相关问题

  • 网络摄像头以不同的格式捕获数据,如YUY2、RGB24、I420、MJPG等。我需要将捕获的数据转换为I420,而不考虑输入格式。因此,我需要知道Direct Show内置转换过滤器(如采样采集器)的当前范围/功能。示例抓取器是否至少支持这些转换?或者我必须编写自己的自定义过滤器

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


  • 我已经发布了与上述相关的问题,但无法得到完整的回答。请提供帮助。

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


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

    采样采集程序不会更改数据的媒体类型,但如果在连接之前设置首选媒体类型,则需要输入流为该媒体类型。只需使用RenderStream(智能连接,而不是direct one),DirectShow将插入所需的解码器或转换器(如果有)