У меня была такая же проблема.Причиной такого интересного поведения в моем случае стала веб-камера со встроенным микрофоном.Таким образом, при подключении такого многоцелевого устройства будет два уведомления - одно для устройства захвата видео и второе для встроенного микрофона.
Это список моих общих неисправностей, которые не позволили мне понять ситуацию (возможно,вам поможет):
- Использовалась веб-камера со встроенным микрофоном
- Использовалась [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 - проблем с ним пока не было.