我正在开发一个桌面应用程序,列出连接到系统的网络摄像头 . 当用户从设备选择web-cam应用程序流到QTCaptureView时 . 我已注册通知 QTCaptureDeviceWasDisconnectedNotification
和 QTCaptureDeviceWasConnectedNotification
,以便在设备断开连接时将设备删除并添加到列表中 .
问题是 QTCaptureDeviceWasConnectedNotification
在连接设备时发布两次 . 这是什么原因?
另外,在我的一本Mac Book中,我经常遇到以下问题 . 从QTCaptureDeviceWasConnectedNotification第二次通知(我得到两个通知)获得的设备没有本地化的描述名称 . 你能告诉我这里可能出了什么问题吗?
2 回答
我有同样的问题 . 在我的案例中,这种有趣行为的原因是内置麦克风的网络摄像头 . 因此,当连接这样的多用途设备时,将有两个通知 - 一个用于视频捕获设备,另一个用于内置麦克风 .
这是我的一般错误列表阻止我理解情况(可能会帮助你):
用过内置麦克风的摄像头
使用了[QTCaptureDevice inputDevicesWithMediaType:]而不是[QTCaptureDevice inputDevices] . 这阻止我看到附加的其他类型的设备(如麦克风)
在我的测试中,当没有"video"设备时我没有记录任何内容 . 这就是我看到两个连接通知(视频,视频麦克风)和只有一个断开连接(-mic,-video)的原因 - 一开始让我很困惑 .
这里记录了我的测试 .
在设备附加上,第一个通知是:
你可以单独看到UVC相机 . 第二个通知是:
您可以看到UVC摄像头和AppleUSBAudioEngine - 麦克风 .
在设备分离时,还会有两个通知 . 第一:
没有麦克风,UVC相机仍然存在 . 第二次通知:
没有UVC相机,没有麦克风 .
此外,QTKit可能会“合并”通知,因为有时我只收到一个通知(一个用于连接,一个用于断开连接),因此实际通知数量不仅取决于连接或断开的(子)设备数量 .
对于localizedDisplayName - 它没有问题 .
我有同样的问题,所以我做了一些挖掘,实际上它似乎与包含音频和视频的设备有关 .
所以我试着确定条目是音频条目还是视频条目,这是我发现的:
以上输出“vide”或“soun”,它们是QTMediaTypeVideo和QTMediaTypeSound的值 . 因此,如果您只想使用视频设备,可以检查上述值是否为QTMediaTypeVideo .
不确定它是否有助于解决您的问题 .