我有同样的问题。就我而言,这种有趣行为的原因是带有内置麦克风的网络摄像头。因此,当连接此类多功能设备时,将有两个通知 - 一个用于视频捕获设备,第二个用于内置麦克风。
这是阻止我了解情况的一般错误列表(可能会对您有所帮助):
- 曾使用内置麦克风的网络摄像头
- 使用 [QTCaptureDevice inputDevicesWithMediaType:] 而不是 [QTCaptureDevice inputDevices]。这使我无法看到连接的其他类型的设备(例如麦克风)
- 在我的测试中,当没有“视频”设备时,我什么也没记录。这就是我看到两个连接的通知(视频、视频+麦克风)和只有一个断开连接的通知(-mic、-video)的原因——起初这让我很困惑。
这是我测试的日志。
在设备上附加第一个通知是:
Device++ #0: "AppleHDAEngineInput:1B,0,1,1:4" - "AppleHDA:12"
Device++ #1: "AppleHDAEngineInput:1B,0,1,0:3" - "AppleHDA:12"
Device++ #2: "0xfd100000046d0990" - "UVC Camera VendorID_1133 ProductID_2448"
你可以单独看到UVC相机。第二个通知是:
Device++ #0: "AppleHDAEngineInput:1B,0,1,1:4" - "AppleHDA:12"
Device++ #1: "AppleUSBAudioEngine:Unknown Manufacturer:Logitech Camera:5895DC4F:3" - "AppleUSBAudioDevice:Logitech Camera"
Device++ #2: "AppleHDAEngineInput:1B,0,1,0:3" - "AppleHDA:12"
Device++ #3: "0xfd100000046d0990" - "UVC Camera VendorID_1133 ProductID_2448"
您可以看到 UVC 摄像头和 AppleUSBAudioEngine - 麦克风。
在设备分离时也会有两个通知。第一:
Device-- #0: "AppleHDAEngineInput:1B,0,1,1:4" - "AppleHDA:12"
Device-- #1: "AppleHDAEngineInput:1B,0,1,0:3" - "AppleHDA:12"
Device-- #2: "0xfd100000046d0990" - "UVC Camera VendorID_1133 ProductID_2448"
没有麦克风,UVC 摄像头还在。第二次通知:
Device-- #0: "AppleHDAEngineInput:1B,0,1,1:4" - "AppleHDA:12"
Device-- #1: "AppleHDAEngineInput:1B,0,1,0:3" - "AppleHDA:12"
没有 UVC 摄像头,没有麦克风。
此外,QTKit 可能可以“合并”通知,因为有时我只收到一个通知(一个用于连接,一个用于断开连接),因此实际通知数量不仅取决于连接或断开连接的(子)设备的数量。
对于localizedDisplayName - 还没有问题。