[DirectShow] [bug调研] 捕获多个摄像头时 后续的摄像头初始化失败
来源:互联网 发布:mysql远程访问权限 编辑:程序博客网 时间:2024/05/02 15:31
场景》
在做一个直播工具,项目里实现了RenderFilter,可同时接收若干个摄像头的音视频数据并渲染
问题》
当添加多个摄像头时(每一个摄像头会单独创建一个IGraphBuilder进行Filter管理),在部分电脑(目前发现笔记本最容易复现)上,初始化第三个摄像头时 函数调用会失败: IMediaControl::Run() 返回错误码 0x8007001F。
参考OBS、斗鱼TV等直播软件 也都有该问题 :在笔记本上添加到第n个摄像头时 摄像头画面捕获不到(通常是添加到第三个)
调查结论》
根源是USB bandwidth的限制 当所有摄像头的bandwidth总和超过硬件支持的量以后 就不能再创建DirectShow采集实例了
经搜索相关信息 该问题只能优化 不能彻底解决,需要同时采集多个摄像头时 优化办法有两个:
办法1: 使用PCI Card ,扩容USB bandwidth
办法2:每一个摄像头初始化时 尽量使用低的分辨率和码率参数(该方法已验证有效)
网上发现的与该问题现象一致的case:
1、http://bbs.csdn.net/topics/340220585
2、https://github.com/sarxos/webcam-capture/issues/139
3、http://stackoverflow.com/questions/11986119/run-multiple-webcams-at-a-time-using-directshow
4、http://superuser.com/questions/40715/recording-from-two-webcams-simultaneously-on-one-computer
其中第3、4点指出 根源是USB接口有bandwidth的限制 当所有摄像头的bandwidth总和超过硬件支持的量以后 就不能再创建DirectShow采集实例了
- [DirectShow] [bug调研] 捕获多个摄像头时 后续的摄像头初始化失败
- 基于 VC+OpenCV+DirectShow 的多个摄像头同步工作
- 基于 VC+OpenCV+DirectShow 的多个摄像头同步工作
- 使用directshow控制摄像头预览捕获视频
- opecv2.3+directshow操作多个摄像头配置
- 捕获摄像头
- OpenCV学习笔记(6)基于 VC+OpenCV+DirectShow 的多个摄像头同步工作
- OpenCV学习笔记(6)基于 VC+OpenCV+DirectShow 的多个摄像头同步工作
- OpenCV学习笔记(6)基于 VC+OpenCV+DirectShow 的多个摄像头同步工作
- 摄像头捕获的最佳方法
- 利用directshow进行摄像头的开发
- wince下的directshow摄像头应用程序介绍
- DirectShow自带的实例(打开摄像头)
- directshow抓取摄像头数据的封装类
- 使用DirectShow驱动摄像头
- 使用DirectShow驱动摄像头
- 使用DirectShow驱动摄像头
- 使用DirectShow驱动摄像头
- iptables交互输入输出脚本实例
- SystemUI之任务管理器
- 【Latex】我的第一个latex中文周报
- Spring 资源访问剖析和策略模式应用
- mysql文件的导入与导出
- [DirectShow] [bug调研] 捕获多个摄像头时 后续的摄像头初始化失败
- org.springframework.dao.InvalidDataAccessResourceUsageException异常
- C++的const类成员函数
- linux(ubuntu)安装中文输入法
- 中序遍历,层次遍历构建二叉树
- 面向对象编程思想
- 连接两地的交通枢纽——桥接模式
- Unity编译Android的原理解析和apk打包分析
- info.plist 隐私权限 国际化