Email or username:

Password:

Forgot your password?
Top-level
Тр3тий Сергеевич

@vint Раз уж меня упомянули... Следует уточнить несколько деталей касательно Jitsi.

У него есть целое API для iframe, позволяющее вшить интерфейс Jitsi Meet в веб-страницу и добавлять/видоизменять его элементы через JS-команды. А ещё есть низкоуровневый API (lib-jitsi-meet), который позволяет подхватывать данные с конференции без привязки к интерфейсу.

Была идея использовать этот API, чтобы "насытить" оверлей на базе Godot. Проблем здесь две:

1) Для работы с JS (а API работает на нём) нужна веб-версия проекта - со всеми вытекающими
2) В сам проект вшить видеопоток с JS не получится, ибо для этого нужен <video>, а интерфейс Godot представляет собой цельный <frame>, отображающий выхлоп от WebAssembly.

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

Надо бы ещё проверить, как сама страница ляжет в качестве слоя в OBS.

9 comments
Тр3тий Сергеевич

@vint Что касается подхвата чата PeerTube, то, думаю, надо покопаться в исходниках плагина чата и посмотреть, какую информацию/события он обнажает, чтобы это можно было отслеживать и ретранслировать - без оглядки на открытую вкладку.

Самое простое решение (к тому же предусмотренное PeerTube) - это вывод "браузера" в слой OBS, где отсвечиваются последние сообщения в чате. Художественное оформление выполняется через CSS.

Тр3тий Сергеевич

@vint Проблема стриминга Jitsi ещё заключается в том, что я через него параллельно взаимодействую с участниками конференции. И скрыть панель управления отдельно для зрителей не представляется возможным.

Одним из вариантов могла бы стать вторая вкладка Jitsi Meet и запущенный из-под нее малоактивный aux-участник, от лица которого и будет вестить запись. Для этой вкладки можно будет включить отдельный CSS. Но в то же время сеть будет принимать в два раза больше медиапотоков (не забываем про первую вкладку).

Винт Прокс

@th3rdsergeevich Очень верное замечание про двойной трафик - итак интернет не к чёрту, а тут ещё удваивать приёмку ради красивостей? Нет уж.

Винт Прокс

@th3rdsergeevich Кстати да, этот плагин сам предоставляет embed-страницу для чата, которую можно показывать через Browser Source в OBS. То бишь эта штука настраивается через OBS и вообще минует захват окна - но это не критично. В случае реализации через отдельную вкладку браузера появляется больше контроля с JavaScript: больше разборчивости в том, какие сообщения показывать. Боюсь представить, через какие грабли нужно прыгать, чтобы ретранслировать чат в движке без использования embed-а (а с интерпретацией embed-а в Godot - ещё больше граблей, наверное).

@th3rdsergeevich Кстати да, этот плагин сам предоставляет embed-страницу для чата, которую можно показывать через Browser Source в OBS. То бишь эта штука настраивается через OBS и вообще минует захват окна - но это не критично. В случае реализации через отдельную вкладку браузера появляется больше контроля с JavaScript: больше разборчивости в том, какие сообщения показывать. Боюсь представить, через какие грабли нужно прыгать, чтобы ретранслировать чат в движке без использования embed-а (а с интерпретацией...

Тр3тий Сергеевич

@vint embed/iframe фиг туда вошьешь, для этого функционала. Можно, конечно, манипулировать JS-объектами, но если исследуемый фрагмент сложнее текстовой строки, то тогда прощай, удобство, здравствуй, трахание с битовыми массивами.

А твой прикол с вкладками, скорее всего, не сработает. Scopes у них не пересекаются, они друг друга видеть не будут.

Винт Прокс

@th3rdsergeevich Прикол с вкладками как раз я проверил на каком-то старом юзерскрипте. Архитектура такая: есть контент-скрипты, встраиваемые в страницы, но есть и фоновый скрипт. Даже в обход фоновой программы можно связать две вкладки друг с дружкой, наважно какие сайты.

Тр3тий Сергеевич

@vint Опять же, нужен PoC. Речь сейчас не о фоновых скриптах, а о контексте, который они создают. Надо поток выдрать из исходного контекста и вставить в другой.

Винт Прокс

@th3rdsergeevich Ещё сейчас думаю, откуда у меня скепсис с задумкой делать фронт на отдельном движке... Дело в том, что ты обозначил двойными медиапотоками. Нужен медиум на стороне браузера, где открыт Jitsi Meet, чтобы отдавать информацию во фронт (новую вкладку или оверлей на Godot). То есть опять нужен юзерскрипт или веб-расширение, чтобы не повторять затратные сетевые запросы во фронте.

Тр3тий Сергеевич

@vint Грубо говоря, как перенести видеопоток из одного инстанса в другой.

Go Up