Я хочу написать свои собственные фильтры камеры для видеочата и в идеале применять их в любом / всех популярных приложениях видеочата (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 году?
Все, что проливает свет на все это, будет высоко оценено!