是否有可靠的方法来确定相机是否在Microsoft Surface上旋转?
基本上,我想知道设备中是否内置了特定的摄像头(因为它会随设备一起旋转),有没有办法查询?
我的问题是,当用户旋转设备时,我的相机视图被翻转,但我不能假设我应该只旋转读取帧,因为活动相机可能是外部USB相机。
我正在使用Media Foundation API阅读相机。
答案 0 :(得分:2)
基本上,我想知道设备中是否内置了特定的摄像头[...]有没有办法查询?
使用UWP,您可以查看相机的DeviceInformation
enclosureLocation
。panel
属性,该属性为:
front
/ back
/ etc用于集成相机或unknown
用于外置摄像头CameraStarterKit示例中提供了完整的示例。
然而,如果您无法使用UWP,仍应该可以找到基础信息。使用MF,您应该能够访问MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK
。
这就像
\\?\usb#vid_046d&pid_0843&mi_00#6&2314864d&0&0000#{e5323777-f976-4f5b-9b55-b94699c46e44}\global
内置摄像头supposed to register在
中的物理位置HKLM\SYSTEM\CurrentControlSet\Control\InternalDeviceModification\{GUID}
PLD_Panel
键的值应为DWORD,其值与上面引用的Panel
枚举非常相似。
此处,6
表示unknown
。因此,您应该能够检查是否存在此注册表项,如果存在,请检查其值。我怀疑这与UWP所做的相似。
如果做不到这一点,你也可以通过硬编码相机供应商和产品ID或MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME
的某些值来破解支持。