DirectShow学习
+ -

DiectShow可以通过usb口发送指令给相机吗?例如控制相机的焦距

2021-05-22 540 0

在回答上述问题前,我们首先应明确:

DriectShow是什么?

我们知道,UVC摄像头的控制在Windows应用层,可以通过两套框架实现对摄像头的控制接口。
这两套框架分别叫DriectShow和Media Foundation。

DriectShow的相关参考文档及代码

https://docs.microsoft.com/en-us/previous-versions/ms893692(v=msdn.10)

参考代码1:https://www.jianshu.com/p/a67b8cfc57c5
https://docs.microsoft.com/en-us/windows/desktop/DirectShow/video-capture

关于DriectShow的参考开发工程AmCap源码

使用DriectShow进行摄像头应用程序的开发,一般我们采用微软提供的 Microsoft DirectShow AmCap源码。
AmCap的源代码列表如下:

2021/01/07  17:31           164,676 amcap.cpp
2020/07/14  19:59             4,748 amcap.h
2005/01/24  19:15             1,078 amcap.ico
2005/01/24  19:15            16,801 amcap.jpg
2021/01/07  17:35             6,755 amcap.rc
2018/05/04  18:03             2,228 amcap.sln
2005/01/24  19:15             1,332 amcap.sln.old
2011/02/11  13:58            11,660 amcap.vcproj
2021/01/11  19:41            50,710 amcap.vcxproj
2020/08/24  10:02             1,979 amcap.vcxproj.filters
2016/11/21  14:07               143 amcap.vcxproj.user
2020/08/24  10:43                27 config.ini
2005/01/24  19:15            18,363 crossbar.cpp
2005/01/24  19:15             2,703 crossbar.h
2005/01/24  19:15            15,916 makefile.x64
2020/08/24  09:58            78,951 resource.h
2005/01/24  19:15            46,066 SampleCGB.cpp
2005/01/24  19:15             8,087 SampleCGB.h
2005/01/24  19:15             9,002 status.cpp
2005/01/24  19:15               832 status.h
2005/01/24  19:15               297 stdafx.cpp
2018/05/08  16:32             1,255 stdafx.h
2018/08/09  14:53         4,012,914 strmbasd.lib
2011/02/11  13:58             4,396 UpgradeLog.XML
2016/11/21  14:07             3,498 UpgradeLog2.XML

使用DirectShow进行UVC控制相机的焦距的技术前提?

UVC控制相机的焦距的概念是UVC相机端点描述符中的内容:

在相机的终端描述符中,bmControls字段使用D5,D6字段进行焦距功能的支持。所以如果想进行相机的焦距的控制,首先得在这里支持该功能。

如何使用DirectShow进行UVC控制相机的

如果UVC摄像头支持集距的控制,那么我们可以使用UVC相机终端的控制请求进行焦距的控制。
这两件选择子分别为:

  • CT_FOCUS_ABSOLUTE_CONTROL - 用于绝对控制
  • CT_FOCUS_RELATIVE_CONTRO - 用于相对控制

如果以上都实现了,那么我们编译AmCap源码源代码,运行程序,打开摄像头,在其属性控制上可以进行摄像头焦距的控制。
本机测试的摄像头不支持摄像头焦距的控制。
如下图:

1611371176205

1614073969877

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

DiectShow可以通过usb口发送指令给相机吗?例如控制相机的焦距
在回答上述问题前,我们首先应明确:DriectShow是什么?我们知道,UVC摄像头的控制在Windows应用层,可以通过两套框架实现对摄像头的控制接口。这两套框架分别叫DriectShow和Media Foundation。DriectShow的相关参考文档及代码https://docs.micr......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!