Фильтр OBS не переключается при использовании OBS Websocket ⇐ Javascript
Фильтр OBS не переключается при использовании OBS Websocket
Я пытался заставить фильтр в OBS переключаться с помощью веб-сокета OBS двумя способами.
Первый способ — программирование пакетного файла с использованием инструмента командной строки OBSCommand.exe. Имейте в виду, что весь необходимый код уже имеется. Это всего лишь строка кода для запуска этого действия:
OBSCommand.exe /server=%localIP%:%OBSWSSerPor% /password=%OBSWSPass% /setsourcefiltervisibility="MS1","Record - MS1",true
Это должно было выбрать источник «MS1» и переключить фильтр «Запись - MS1» на значение true. Я попробовал это без использования пробелов.
Второй способ, который я попробовал, — через OBS Websocket в html-файле с помощью js-скрипта. Код, который я использовал для второго метода, я оставлю ниже этого поста. Метод по сути тот же, вызывает ту же команду: setsourcefiltervisibility, но этот метод также не работает. Я считаю, что проблема связана с командой setsourcefiltervisibility. Кажется, соединение разрывается при выполнении этой команды.
Насколько мне известно, я выполнил все необходимое для его функционирования, но ни для одного из методов этого не происходит. Нигде не могу найти ответ на этот вопрос. Возможно, это проблема синтаксиса, но я не уверен.
Метод, который я бы предпочел использовать, — это метод пакетного файла, поскольку он мне наиболее знаком. Но я был бы признателен за любую помощь в любом случае. Имейте в виду, что я использовал ChatGPT для создания кода файла JS в сочетании с используемыми файлами html и css.
Заранее благодарим за любую помощь!
Вот код файла JS:
const toggleButtons = document.querySelectorAll(".toggle-button"); // Объявляем сокет как переменную let пусть сокет = ноль; функция ConnectWebSocket() { // Установите соединение WebSocket с OBS (замените URL-адресом WebSocket OBS, именем пользователя и паролем) сокет = новый WebSocket("ws://MyPassw0rdExample123@localhost:4455"); сокет.onopen = функция () { console.log("Соединение WebSocket установлено."); }; сокет.onmessage = функция (событие) { константное сообщение = JSON.parse(event.data); if (message.updateType === "SwitchScenes") { // Обработка событий переключения сцены, если необходимо } }; сокет.onerror = функция (ошибка) { console.error("Ошибка WebSocket:", error); console.error("Код ошибки WebSocket:", error.code); console.error("Сообщение об ошибке WebSocket:", error.message); }; сокет.onclose = функция (событие) { если (код события === 1000) { console.log("Соединение WebSocket закрыто корректно."); } еще { console.error("Соединение WebSocket неожиданно закрыто. Попытка переподключения..."); console.error("Код закрытия WebSocket:", event.code); console.error("Причина закрытия WebSocket:", event.reason); setTimeout (connectWebSocket, 3000); // Повторить попытку через 3 секунды (при необходимости отрегулируйте) } }; } подключитьВебСокет(); // Первоначальное соединение функция toggleFilter(кнопка) { const sourceName = button.dataset.sourceName; const isFilterEnabled = button.classList.contains("запись"); // Создаем сообщение константное сообщение = { requestType: "SetSourceFilterVisibility", имя_источника: Имя_источника, filterName: "Резкость", // Замените на имя фильтра filterEnabled: !isFilterEnabled, }; console.log("Сообщение WebSocket:", JSON.stringify(сообщение)); // Регистрируем сообщение WebSocket // Отправляем сообщение сокет.send(JSON.stringify(сообщение)); button.classList.toggle("запись"); console.log(`Фильтр по ${sourceName} включен. Включено: ${!isFilterEnabled}`); } toggleButtons.forEach(функция (кнопка) { button.addEventListener("click", function () { переключитьФильтр (кнопка); const sourceName = button.dataset.sourceName; button.textContent = `${sourceName} *REC ${button.classList.contains("recording") ? 'ВКЛ' : 'ВЫКЛ'}*`; }); }); });
Я пытался заставить фильтр в OBS переключаться с помощью веб-сокета OBS двумя способами.
Первый способ — программирование пакетного файла с использованием инструмента командной строки OBSCommand.exe. Имейте в виду, что весь необходимый код уже имеется. Это всего лишь строка кода для запуска этого действия:
OBSCommand.exe /server=%localIP%:%OBSWSSerPor% /password=%OBSWSPass% /setsourcefiltervisibility="MS1","Record - MS1",true
Это должно было выбрать источник «MS1» и переключить фильтр «Запись - MS1» на значение true. Я попробовал это без использования пробелов.
Второй способ, который я попробовал, — через OBS Websocket в html-файле с помощью js-скрипта. Код, который я использовал для второго метода, я оставлю ниже этого поста. Метод по сути тот же, вызывает ту же команду: setsourcefiltervisibility, но этот метод также не работает. Я считаю, что проблема связана с командой setsourcefiltervisibility. Кажется, соединение разрывается при выполнении этой команды.
Насколько мне известно, я выполнил все необходимое для его функционирования, но ни для одного из методов этого не происходит. Нигде не могу найти ответ на этот вопрос. Возможно, это проблема синтаксиса, но я не уверен.
Метод, который я бы предпочел использовать, — это метод пакетного файла, поскольку он мне наиболее знаком. Но я был бы признателен за любую помощь в любом случае. Имейте в виду, что я использовал ChatGPT для создания кода файла JS в сочетании с используемыми файлами html и css.
Заранее благодарим за любую помощь!
Вот код файла JS:
const toggleButtons = document.querySelectorAll(".toggle-button"); // Объявляем сокет как переменную let пусть сокет = ноль; функция ConnectWebSocket() { // Установите соединение WebSocket с OBS (замените URL-адресом WebSocket OBS, именем пользователя и паролем) сокет = новый WebSocket("ws://MyPassw0rdExample123@localhost:4455"); сокет.onopen = функция () { console.log("Соединение WebSocket установлено."); }; сокет.onmessage = функция (событие) { константное сообщение = JSON.parse(event.data); if (message.updateType === "SwitchScenes") { // Обработка событий переключения сцены, если необходимо } }; сокет.onerror = функция (ошибка) { console.error("Ошибка WebSocket:", error); console.error("Код ошибки WebSocket:", error.code); console.error("Сообщение об ошибке WebSocket:", error.message); }; сокет.onclose = функция (событие) { если (код события === 1000) { console.log("Соединение WebSocket закрыто корректно."); } еще { console.error("Соединение WebSocket неожиданно закрыто. Попытка переподключения..."); console.error("Код закрытия WebSocket:", event.code); console.error("Причина закрытия WebSocket:", event.reason); setTimeout (connectWebSocket, 3000); // Повторить попытку через 3 секунды (при необходимости отрегулируйте) } }; } подключитьВебСокет(); // Первоначальное соединение функция toggleFilter(кнопка) { const sourceName = button.dataset.sourceName; const isFilterEnabled = button.classList.contains("запись"); // Создаем сообщение константное сообщение = { requestType: "SetSourceFilterVisibility", имя_источника: Имя_источника, filterName: "Резкость", // Замените на имя фильтра filterEnabled: !isFilterEnabled, }; console.log("Сообщение WebSocket:", JSON.stringify(сообщение)); // Регистрируем сообщение WebSocket // Отправляем сообщение сокет.send(JSON.stringify(сообщение)); button.classList.toggle("запись"); console.log(`Фильтр по ${sourceName} включен. Включено: ${!isFilterEnabled}`); } toggleButtons.forEach(функция (кнопка) { button.addEventListener("click", function () { переключитьФильтр (кнопка); const sourceName = button.dataset.sourceName; button.textContent = `${sourceName} *REC ${button.classList.contains("recording") ? 'ВКЛ' : 'ВЫКЛ'}*`; }); }); });
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Obs-websocket-js иногда не может подключиться через ngrok из-за ошибки 1006
Anonymous » » в форуме Javascript - 0 Ответы
- 24 Просмотры
-
Последнее сообщение Anonymous
-