QTCaptureDeviceWasConnectedNotification - PullRequest
       7

QTCaptureDeviceWasConnectedNotification

3 голосов
/ 10 февраля 2011

Я разрабатываю приложение для рабочего стола, в котором перечислены веб-камеры, подключенные к системе.Когда пользователь выбирает потоковое приложение веб-камеры с устройства в QTCaptureView.Я зарегистрировался в уведомлении QTCaptureDeviceWasDisconnectedNotification и QTCaptureDeviceWasConnectedNotification, так что я удаляю и добавляю устройство в список, когда устройство отключается и подключается.

Проблема в том, что QTCaptureDeviceWasConnectedNotification публикуется дважды, когда устройствоподключен.В чем причина этого?

Кроме того, в одной из моих Mac Book я часто получаю следующую проблему.Устройство, полученное из 2-го уведомления QTCaptureDeviceWasConnectedNotification (я получаю два уведомления), не имеет локализованного имени описания.Не могли бы вы сказать мне, что здесь могло пойти не так?

Ответы [ 2 ]

1 голос
/ 13 июня 2011

У меня была такая же проблема, поэтому я немного покопался, и действительно, похоже, это связано с устройством, которое содержит как аудио, так и видео.

Итак, я попытался определить, была ли запись аудио или видео, вот что я нашел:

NSArray *inputDevices = [QTCaptureDevice inputDevices]; 
for(QTCaptureDevice *listDevice in inputDevices) {
    NSLog(@"%@",[[[device formatDescriptions] objectAtIndex:0] mediaType]);
}

Выше приведены значения "vide" или "soun", которые являются значениями для QTMediaTypeVideo и QTMediaTypeSound. Таким образом, вы можете проверить, является ли указанное выше значение QTMediaTypeVideo, если вы просто хотите работать с видеоустройством.

Не уверен, поможет ли это вашей проблеме.

1 голос
/ 14 февраля 2011

У меня была такая же проблема.Причиной такого интересного поведения в моем случае стала веб-камера со встроенным микрофоном.Таким образом, при подключении такого многоцелевого устройства будет два уведомления - одно для устройства захвата видео и второе для встроенного микрофона.

Это список моих общих неисправностей, которые не позволили мне понять ситуацию (возможно,вам поможет):

  • Использовалась веб-камера со встроенным микрофоном
  • Использовалась [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 - проблем с ним пока не было.

...