You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Directshow GraphEdit相机采集同设备无法创建双图问题咨询

DirectShow单Graph实现相机预览+图像抓拍+视频录制的解决方案

大多数UVC类USB相机的捕获引脚同一时间仅支持被一个Filter Graph独占访问,你遇到的二次调用时引脚被禁用是正常的硬件访问限制,无需创建多个Graph,单Graph内通过分流即可实现所有需求。

核心所需Filter

  • Smart Tee Filter:这是实现分流的核心系统自带Filter,可将相机输出的单路视频流拆为两路独立输出,分别对应预览分支和捕获分支,两路流互不干扰
  • Sample Grabber Filter:用于静态图像抓拍,可在不中断流传输的前提下获取当前帧数据
  • AVI Mux Filter + File Writer Filter:用于视频录制,可单独控制启停不影响预览

完整Graph搭建链路

按以下顺序连接所有Filter即可,全程仅占用相机一次,不会触发独占限制:

  1. 相机视频捕获源Filter的输出引脚 → 第一个Smart Tee Filter的输入引脚
  2. 第一个Smart Tee Filter的Preview输出引脚 → Video Renderer Filter,该路负责持续输出实时预览画面
  3. 第一个Smart Tee Filter的Capture输出引脚 → 第二个Smart Tee Filter的输入引脚(如果不需要同时进行抓拍和录制,可省略第二个Smart Tee,需要时动态切换连接即可)
  4. 第二个Smart Tee Filter的Preview输出引脚 → Sample Grabber Filter,用于点击抓拍按钮时获取帧数据
  5. 第二个Smart Tee Filter的Capture输出引脚 → AVI Mux Filter输入引脚 → File Writer Filter,用于视频录制

功能实现注意事项

  • 图像抓拍无需中断预览:点击抓拍按钮时直接调用ISampleGrabber::GetCurrentBuffer接口读取当前帧的内存数据,转存为JPG/PNG等格式即可,全程预览流保持正常运行
  • 视频录制启停无需重建Graph:调用ICaptureGraphBuilder2::ControlStream接口即可单独控制录制分支的流传输启停,预览全程不受影响
  • 推荐使用ICaptureGraphBuilder2接口辅助构建Graph,可自动匹配各引脚的媒体类型,避免手动连接时出现媒体类型不匹配的问题
  • GraphEdit调试阶段可先手动搭建上述链路,验证预览、抓帧、录制功能都正常后再用代码复现相同结构即可

内容的提问来源于stack exchange,提问作者Dipak D Desai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:06:06