Files
OBS-WebKitGTK/README.md
2026-07-18 08:18:50 +05:00

3.7 KiB
Raw Blame History

OBS WebKit Browser Source (без CEF)

Нативный input source для OBS Studio на Alpine Linux. Страницы рендерит системный WebKitGTK 4.1 в отдельном процессе на приватном Xvfb-дисплее; Chromium/CEF в проекте нет. Кадры передаются в OBS напрямую как BGRA, без FFmpeg и захвата рабочего стола.

Поддерживается:

  • HTTP/HTTPS, data: URL и локальные HTML-файлы;
  • прозрачный фон с alpha-каналом;
  • пользовательский CSS;
  • размер 28192 px и 160 FPS;
  • аппаратный WebKit compositor через DRM/DMA-BUF (Mesa radeonsi на AMD), при этом Xvfb используется только как изолированный невидимый дисплей;
  • прямой XShm-захват итогового кадра Xvfb для непрозрачных страниц и XComposite/XShm-захват с alpha для прозрачных;
  • shared-memory транспорт кадров без многомегабайтной записи в pipe;
  • мышь, прокрутка, фокус и базовый ввод с клавиатуры через окно Interact OBS;
  • перезагрузка страницы и остановка renderer-процесса у скрытого source.

Звук страницы намеренно выключен: добавьте в OBS отдельный Application Audio Capture. Renderer всегда использует отдельный приватный Xvfb-дисплей и не создаёт окон на рабочем столе. WebKit принудительно включает аппаратный compositor и выбирает доступный DRM render node; для него нужен доступ к /dev/dri/renderD*. Для тяжёлого полноэкранного filter: blur() всё ещё разумно выбирать реальный размер виджета вместо рендера 4K/1080p с последующим уменьшением в сцене. Пользовательские will-change и compositor hints сохраняются, но renderer не внедряет их в страницу сам: WebKit сам распределяет элементы по GPU-слоям.

Это рабочий backend, а не замена всех расширенных возможностей штатного obs-browser (DevTools, cookies API, browser docks и DRM здесь пока отсутствуют).

Сборка на Alpine

chmod +x scripts/install-deps-alpine.sh
./scripts/install-deps-alpine.sh
/usr/bin/cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
/usr/bin/cmake --build build
ctest --test-dir build --output-on-failure
doas /usr/bin/cmake --install build --prefix /usr

После установки перезапустите OBS и добавьте источник Браузер WebKit (без CEF). Если OBS установлен в нестандартный prefix, задайте при конфигурации OBS_PLUGIN_DIR и OBS_PLUGIN_DATA_DIR.

Почему WebKitGTK, а не WPE

WPE архитектурно подходит лучше всего, но пакет wpewebkit отсутствует в актуальном Alpine edge/3.24 (остались только libwpe и backend). WebKitGTK 4.1 есть в текущем репозитории Alpine, использует тот же WebKit и не зависит от CEF. Renderer изолирован от OBS, поэтому падение Web-процесса не должно уронить студию.