Разработка плагина для OBS Studio

Цена договорная • безналичный расчёт
24 мая 2018, 18:14 • 0 откликов • 22 просмотра
Необходимо написать плагин для Open Broadcast Software (открытый исходный код на C++), есть форум и документация на английском: https://obsproject.com/ru

OBS это мультиплатформенный стриминговый софт. Функционал плагина по сути должен копировать webkit плагин cardspotter в рамках лайв-стрима в OBS.

Объясню его суть: есть такая настольная (и компьютерная тоже в разных вариациях) карточная игра Magic: The Gathering. В неё играют как в реальности за столом (и делают стримы камерой сверху) так и в электронные версии. Cardspotter анализирует видеопоток (youtube и twitch), сам находит расположение новых карт на столе, либо можно настроить в ручном режиме, только когда зритель сам мышкой кликает или наводит на интересующую его карту, считывает их по имени и/или картинке, через API проверяет на совпадения по открытым базам карт, и автоматически выводит найденную карту рядом с окном видео со всей необходимой информацией для зрителя. Пример работы этого плагина можно посмотреть на Youtube:
но данный способ во-первых, не удобен конечному зрителю для расслабленного просмотра, а во-вторых не подходит для полноэкранного режима.

Поэтому многие стримеры предпочитают выводить нужные карты самостоятельно отдельным источником в определённую область своего видеопотока, чтобы в записи потом каждый зритель без дополнительных плагинов мог посмотреть карту. Чаще всего это делают просто ручным поиском нужной карты в интернете и подключением её url.а в BrowserSource OBS. Либо копируют ссылку в чат, который отображается на экране. Это тоже не очень удобно и требует дополнительных лишних телодвижений или отдельного человека - стримить так не удобно.

В общем из описанного, суть должна быть понятна. Необходимо для OBS написать плагин, который будет обрабатывать видеопоток в лайв-режиме, анализировать его полностью или в заданной программно области, определять карты, искать совпадения через api по открытым базам, и в отдельное окно (источник) выводить картинки и дополнительную информацию по карте по аналогии с браузерным плагином cardspotter, только внутри OBS в Live режиме.

В плагине необходимо предусмотреть настройки:
  • отображение: какую именно информацию о карте мы хотим показывать зрителю, кроме картинки. В cardspotter выводятся ссылки, но нам из этого нужна только цена и процент совпадения (чтобы зритель понимал что если процент низкий - возможно отображается не правильная карта).
  • масштабирование размеров под фиксированный размер окна источника (картинки могут быть разных размеров и форматов)
  • предпочитаемый язык карт (как на столе / всегда английский / пытаться искать другой выбранный. например русский). Если выбранный язык не нашёлся - выводить английский.
  • список сервисов и доступы, по которым будет работать поиск карт. Можно использовать как внешний сервис так и локальный (скачать удалённую базу карт на пк и тянуть карты оттуда), и устанавливать приоритет вниз по списку.
  • Настройка области определения карт. На видео может быть стол на весь экран, а может быть на половину. Необходимо сделать выделенную область для таких случаев, и случаев, когда стример хочет, например, показывать зрителю карты только одного из игроков (чтобы можно было выделить половину стола) или только карты из области боя.
  • сцена с плагином должна иметь настройку hotke'ев "назад" и "вперёд" по нажатию на которые перелистываются ранее определённые карты. А также hotkey "показывать принудительно" чтобы стример мог выводить нужные ему карты зрителям в обход алгоритма автоопределения (ручной режим)
  • Предусмотреть в настройках выбор изображения - лайв с камеры, или видеоигра. В разных случаях могут потребоваться разные условия для определения карт. В видеоиграх изображение чётче и карты могут увеличиваться игроком при кликах. Определять так будет гораздо проще.
Готовый код плагина загрузить на github, а блоки кода комментировать понятными объяснениями на случай подключения к проекту других разработчиков. Мультиязычность (EN/RU) комментариев приветствуется, но не обязательна.

Ну и самое главное условие - без говнокода и костылей.

Полезные источники, которые могут понадобиться и помогут в разработке:
  • Актуальная json база карт на github (очень удобная) https://github.com/mtgjson/mtgjso
  • Официальная открытая база карт от разработчиков http://gatherer.wizards.com/
  • Частный клиент игры на java, с открытым кодом, который использует всю базу карт, качает и сортирует все картинки. Может пригодиться для примера. http://xmage.de/
  • Открытая база карт https://magiccards.info/
  • Открытая база карт и магазин (известны цены) http://www.starcitygames.com/
  • Ещё один известный магазин с хорошей базой карт https://www.mtggoldfish.com/
Понятия не имею возможно ли реализовать плагином всё что я только что описал, и сколько это может стоить. В идеале конечно же хотелось бы отделаться символической суммой на печеньки, если найдётся единомышленник, желающий помочь продвижению этой игры на стримах. Либо можем обсудить разработку под платную лицензию (OBS это вроде позволяет, но это не точно) со 100% доходом в ваш карман (минус несколько лицензий мне и моим знакомым) и в этом случае открытая публикация на github и комментарии остаются на ваше усмотрение, как автора кода. С меня в этом случае будут безвозмездные консультации, информационное продвижение (маркетинг) и иное участие, если понадобится.

Так что жду ваши отклики, мнение, и цены. Проект пока на стадии планирования - бюджет обсуждается с единомышленниками, готовыми донатить на это дело. Если найдётся исполнитель с адекватной ценой, будем обсуждать реальные сроки и работу.