OBS WebSocket: как подключить и проверить управление OBS

Короткий ответ: obs websocket нужен, чтобы управлять OBS Studio извне: переключать сцены, получать статус записи, менять источники, реагировать на события. В OBS Studio 28 и новее WebSocket уже встроен. Обычно достаточно открыть Tools -> obs-websocket Settings, включить сервер, поставить пароль и подключиться к адресу ws://127.0.0.1:4455

Если у вас свежий OBS, отдельный плагин чаще не нужен. Отдельный obs-websocket скачивают в основном для старых версий OBS

Что проверить в OBS

Откройте OBS Studio и проверьте:

  • меню Tools;
  • пункт obs-websocket Settings;
  • порт, обычно 4455;
  • включена ли аутентификация;
  • какой пароль задан.

Пароль лучше не отключать. Через WebSocket можно управлять сценами и источниками, поэтому открытый доступ к OBS — плохая идея даже на локальной машине

Подключение из JavaScript

Самый удобный путь для практики — использовать готовую клиентскую библиотеку:

mkdir obs-ws-demo
cd obs-ws-demo
npm init -y
npm install obs-websocket-js

Создайте index.mjs:

import OBSWebSocket from "obs-websocket-js";

const obs = new OBSWebSocket();

try {
  await obs.connect("ws://127.0.0.1:4455", "ВАШ_ПАРОЛЬ");
  console.log("Подключились к OBS");

  const version = await obs.call("GetVersion");
  console.log("OBS:", version.obsVersion);
  console.log("obs-websocket:", version.obsWebSocketVersion);

  const scene = await obs.call("GetCurrentProgramScene");
  console.log("Текущая сцена:", scene.currentProgramSceneName);

  await obs.disconnect();
} catch (error) {
  console.error("Ошибка подключения:", error);
}

Запустите:

node index.mjs

Если пароль и порт указаны правильно, в терминале появится версия OBS и название текущей сцены

Как переключить сцену

Когда подключение работает, можно отправить команду:

await obs.call("SetCurrentProgramScene", {
  sceneName: "Scene 2",
});

Название сцены должно совпадать с тем, что есть в OBS. Если сцены Scene 2 нет, OBS вернет ошибку

Для диагностики сначала получите список сцен:

const scenes = await obs.call("GetSceneList");

for (const scene of scenes.scenes) {
  console.log(scene.sceneName);
}

Так вы не будете гадать, как именно называется сцена в OBS

Что происходит под капотом

obs-websocket использует обычное WebSocket-соединение, но поверх него работает собственный протокол OBS. После подключения OBS отправляет сообщение Hello, клиент отвечает Identify, а затем можно отправлять Request и получать RequestResponse

На практике новичку не обязательно руками собирать все эти JSON-сообщения. Клиентская библиотека делает рукопожатие, а вы работаете с понятными вызовами вроде GetVersion, GetSceneList, SetCurrentProgramScene

Частые ошибки

ECONNREFUSED или похожая ошибка означает, что OBS не запущен, WebSocket-сервер выключен или порт указан неверно

Ошибка аутентификации означает неправильный пароль. Проверьте настройки obs-websocket Settings и не путайте пароль от трансляции с WebSocket-паролем

Если код подключается к localhost, а OBS запущен на другой машине, используйте IP этой машины и проверьте firewall. Для удаленного доступа особенно важно оставить пароль и не открывать порт в интернет без защиты

Если команда переключения сцены не работает, сначала получите список сцен через GetSceneList. В названиях важны пробелы, регистр и символы

Самопроверка

Сделайте три шага:

  1. Получите GetVersion.
  2. Получите GetSceneList.
  3. Переключитесь на одну из реально существующих сцен.

Если все три шага проходят, obs websocket настроен правильно: OBS принимает соединение, авторизация работает, клиент отправляет команды, а OBS меняет состояние

Что почитать дальше по WebSocket

Если нужен общий маршрут по теме, откройте рубрику WebSocket. Для соседних задач пригодятся эти разборы:

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x