Как выставить виртуальную камеру на macOS? - PullRequest
4 голосов
/ 09 апреля 2020

Я хочу написать свои собственные фильтры камеры для видеочата и в идеале применять их в любом / всех популярных приложениях видеочата (Zoom, Hangouts, Skype и др. c.). Я представляю себе эту работу, чтобы написать приложение для MacOS, которое читает канал камеры, применяет мои фильтры и предоставляет дополнительную виртуальную камеру. Эту виртуальную камеру затем можно было бы выбрать в любом приложении видеочата.

Я потратил много часов на изучение того, как это сделать, и мне все еще неясно, возможно ли это даже с современными API-интерфейсами macOS. Есть несколько похожих вопросов о StackOverflow (например, здесь , здесь ), но они либо без ответа, либо очень старые. Я надеюсь, что этот вопрос соберет советы / ссылки / идеи в правильном направлении, как это сделать с 2020 года.

Вот что я получил до сих пор:

  • В сообществе потокового вещания есть популярный инструмент под названием OBS Studio. Он захватывает входные данные из разных источников (камера, рабочий стол и т. Д. c.), Имеет систему плагинов для применения эффектов, а затем передает поток в популярные службы (например, Twitch). Тем не менее, нет никакой функциональности, чтобы представить поток как виртуальную камеру в MacOS. Обсуждая это ( thread , thread ), люди рассказывают об инструменте, называемом Siphon, и инструменте, который называется CamTwist.

  • К сожалению, Siphon больше не предоставляет виртуальную камеру : "SyphonInject НЕТ Дольше работает в macOS 10.14 (Mojave). Apple закрыла лазейку, позволяющую загружать добавления сценариев в глобальные каталоги в любой процесс. Попытка добавить в любой процесс процесс молча завершится ошибкой. Он будет работать, если SIP отключен, но это ужасная идея, и я не собираюсь предлагать или помогать кому-либо в этом. "

  • К счастью, CamTwist работает. Я запустил его на своей MacOS Catalina, применил некоторые встроенные эффекты к потоку с камеры и увидел, что он отображается как новая камера в моих настройках Hangouts (после перезапуска Chrome). Это было обнадеживающим.

  • К сожалению, CamTwist довольно старый и не в хорошем состоянии. Он использует Quartz Composer для реализации эффектов, но Quartz Composer был устарел от Apple, и он, вероятно, живет последние дни в Каталине.

  • MacOS SDK раньше имел API под названием CoreMediaIO , который, возможно, был способом выставления виртуальной камеры, но этот API также не рекомендуется. Это не ясно , если / какова современная альтернатива.

  • Я думаю, еще один способ задать весь этот вопрос: как реализован CamTwist, почему он все еще работает в macOS Catalina, и как бы вы реализовали то же самое в 2020 году?

Все, что проливает свет на все это, будет высоко оценено!

Ответы [ 2 ]

1 голос
/ 12 апреля 2020

Я также хочу создать собственный фильтр камеры, такой как Snap Camera. Поэтому я исследовал CoreMediaIO и Siphon. Вы проверяли этот проект Github? https://github.com/lvsti/CoreMediaIO-DAL-Example

Этот репозиторий начался как форк официального образца кода CoreMediaIO от Apple. Вы знаете, оригинальный код не очень хорошо устарел с тех пор, как в последний раз его обновляли в 2012 году. Таким образом, владелец хранилища изменился, чтобы его можно было компилировать в современных системах.

И вы можете знать, что код работает в macOS 10,14 (Мохаве), чтобы увидеть следующую проблему. https://github.com/lvsti/CoreMediaIO-DAL-Example/issues/4

На самом деле я еще не создал фильтр камеры, потому что не знаю, как отправлять изображения на виртуальную камеру, созданную CoreMediaIO. Я хотел бы знать больше информации. Если знаешь, пожалуйста, скажи мне.

0 голосов
/ 09 апреля 2020

CamTwist использует CoreMedioIO. Что заставляет вас думать, что это устарело? Глядя на заголовки в 10.15 SDK, я не вижу признаков того, что он устарел. Недавно были обновления 10.14.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...