Устройство камеры на MAC OS

Подключив мою веб-камеру, я могу управлять видео / аудио потоком в моем приложении MAC OS. Теперь я хотел бы вывести его как новое виртуальное видео / аудиоустройство, которое я могу выбрать в качестве входа камеры в таких приложениях, как "Skype" или QuickTime.

Я посмотрел на фреймворк I / O Kit, и ссылка на веб-странице говорит это:

"Чтобы добавить возможности цифрового видео в ваше программное обеспечение, используйте API-интерфейсы QuickTime".

Я считаю, что это нужно обновить, потому что API QuickTime были заменены CoreMedia IO.

Поэтому я заглянул в CoreMediaIO и нашел пример кода с веб-сайта Apple dev, который также устарел и не будет работать на XCode 7.x с ОС Yosemite+.

Я также посмотрел в AVFoundation, но это похоже на тупик.

Я потерян в этой точке. Я знаю, что это выполнимо, поскольку программное обеспечение CamTwist делает это.

У кого-нибудь есть идеи, как к этому подойти?

2 ответа

CoreMediaIO - это определенно верный путь, поскольку Apple сейчас использует его в своем оборудовании. В моей системе (2015 rMBP), /Library/CoreMediaIO/Plug-Ins/DAL/ содержит AppleCamera.plugin а также iOSScreenCapture.plugin, для веб-камеры и захвата от iDevice.

Я предполагаю, что пример, на который вы ссылаетесь, это?

Он не совсем компилируется из коробки, но я получил его для сборки с OSX 10.11 SDK в конце концов. Вам нужны классы Apple Audio Audio Utility, укажите на них группу "Sources/Extras/CoreAudio/PublicUtility" в проекте Xcode, а затем исправьте инициализацию переменной (удалите = NULL где он жалуется на частный конструктор) и закомментируйте несколько строк в SamplePrefix.h. Я не управлял этим, но я не вижу причины, почему это не будет. Если у вас нет сертификата подписи kext, вам может потребоваться предпринять шаги для загрузки неподписанных kext s для запуска образца.

Использует ли ваша веб-камера старый драйвер цифрового дигитайзера (файл.component драйвера находится в /Library/QuickTime)? Я мог видеть свою UVC-камеру и DAL-камеру в плеере QuickTime. Насколько я понимаю, приложения, написанные в AVFoundation, не будут использовать старый драйвер vdig. Напротив, приложения, написанные с использованием Sequence Grabber (очень старый) / QTCapture (старый), приведут в порядок ваше устройство.

Надеюсь это поможет.

Другие вопросы по тегам