mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Compare commits
106 Commits
5.0.2
...
experiment
Author | SHA1 | Date | |
---|---|---|---|
896bacf550 | |||
81b307e5ad | |||
52733ddce7 | |||
444caeb1d7 | |||
f03e82c3f8 | |||
bbdc5bc823 | |||
9ecc9532e8 | |||
0189c3a3f5 | |||
f48fcc06ec | |||
f43ef8e2da | |||
7a1c71bb96 | |||
cf285b3761 | |||
ede66a68cb | |||
e8089a5bbf | |||
07537a33fa | |||
efeae8d640 | |||
4ff109b62b | |||
42da47f81d | |||
a889799655 | |||
f52f47ec5d | |||
08767ae5a7 | |||
16bf61aab6 | |||
e9c0eee9e4 | |||
f4a3de575c | |||
2bfa1b4c64 | |||
0e611f579b | |||
ec2cdc8475 | |||
3cd8163945 | |||
132d4bafdd | |||
d991e21f29 | |||
a74468e07e | |||
55b3f88db9 | |||
ba7839bb69 | |||
417725801c | |||
93713c438e | |||
6db08f960e | |||
6434c42155 | |||
ac00465565 | |||
2606f262e6 | |||
2caecf6c01 | |||
19170fe6d9 | |||
1fc7900b1c | |||
53d7596160 | |||
886738547a | |||
c11874eb17 | |||
a0ffe16e91 | |||
e3d0751385 | |||
d5185417ec | |||
f7637250f1 | |||
57a9c19f2c | |||
6633144ce8 | |||
6ef055a369 | |||
a4ee9c03ea | |||
9912c9963c | |||
21886adb32 | |||
c85d9143a9 | |||
7ca8d5fc2b | |||
db2c251189 | |||
dd248faecb | |||
68d79b22af | |||
b06da5fa63 | |||
78a1b54a47 | |||
bf277011f9 | |||
96032e0e8c | |||
ddd139255b | |||
edf29e828c | |||
079ab31f88 | |||
e797a3fb34 | |||
a792c59699 | |||
31f9845b61 | |||
cb6f0b8986 | |||
9959acb0e8 | |||
8b1ef17c25 | |||
a254172c12 | |||
57a9e23f16 | |||
4c3660c08d | |||
323b5d0b5d | |||
23f883d906 | |||
60dbcc1b66 | |||
8cabe24b77 | |||
9cfca3c7d1 | |||
cfa0b4363e | |||
815d47e2ff | |||
9bdf560bf8 | |||
47f9beb095 | |||
32d0834c3f | |||
9722ed3df4 | |||
9f72852588 | |||
6e0220ac7b | |||
6d4b7c786e | |||
290e042612 | |||
7e4c9529eb | |||
bc18401fb0 | |||
265899f76f | |||
9e1a41f219 | |||
7893ae5caa | |||
a715639302 | |||
6038fe9a0a | |||
6fba48929a | |||
7eb4eb101c | |||
f2e595e1ab | |||
c1ffbf0111 | |||
f08d3225ad | |||
84542e1ed5 | |||
bb9371b0dc | |||
ab918faea8 |
@ -1,4 +1,10 @@
|
||||
{
|
||||
"format": {
|
||||
"line_width": 120,
|
||||
"tab_size": 2,
|
||||
"enable_sort": true,
|
||||
"autosort": true
|
||||
},
|
||||
"additional_commands": {
|
||||
"find_qt": {
|
||||
"flags": [],
|
||||
@ -8,6 +14,33 @@
|
||||
"COMPONENTS_MACOS": "+",
|
||||
"COMPONENTS_LINUX": "+"
|
||||
}
|
||||
},
|
||||
"set_target_properties_obs": {
|
||||
"pargs": 1,
|
||||
"flags": [],
|
||||
"kwargs": {
|
||||
"PROPERTIES": {
|
||||
"kwargs": {
|
||||
"PREFIX": 1,
|
||||
"OUTPUT_NAME": 1,
|
||||
"FOLDER": 1,
|
||||
"VERSION": 1,
|
||||
"SOVERSION": 1,
|
||||
"FRAMEWORK": 1,
|
||||
"BUNDLE": 1,
|
||||
"AUTOMOC": 1,
|
||||
"AUTOUIC": 1,
|
||||
"AUTORCC": 1,
|
||||
"AUTOUIC_SEARCH_PATHS": 1,
|
||||
"BUILD_RPATH": 1,
|
||||
"INSTALL_RPATH": 1,
|
||||
"XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC": 1,
|
||||
"XCODE_ATTRIBUTE_CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION": 1,
|
||||
"XCODE_ATTRIBUTE_GCC_WARN_SHADOW":1 ,
|
||||
"LIBRARY_OUTPUT_DIRECTORY": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
16
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
16
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
@ -28,10 +28,8 @@ body:
|
||||
- macOS 10.14
|
||||
- macOS 10.13
|
||||
- Ubuntu 22.04 LTS
|
||||
- Ubuntu 21.04
|
||||
- Ubuntu 20.10
|
||||
- Ubuntu 20.04 LTS
|
||||
- Ubuntu 18.04 LTS
|
||||
- Other
|
||||
validations:
|
||||
required: true
|
||||
@ -49,16 +47,10 @@ body:
|
||||
label: OBS Studio Version
|
||||
description: What version of OBS Studio are you using?
|
||||
options:
|
||||
- 28.0.0
|
||||
- 29.0.x
|
||||
- 28.1.x
|
||||
- 28.0.x
|
||||
- 27.2.4
|
||||
- 27.2.3
|
||||
- 27.2.2
|
||||
- 27.2.1
|
||||
- 27.2.0
|
||||
- 27.1.3
|
||||
- 27.1.1
|
||||
- 27.1.0
|
||||
- 27.0.1
|
||||
- Git
|
||||
- Other
|
||||
validations:
|
||||
@ -76,9 +68,9 @@ body:
|
||||
label: obs-websocket Version
|
||||
description: What version of obs-websocket are you using?
|
||||
options:
|
||||
- 5.1.0
|
||||
- 5.0.1
|
||||
- 5.0.0
|
||||
- 5.0.0-beta1
|
||||
- Git
|
||||
validations:
|
||||
required: true
|
||||
|
22
.github/workflows/crowdin_upload.yml
vendored
Normal file
22
.github/workflows/crowdin_upload.yml
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
name: Upload Language Files 🌐
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
paths:
|
||||
- "**/en-US.ini"
|
||||
jobs:
|
||||
upload-language-files:
|
||||
name: Upload Language Files 🌐
|
||||
if: github.repository_owner == 'obsproject'
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 100
|
||||
- name: Upload US English Language Files 🇺🇸
|
||||
uses: obsproject/obs-crowdin-sync/upload@30b5446e3b5eb19595aa68a81ddf896a857302cf
|
||||
env:
|
||||
CROWDIN_PAT: ${{ secrets.CROWDIN_SYNC_CROWDIN_PAT }}
|
||||
GITHUB_EVENT_BEFORE: ${{ github.event.before }}
|
||||
SUBMODULE_NAME: obs-websocket
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -2,7 +2,6 @@
|
||||
.DS_Store
|
||||
.idea
|
||||
.vscode
|
||||
**.generated.h
|
||||
/build/
|
||||
/build32/
|
||||
/build64/
|
||||
@ -10,5 +9,4 @@
|
||||
/package/
|
||||
/installer/Output/
|
||||
/docs/node_modules/
|
||||
/installer/installer-windows.generated.iss
|
||||
/cmake-build-debug/
|
||||
|
12
.gitmodules
vendored
12
.gitmodules
vendored
@ -1,12 +0,0 @@
|
||||
[submodule "deps/websocketpp"]
|
||||
path = deps/websocketpp
|
||||
url = https://github.com/zaphoyd/websocketpp.git
|
||||
[submodule "deps/asio"]
|
||||
path = deps/asio
|
||||
url = https://github.com/chriskohlhoff/asio.git
|
||||
[submodule "deps/json"]
|
||||
path = deps/json
|
||||
url = https://github.com/nlohmann/json.git
|
||||
[submodule "deps/qr"]
|
||||
path = deps/qr
|
||||
url = https://github.com/nayuki/QR-Code-generator.git
|
||||
|
219
CMakeLists.txt
219
CMakeLists.txt
@ -1,138 +1,154 @@
|
||||
project(obs-websocket VERSION 5.0.1)
|
||||
cmake_minimum_required(VERSION 3.16...3.25)
|
||||
|
||||
legacy_check()
|
||||
|
||||
set(obs-websocket_VERSION 5.3.5)
|
||||
set(OBS_WEBSOCKET_RPC_VERSION 1)
|
||||
|
||||
option(ENABLE_WEBSOCKET "Enable building OBS with websocket plugin" ON)
|
||||
|
||||
if(NOT ENABLE_WEBSOCKET OR NOT ENABLE_UI)
|
||||
message(STATUS "OBS: DISABLED obs-websocket")
|
||||
if(NOT ENABLE_WEBSOCKET)
|
||||
target_disable(obs-websocket)
|
||||
return()
|
||||
endif()
|
||||
|
||||
# Submodule deps check
|
||||
if(NOT
|
||||
(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/deps/json/CMakeLists.txt
|
||||
AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/deps/websocketpp/CMakeLists.txt
|
||||
AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/deps/qr/cpp/QrCode.hpp
|
||||
AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/deps/asio/asio/include/asio.hpp))
|
||||
obs_status(FATAL_ERROR "obs-websocket submodule deps not available.")
|
||||
endif()
|
||||
|
||||
# Plugin tests flag
|
||||
option(PLUGIN_TESTS "Enable plugin runtime tests" OFF)
|
||||
|
||||
# Qt build stuff
|
||||
set(CMAKE_PREFIX_PATH "${QTDIR}")
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
set(CMAKE_AUTORCC ON) # For resources.qrc
|
||||
|
||||
# Find Qt
|
||||
find_qt(COMPONENTS Core Widgets Svg Network)
|
||||
find_package(Qt6 REQUIRED Core Widgets Svg Network)
|
||||
|
||||
# Find nlohmann
|
||||
set(JSON_BuildTests
|
||||
OFF
|
||||
CACHE INTERNAL "")
|
||||
add_subdirectory(deps/json)
|
||||
# Find nlohmann JSON
|
||||
find_package(nlohmann_json 3 REQUIRED)
|
||||
|
||||
# Tell websocketpp not to use system boost
|
||||
add_definitions(-DASIO_STANDALONE)
|
||||
# Find qrcodegencpp
|
||||
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
|
||||
find_package(qrcodegencpp REQUIRED)
|
||||
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG OFF)
|
||||
|
||||
# Configure files
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/plugin-macros.h.in
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/plugin-macros.generated.h)
|
||||
# Find WebSocket++
|
||||
find_package(Websocketpp 0.8 REQUIRED)
|
||||
|
||||
# Find Asio
|
||||
find_package(Asio 1.12.1 REQUIRED)
|
||||
|
||||
# Setup target
|
||||
add_library(obs-websocket MODULE)
|
||||
add_library(OBS::websocket ALIAS obs-websocket)
|
||||
|
||||
target_sources(
|
||||
obs-websocket
|
||||
PRIVATE src/obs-websocket.cpp
|
||||
src/obs-websocket.h
|
||||
PRIVATE # cmake-format: sortable
|
||||
lib/obs-websocket-api.h
|
||||
src/Config.cpp
|
||||
src/Config.h
|
||||
lib/obs-websocket-api.h
|
||||
src/forms/SettingsDialog.cpp
|
||||
src/forms/SettingsDialog.h
|
||||
src/forms/ConnectInfo.cpp
|
||||
src/forms/ConnectInfo.h
|
||||
src/forms/resources.qrc
|
||||
src/forms/SettingsDialog.cpp
|
||||
src/forms/SettingsDialog.h
|
||||
src/obs-websocket.cpp
|
||||
src/obs-websocket.h
|
||||
src/WebSocketApi.cpp
|
||||
src/WebSocketApi.h
|
||||
src/websocketserver/WebSocketServer.cpp
|
||||
src/websocketserver/WebSocketServer_Protocol.cpp
|
||||
src/websocketserver/WebSocketServer.h
|
||||
src/websocketserver/rpc/WebSocketSession.cpp
|
||||
src/WebSocketApi.h)
|
||||
|
||||
target_sources(
|
||||
obs-websocket
|
||||
PRIVATE # cmake-format: sortable
|
||||
src/websocketserver/rpc/WebSocketSession.h
|
||||
src/websocketserver/types/WebSocketCloseCode.h
|
||||
src/websocketserver/types/WebSocketOpCode.h
|
||||
src/websocketserver/WebSocketServer.cpp
|
||||
src/websocketserver/WebSocketServer.h
|
||||
src/websocketserver/WebSocketServer_Protocol.cpp)
|
||||
|
||||
target_sources(
|
||||
obs-websocket
|
||||
PRIVATE # cmake-format: sortable
|
||||
src/eventhandler/EventHandler.cpp
|
||||
src/eventhandler/EventHandler_General.cpp
|
||||
src/eventhandler/EventHandler.h
|
||||
src/eventhandler/EventHandler_Config.cpp
|
||||
src/eventhandler/EventHandler_Scenes.cpp
|
||||
src/eventhandler/EventHandler_Inputs.cpp
|
||||
src/eventhandler/EventHandler_Transitions.cpp
|
||||
src/eventhandler/EventHandler_Filters.cpp
|
||||
src/eventhandler/EventHandler_General.cpp
|
||||
src/eventhandler/EventHandler_Inputs.cpp
|
||||
src/eventhandler/EventHandler_MediaInputs.cpp
|
||||
src/eventhandler/EventHandler_Outputs.cpp
|
||||
src/eventhandler/EventHandler_SceneItems.cpp
|
||||
src/eventhandler/EventHandler_MediaInputs.cpp
|
||||
src/eventhandler/EventHandler_Scenes.cpp
|
||||
src/eventhandler/EventHandler_Transitions.cpp
|
||||
src/eventhandler/EventHandler_Ui.cpp
|
||||
src/eventhandler/EventHandler.h
|
||||
src/eventhandler/types/EventSubscription.h
|
||||
src/requesthandler/RequestHandler.cpp
|
||||
src/requesthandler/RequestHandler_General.cpp
|
||||
src/requesthandler/RequestHandler_Config.cpp
|
||||
src/requesthandler/RequestHandler_Sources.cpp
|
||||
src/requesthandler/RequestHandler_Scenes.cpp
|
||||
src/requesthandler/RequestHandler_Inputs.cpp
|
||||
src/requesthandler/RequestHandler_Transitions.cpp
|
||||
src/requesthandler/RequestHandler_Filters.cpp
|
||||
src/requesthandler/RequestHandler_SceneItems.cpp
|
||||
src/requesthandler/RequestHandler_Outputs.cpp
|
||||
src/requesthandler/RequestHandler_Stream.cpp
|
||||
src/requesthandler/RequestHandler_Record.cpp
|
||||
src/requesthandler/RequestHandler_MediaInputs.cpp
|
||||
src/requesthandler/RequestHandler_Ui.cpp
|
||||
src/requesthandler/RequestHandler.h
|
||||
src/eventhandler/types/EventSubscription.h)
|
||||
|
||||
target_sources(
|
||||
obs-websocket
|
||||
PRIVATE # cmake-format: sortable
|
||||
src/requesthandler/RequestBatchHandler.cpp
|
||||
src/requesthandler/RequestBatchHandler.h
|
||||
src/requesthandler/RequestHandler.cpp
|
||||
src/requesthandler/RequestHandler.h
|
||||
src/requesthandler/RequestHandler_Config.cpp
|
||||
src/requesthandler/RequestHandler_Filters.cpp
|
||||
src/requesthandler/RequestHandler_General.cpp
|
||||
src/requesthandler/RequestHandler_Inputs.cpp
|
||||
src/requesthandler/RequestHandler_MediaInputs.cpp
|
||||
src/requesthandler/RequestHandler_Outputs.cpp
|
||||
src/requesthandler/RequestHandler_Record.cpp
|
||||
src/requesthandler/RequestHandler_SceneItems.cpp
|
||||
src/requesthandler/RequestHandler_Scenes.cpp
|
||||
src/requesthandler/RequestHandler_Sources.cpp
|
||||
src/requesthandler/RequestHandler_Stream.cpp
|
||||
src/requesthandler/RequestHandler_Transitions.cpp
|
||||
src/requesthandler/RequestHandler_Ui.cpp
|
||||
src/requesthandler/rpc/Request.cpp
|
||||
src/requesthandler/rpc/Request.h
|
||||
src/requesthandler/rpc/RequestBatchRequest.cpp
|
||||
src/requesthandler/rpc/RequestBatchRequest.h
|
||||
src/requesthandler/rpc/RequestResult.cpp
|
||||
src/requesthandler/rpc/RequestResult.h
|
||||
src/requesthandler/types/RequestStatus.h
|
||||
src/requesthandler/types/RequestBatchExecutionType.h
|
||||
src/requesthandler/types/RequestStatus.h)
|
||||
|
||||
target_sources(
|
||||
obs-websocket
|
||||
PRIVATE # cmake-format: sortable
|
||||
src/utils/Compat.cpp
|
||||
src/utils/Compat.h
|
||||
src/utils/Crypto.cpp
|
||||
src/utils/Crypto.h
|
||||
src/utils/Json.cpp
|
||||
src/utils/Json.h
|
||||
src/utils/Obs.cpp
|
||||
src/utils/Obs_StringHelper.cpp
|
||||
src/utils/Obs_NumberHelper.cpp
|
||||
src/utils/Obs.h
|
||||
src/utils/Obs_ActionHelper.cpp
|
||||
src/utils/Obs_ArrayHelper.cpp
|
||||
src/utils/Obs_NumberHelper.cpp
|
||||
src/utils/Obs_ObjectHelper.cpp
|
||||
src/utils/Obs_SearchHelper.cpp
|
||||
src/utils/Obs_ActionHelper.cpp
|
||||
src/utils/Obs.h
|
||||
src/utils/Obs_StringHelper.cpp
|
||||
src/utils/Obs_VolumeMeter.cpp
|
||||
src/utils/Obs_VolumeMeter.h
|
||||
src/utils/Obs_VolumeMeter_Helpers.h
|
||||
src/utils/Platform.cpp
|
||||
src/utils/Platform.h
|
||||
src/utils/Compat.cpp
|
||||
src/utils/Compat.h
|
||||
src/utils/Utils.h
|
||||
deps/qr/cpp/QrCode.cpp
|
||||
deps/qr/cpp/QrCode.hpp)
|
||||
src/utils/Utils.h)
|
||||
|
||||
target_include_directories(
|
||||
configure_file(src/plugin-macros.h.in plugin-macros.generated.h)
|
||||
target_sources(obs-websocket PRIVATE plugin-macros.generated.h)
|
||||
|
||||
target_compile_definitions(
|
||||
obs-websocket PRIVATE ASIO_STANDALONE $<$<BOOL:${PLUGIN_TESTS}>:PLUGIN_TESTS>
|
||||
$<$<PLATFORM_ID:Windows>:_WEBSOCKETPP_CPP11_STL_> $<$<PLATFORM_ID:Windows>:_WIN32_WINNT=0x0603>)
|
||||
|
||||
target_compile_options(
|
||||
obs-websocket
|
||||
PRIVATE ${Qt5Core_INCLUDES} ${Qt5Widgets_INCLUDES} ${Qt5Svg_INCLUDES}
|
||||
${Qt5Network_INCLUDES} "deps/asio/asio/include" "deps/websocketpp")
|
||||
PRIVATE $<$<PLATFORM_ID:Windows>:/wd4267>
|
||||
$<$<COMPILE_LANG_AND_ID:CXX,GNU,AppleClang,Clang>:-Wall>
|
||||
$<$<COMPILE_LANG_AND_ID:CXX,GNU,AppleClang,Clang>:-Wno-error=float-conversion>
|
||||
$<$<COMPILE_LANG_AND_ID:CXX,GNU,AppleClang,Clang>:-Wno-error=shadow>
|
||||
$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wno-error=format-overflow>
|
||||
$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wno-error=int-conversion>
|
||||
$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wno-error=comment>
|
||||
$<$<COMPILE_LANG_AND_ID:CXX,AppleClang,Clang>:-Wno-error=null-pointer-subtraction>
|
||||
$<$<COMPILE_LANG_AND_ID:CXX,AppleClang,Clang>:-Wno-error=deprecated-declarations>
|
||||
$<$<COMPILE_LANG_AND_ID:CXX,AppleClang,Clang>:-Wno-error=implicit-int-conversion>
|
||||
$<$<COMPILE_LANG_AND_ID:CXX,AppleClang,Clang>:-Wno-error=shorten-64-to-32>
|
||||
$<$<COMPILE_LANG_AND_ID:CXX,AppleClang,Clang>:-Wno-comma>
|
||||
$<$<COMPILE_LANG_AND_ID:CXX,AppleClang,Clang>:-Wno-quoted-include-in-framework-header>)
|
||||
|
||||
target_link_libraries(
|
||||
obs-websocket
|
||||
@ -142,33 +158,24 @@ target_link_libraries(
|
||||
Qt::Widgets
|
||||
Qt::Svg
|
||||
Qt::Network
|
||||
nlohmann_json::nlohmann_json)
|
||||
nlohmann_json::nlohmann_json
|
||||
Websocketpp::Websocketpp
|
||||
Asio::Asio
|
||||
qrcodegencpp::qrcodegencpp)
|
||||
|
||||
target_compile_features(obs-websocket PRIVATE cxx_std_17)
|
||||
target_link_options(obs-websocket PRIVATE $<$<PLATFORM_ID:Windows>:/IGNORE:4099>)
|
||||
|
||||
set_target_properties(obs-websocket PROPERTIES FOLDER "plugins/obs-websocket")
|
||||
|
||||
if(PLUGIN_TESTS)
|
||||
target_compile_definitions(obs-websocket PRIVATE PLUGIN_TESTS)
|
||||
endif()
|
||||
|
||||
# Random other things
|
||||
if(WIN32)
|
||||
add_definitions(-D_WEBSOCKETPP_CPP11_STL_)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
target_compile_options(obs-websocket PRIVATE /wd4267 /wd4996)
|
||||
else()
|
||||
target_compile_options(
|
||||
set_target_properties_obs(
|
||||
obs-websocket
|
||||
PRIVATE
|
||||
-Wall
|
||||
"$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wno-error=format-overflow>"
|
||||
"$<$<COMPILE_LANG_AND_ID:CXX,AppleClang,Clang>:-Wno-error=null-pointer-subtraction;-Wno-error=deprecated-declarations>"
|
||||
)
|
||||
endif()
|
||||
PROPERTIES FOLDER plugins
|
||||
PREFIX ""
|
||||
AUTOMOC ON
|
||||
AUTOUIC ON
|
||||
AUTORCC ON)
|
||||
|
||||
# Final CMake helpers
|
||||
setup_plugin_target(obs-websocket)
|
||||
setup_target_resources(obs-websocket "obs-plugins/obs-websocket")
|
||||
if(OS_WINDOWS)
|
||||
set_property(
|
||||
TARGET obs-websocket
|
||||
APPEND
|
||||
PROPERTY AUTORCC_OPTIONS --format-version 1)
|
||||
endif()
|
||||
|
16
README.md
16
README.md
@ -13,7 +13,7 @@ WebSocket API for OBS Studio.
|
||||
|
||||
## Downloads
|
||||
|
||||
obs-websocket is now included by default with OBS Studio 28.0.0 and above. As such, **there should be no need to download obs-websocket if you have OBS Studio > 28.0.0.**
|
||||
**obs-websocket is now included by default with OBS Studio 28.0.0 and above. As such, there should be no need to download obs-websocket if you have OBS Studio > 28.0.0.**
|
||||
|
||||
Binaries **for OBS Studio < 28.0.0** on Windows, MacOS, and Linux are available in the [Releases](https://github.com/obsproject/obs-websocket/releases) section.
|
||||
|
||||
@ -31,21 +31,30 @@ It is **highly recommended** to keep obs-websocket protected with a password aga
|
||||
|
||||
### Client software
|
||||
|
||||
- [Macro Deck](https://macrodeck.org/)
|
||||
- [Touch Portal](https://www.touch-portal.com/)
|
||||
- [Twitchat](https://twitchat.fr/)
|
||||
- [OBS-web](https://github.com/Niek/obs-web) - hosted client at [obs-web.niek.tv/](http://obs-web.niek.tv/)
|
||||
- [Streamer.bot](https://streamer.bot/)
|
||||
- [Deckboard](https://deckboard.app/)
|
||||
- [OBS Blade](https://github.com/Kounex/obs_blade)
|
||||
- [Aitum](https://aitum.tv/)
|
||||
- [Kruiz Control](https://github.com/Kruiser8/Kruiz-Control)
|
||||
- [Bitfocus Companion Module](https://bitfocus.io/companion/)
|
||||
|
||||
### Client libraries (for developers)
|
||||
|
||||
Here's a list of available language APIs for obs-websocket:
|
||||
|
||||
- Python 3.7+ (Asyncio): [simpleobsws](https://github.com/IRLToolkit/simpleobsws/tree/master) by IRLToolkit
|
||||
- Python 3.10+ (Non-Asyncio): [obsws-python](https://pypi.org/project/obsws-python) by aatikturk and onyx-and-iris
|
||||
- Rust: [obws](https://github.com/dnaka91/obws) by dnaka91
|
||||
- Godot 3.4.x: [obs-websocket-gd](https://github.com/you-win/obs-websocket-gd) by you-win
|
||||
- Javascript (Node and web): [obs-websocket-js](https://github.com/obs-websocket-community-projects/obs-websocket-js) by OBS Websocket Community
|
||||
- C (uses obs-websocket-js): [v8-libwebsocket-obs-websocket](https://github.com/dgatwood/v8-libwebsocket-obs-websocket)
|
||||
- Go: [goobs](https://github.com/andreykaipov/goobs) by andreykaipov
|
||||
- Dart/Flutter (can target all supported platforms): [obs_websocket](https://github.com/faithoflifedev/obs_websocket) by faithoflifedev
|
||||
- Java: [obs-websocket-java](https://github.com/obs-websocket-community-projects/obs-websocket-java) by OBS Websocket Community
|
||||
|
||||
The 5.x server is a typical WebSocket server running by default on port 4455 (the port number can be changed in the Settings dialog under `Tools`).
|
||||
The protocol we use is documented in [PROTOCOL.md](docs/generated/protocol.md).
|
||||
@ -56,12 +65,11 @@ We'd like to know what you're building with obs-websocket! If you do something i
|
||||
|
||||
### Code Contributors
|
||||
|
||||
This project exists thanks to [all the people](graphs/contributors) who contribute. [Contribute](wiki/Contributing-Guidelines).
|
||||
<a href="https://github.com/obsproject/obs-websocket/graphs/contributors"><img src="https://opencollective.com/obs-websocket-dev/contributors.svg?width=890&button=false" /></a>
|
||||
This project exists thanks to [all the people](https://github.com/obsproject/obs-websocket/graphs/contributors) who contribute. [Contribute Code](https://github.com/obsproject/obs-websocket/wiki/Contributing-Guidelines).
|
||||
|
||||
### Financial Contributors
|
||||
|
||||
Become a financial contributor and help us sustain our community. [Contribute](https://opencollective.com/obs-websocket-dev/contribute)
|
||||
Become a financial contributor and help us sustain our community. [Contribute Financially](https://opencollective.com/obs-websocket-dev/contribute)
|
||||
|
||||
#### Individuals
|
||||
|
||||
|
173
cmake/legacy.cmake
Normal file
173
cmake/legacy.cmake
Normal file
@ -0,0 +1,173 @@
|
||||
project(obs-websocket VERSION 5.3.5)
|
||||
set(OBS_WEBSOCKET_RPC_VERSION 1)
|
||||
|
||||
option(ENABLE_WEBSOCKET "Enable building OBS with websocket plugin" ON)
|
||||
|
||||
if(NOT ENABLE_WEBSOCKET OR NOT ENABLE_UI)
|
||||
message(STATUS "OBS: DISABLED obs-websocket")
|
||||
return()
|
||||
endif()
|
||||
|
||||
# Plugin tests flag
|
||||
option(PLUGIN_TESTS "Enable plugin runtime tests" OFF)
|
||||
|
||||
# Find Qt
|
||||
find_qt(COMPONENTS Core Widgets Svg Network)
|
||||
|
||||
# Find nlohmann JSON
|
||||
find_package(nlohmann_json 3 REQUIRED)
|
||||
|
||||
# Find qrcodegencpp
|
||||
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
|
||||
find_package(qrcodegencpp REQUIRED)
|
||||
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG OFF)
|
||||
|
||||
# Find WebSocket++
|
||||
find_package(Websocketpp 0.8 REQUIRED)
|
||||
|
||||
# Find Asio
|
||||
find_package(Asio 1.12.1 REQUIRED)
|
||||
|
||||
# Tell websocketpp not to use system boost
|
||||
add_definitions(-DASIO_STANDALONE)
|
||||
|
||||
# Configure files
|
||||
configure_file(src/plugin-macros.h.in plugin-macros.generated.h)
|
||||
|
||||
# Setup target
|
||||
add_library(obs-websocket MODULE)
|
||||
add_library(OBS::websocket ALIAS obs-websocket)
|
||||
|
||||
set_target_properties(
|
||||
obs-websocket
|
||||
PROPERTIES AUTOMOC ON
|
||||
AUTOUIC ON
|
||||
AUTORCC ON)
|
||||
|
||||
if(_QT_VERSION EQUAL 6 AND OS_WINDOWS)
|
||||
set_target_properties(obs-websocket PROPERTIES AUTORCC_OPTIONS "--format-version;1")
|
||||
endif()
|
||||
|
||||
target_include_directories(obs-websocket PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
target_sources(
|
||||
obs-websocket
|
||||
PRIVATE src/obs-websocket.cpp
|
||||
src/obs-websocket.h
|
||||
src/Config.cpp
|
||||
src/Config.h
|
||||
lib/obs-websocket-api.h
|
||||
src/forms/SettingsDialog.cpp
|
||||
src/forms/SettingsDialog.h
|
||||
src/forms/ConnectInfo.cpp
|
||||
src/forms/ConnectInfo.h
|
||||
src/forms/resources.qrc
|
||||
src/WebSocketApi.cpp
|
||||
src/WebSocketApi.h
|
||||
src/websocketserver/WebSocketServer.cpp
|
||||
src/websocketserver/WebSocketServer_Protocol.cpp
|
||||
src/websocketserver/WebSocketServer.h
|
||||
src/websocketserver/rpc/WebSocketSession.h
|
||||
src/websocketserver/types/WebSocketCloseCode.h
|
||||
src/websocketserver/types/WebSocketOpCode.h
|
||||
src/eventhandler/EventHandler.cpp
|
||||
src/eventhandler/EventHandler_General.cpp
|
||||
src/eventhandler/EventHandler_Config.cpp
|
||||
src/eventhandler/EventHandler_Scenes.cpp
|
||||
src/eventhandler/EventHandler_Inputs.cpp
|
||||
src/eventhandler/EventHandler_Transitions.cpp
|
||||
src/eventhandler/EventHandler_Filters.cpp
|
||||
src/eventhandler/EventHandler_Outputs.cpp
|
||||
src/eventhandler/EventHandler_SceneItems.cpp
|
||||
src/eventhandler/EventHandler_MediaInputs.cpp
|
||||
src/eventhandler/EventHandler_Ui.cpp
|
||||
src/eventhandler/EventHandler.h
|
||||
src/eventhandler/types/EventSubscription.h
|
||||
src/requesthandler/RequestHandler.cpp
|
||||
src/requesthandler/RequestHandler_General.cpp
|
||||
src/requesthandler/RequestHandler_Config.cpp
|
||||
src/requesthandler/RequestHandler_Sources.cpp
|
||||
src/requesthandler/RequestHandler_Scenes.cpp
|
||||
src/requesthandler/RequestHandler_Inputs.cpp
|
||||
src/requesthandler/RequestHandler_Transitions.cpp
|
||||
src/requesthandler/RequestHandler_Filters.cpp
|
||||
src/requesthandler/RequestHandler_SceneItems.cpp
|
||||
src/requesthandler/RequestHandler_Outputs.cpp
|
||||
src/requesthandler/RequestHandler_Stream.cpp
|
||||
src/requesthandler/RequestHandler_Record.cpp
|
||||
src/requesthandler/RequestHandler_MediaInputs.cpp
|
||||
src/requesthandler/RequestHandler_Ui.cpp
|
||||
src/requesthandler/RequestHandler.h
|
||||
src/requesthandler/RequestBatchHandler.cpp
|
||||
src/requesthandler/RequestBatchHandler.h
|
||||
src/requesthandler/rpc/Request.cpp
|
||||
src/requesthandler/rpc/Request.h
|
||||
src/requesthandler/rpc/RequestBatchRequest.cpp
|
||||
src/requesthandler/rpc/RequestBatchRequest.h
|
||||
src/requesthandler/rpc/RequestResult.cpp
|
||||
src/requesthandler/rpc/RequestResult.h
|
||||
src/requesthandler/types/RequestStatus.h
|
||||
src/requesthandler/types/RequestBatchExecutionType.h
|
||||
src/utils/Crypto.cpp
|
||||
src/utils/Crypto.h
|
||||
src/utils/Json.cpp
|
||||
src/utils/Json.h
|
||||
src/utils/Obs.cpp
|
||||
src/utils/Obs_StringHelper.cpp
|
||||
src/utils/Obs_NumberHelper.cpp
|
||||
src/utils/Obs_ArrayHelper.cpp
|
||||
src/utils/Obs_ObjectHelper.cpp
|
||||
src/utils/Obs_SearchHelper.cpp
|
||||
src/utils/Obs_ActionHelper.cpp
|
||||
src/utils/Obs.h
|
||||
src/utils/Obs_VolumeMeter.cpp
|
||||
src/utils/Obs_VolumeMeter.h
|
||||
src/utils/Obs_VolumeMeter_Helpers.h
|
||||
src/utils/Platform.cpp
|
||||
src/utils/Platform.h
|
||||
src/utils/Compat.cpp
|
||||
src/utils/Compat.h
|
||||
src/utils/Utils.h)
|
||||
|
||||
target_link_libraries(
|
||||
obs-websocket
|
||||
PRIVATE OBS::libobs
|
||||
OBS::frontend-api
|
||||
Qt::Core
|
||||
Qt::Widgets
|
||||
Qt::Svg
|
||||
Qt::Network
|
||||
nlohmann_json::nlohmann_json
|
||||
Websocketpp::Websocketpp
|
||||
Asio::Asio
|
||||
qrcodegencpp::qrcodegencpp)
|
||||
|
||||
target_compile_features(obs-websocket PRIVATE cxx_std_17)
|
||||
|
||||
set_target_properties(obs-websocket PROPERTIES FOLDER "plugins/obs-websocket")
|
||||
|
||||
if(PLUGIN_TESTS)
|
||||
target_compile_definitions(obs-websocket PRIVATE PLUGIN_TESTS)
|
||||
endif()
|
||||
|
||||
# Random other things
|
||||
if(WIN32)
|
||||
add_definitions(-D_WEBSOCKETPP_CPP11_STL_)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
target_compile_options(obs-websocket PRIVATE /wd4267 /wd4996)
|
||||
target_link_options(obs-websocket PRIVATE "LINKER:/IGNORE:4099")
|
||||
else()
|
||||
target_compile_options(
|
||||
obs-websocket
|
||||
PRIVATE
|
||||
-Wall
|
||||
"$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wno-error=format-overflow>"
|
||||
"$<$<COMPILE_LANG_AND_ID:CXX,AppleClang,Clang>:-Wno-error=null-pointer-subtraction;-Wno-error=deprecated-declarations>"
|
||||
)
|
||||
endif()
|
||||
|
||||
# Final CMake helpers
|
||||
setup_plugin_target(obs-websocket)
|
||||
setup_target_resources(obs-websocket "obs-plugins/obs-websocket")
|
28
cmake/macos/Info.plist.in
Normal file
28
cmake/macos/Info.plist.in
Normal file
@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleName</key>
|
||||
<string>obs-websocket</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.obsproject.obs-websocket</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>obs-websocket</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>${CMAKE_OSX_DEPLOYMENT_TARGET}</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>(c) 2016-${CURRENT_YEAR} Stéphane Lepin, Kyle Manning</string>
|
||||
</dict>
|
||||
</plist>
|
35
data/locale/af-ZA.ini
Normal file
35
data/locale/af-ZA.ini
Normal file
@ -0,0 +1,35 @@
|
||||
OBSWebSocket.Plugin.Description="Afstandbeheer van OBS deur WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket-bedienerinstellings"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Inpropinstellings"
|
||||
OBSWebSocket.Settings.ServerEnable="Aktiveer WebSocket-diens"
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Bedienerinstellings"
|
||||
OBSWebSocket.Settings.Password="Bedienerwagwoord"
|
||||
OBSWebSocket.Settings.GeneratePassword="Genereer wagwoord"
|
||||
OBSWebSocket.Settings.ServerPort="Bedienerpoort"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Waarskuwing: Tans regstreeks"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Dit lyk of ’n afvoer (stroom, opname, ens.) tans aktief is."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Is u seker u wil u verbindingsinligting laat sien?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Waarskuwing: potensiële beveiligingsprobleem"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websok bewaar die bedienerwagwoord as platteks. Dit word ten sterkste aanbeveel om ’n wagwoord wat deur obs-websok geskep is te gebruik."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Is u seker u wil u eie wagwoord gebruik?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Fout: Ongeldige opstalling"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="U moet ’n wagwoord van meet as 6 karakters gebruik."
|
||||
OBSWebSocket.SessionTable.Title="Gekoppelde WebSocket-sessies"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Afstandsadres"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Sessieduur"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Boodskappe In/Uit"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Geïdentifiseer"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Verwyder?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Verwyder"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="WebSocket-verbindingsinligting"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Kopieer"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="Bediener-IP (beste skatting)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Bedienerpoort"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Bedienerwagwoord"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="Koppel QR"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Nuwe WebSocket-koppeling"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Kliënt %1 geïdentifiseer."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket-waarmerkfout"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Kliënt %1 kon nie waarmerk nie."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket-kliënt is ontkoppel"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Kliënt %1 is ontkoppel."
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="التحكم عن بعد في استوديو OBS من خلال WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="إعدادات obs-websocket"
|
||||
OBSWebSocket.Settings.DialogTitle="إعدادات خادم WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="إعدادات الإضافات"
|
||||
OBSWebSocket.Settings.ServerEnable="تمكين خادم WebSocket"
|
||||
OBSWebSocket.Settings.AlertsEnable="تمكين تنبيهات شريط النظام"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="فشل مصادقة We
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="فشل العميل %1 في المصادقة."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="تم قطع اتصال عميل WebSocket"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="العميل %1 قطع الاتصال."
|
||||
OBSWebSocket.Server.StartFailed.Title="فشل خادم WebSocket"
|
||||
OBSWebSocket.Server.StartFailed.Message="فشل تشغيل خادم WebSocket. قد يكون منفذ TCP %1 قيد الاستخدام في تطبيق آخر على هذا النظام. حاول تعيين منفذ TCP مختلف في إعدادات خادم WebSocket، أو إيقاف أي تطبيق يمكن أن يستخدم هذا المنفذ.\n رسالة الخطأ: %2"
|
||||
|
@ -1,10 +1,10 @@
|
||||
OBSWebSocket.Plugin.Description="Control remot de l'OBS Studio mitjançant un servidor web"
|
||||
OBSWebSocket.Settings.DialogTitle="Configuració del servidor web de l'OBS"
|
||||
OBSWebSocket.Plugin.Description="Control remot de l'OBS Studio mitjançant WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Configuració del servidor WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Configuració del complement"
|
||||
OBSWebSocket.Settings.ServerEnable="Habilita el servidor web"
|
||||
OBSWebSocket.Settings.ServerEnable="Habilita el servidor WebSocket"
|
||||
OBSWebSocket.Settings.AlertsEnable="Habilita les notificacions a la barra de tasques"
|
||||
OBSWebSocket.Settings.DebugEnable="Habilita l'informe de depuració"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Habilita l'informe de depuració només per a la instància actual de l'OBS i no queda resident en inicis posteriors.\nUtilitzeu --websocket_debug si us cal que el canvi sigui persistent."
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Habilita l'informe de depuració només per a la instància actual de l'OBS. No persisteix en inicis posteriors.\nUtilitzeu --websocket_debug si us cal que el canvi sigui persistent."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Configuració del servidor"
|
||||
OBSWebSocket.Settings.AuthRequired="Habilita l'autenticació"
|
||||
OBSWebSocket.Settings.Password="Contrasenya del servidor"
|
||||
@ -15,29 +15,27 @@ OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Atenció: Actualment en direc
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Sembla que una sortida (retransmissió, gravació, etc.) està actualment activa."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Segur que voleu mostrar la vostra informació de connexió?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Atenció: Risc potencial de seguretat"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="El servidor web del l'OBS (obs-websocket) emmagatzema la contrasenya del servidor com a text pla. És altament recomanable l'ús d'una contrasenya generada automàticament."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket emmagatzema la contrasenya del servidor com a text pla. És altament recomanable l'ús d'una contrasenya generada automàticament."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Segur que voleu utilitzar la vostra contrasenya?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Error: Configuració no vàlida"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Utilitzeu una contrasenya de 6 o més caràcters."
|
||||
OBSWebSocket.SessionTable.Title="Sessions de servidor connectades"
|
||||
OBSWebSocket.SessionTable.Title="Sessions de WebSocket connectades"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Adreça remota"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Durada de la sessió"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Missatges d'entrada/sortida"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Identificat"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Expulsió?"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Expulsar?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Expulsa"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Informació de connexió del servidor Web (WebSocket)"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Informació de connexió del servidor WebSocket"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Copia"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="Adreça IP (més acurada)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Port"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Contrasenya"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Autenticació inhabilitada]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="QR de la connexió"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Connexió nova de servidor Web (WebSocket)"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Connexió nova de WebSocket"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Client %1 identificat."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Ha fallat l'autenticació del servidor Web"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Ha fallat l'autenticació del servidor WebSocket"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Ha fallat l'autenticació del client %1."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Client desconnectat del servidor Web"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Client desconnectat del servidor WebSocket"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Client %1 desconnectat."
|
||||
OBSWebSocket.Server.StartFailed.Title="Ha fallat el servidor Web (WebSocket)"
|
||||
OBSWebSocket.Server.StartFailed.Message="El servidor Web ha fallat en iniciar. Potser el port TCP %1 ja està en ús per altre programa del sistema. Proveu un port diferent a la configuració del servidor Web (WebSocket), o atureu qualsevol altra aplicació que pugui utilitzar aquest port.\n Missatge d'error: %2"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="Vzdálené ovládání OBS Studia přes WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Nastavení obs-websocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Nastavení WebSocket serveru"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Nastavení pluginu"
|
||||
OBSWebSocket.Settings.ServerEnable="Povolit WebSocketový server"
|
||||
OBSWebSocket.Settings.AlertsEnable="Povolit upozornění v systémové liště"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Chyba přihlášení k
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Klient %1 nebyl přihlášen"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket klient se odpojil"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Klient %1 se odpojil."
|
||||
OBSWebSocket.Server.StartFailed.Title="Chyba WebSocket serveru"
|
||||
OBSWebSocket.Server.StartFailed.Message="WebSocket server se nepodařilo spustit. TCP port %1 může být používán jinou aplikací. Zkuste nastavit jiný TCP port v nastavení WebSocket serveru nebo zavřete aplikaci, která může používat tento port.\n Chybová zpráva: %2"
|
||||
|
@ -1,5 +1,4 @@
|
||||
OBSWebSocket.Plugin.Description="Fjernstyring af OBS Studio via WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="obs-websocket Indstillinger"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Plugin-indstillinger"
|
||||
OBSWebSocket.Settings.ServerEnable="Aktivér WebSocket-server"
|
||||
OBSWebSocket.Settings.AlertsEnable="Aktivér Systembakke Alarmer"
|
||||
@ -39,5 +38,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket godkendelses
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Klienten %1 kunne ikke godkendes."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket-klient frakoblet"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Klient %1 frakoblet."
|
||||
OBSWebSocket.Server.StartFailed.Title="WebSocket-serverfejl"
|
||||
OBSWebSocket.Server.StartFailed.Message="WebSocket-serveren started ikke. TCP-port %1 bruges måske allerede på dette system af et andet program. Prøv at angive en anden TCP-port i WebSocket-serverindstillingerne, eller stop ethvert program, der kan bruge denne port.\n Fejlmeddelelse: %2"
|
||||
|
@ -1,10 +1,10 @@
|
||||
OBSWebSocket.Plugin.Description="OBS Studio per WebSocket fernsteuern"
|
||||
OBSWebSocket.Settings.DialogTitle="obs-websocket-Einstellungen"
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket-Servereinstellungen"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Plugineinstellungen"
|
||||
OBSWebSocket.Settings.ServerEnable="WebSocket-Server aktivieren"
|
||||
OBSWebSocket.Settings.AlertsEnable="Warnungen im Infobereich aktivieren"
|
||||
OBSWebSocket.Settings.DebugEnable="Debug-Logging aktivieren"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Aktiviert Debug-Logging für die aktuelle OBS-Instanz.\nVerwenden Sie „--websocket_debug“, damit die Option beim Laden aktiviert wird."
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Aktiviert Debug-Logging für die aktuelle OBS-Instanz.\nVerwenden Sie „--websocket_debug“, damit die Option beim Starten aktiviert wird."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Servereinstellungen"
|
||||
OBSWebSocket.Settings.AuthRequired="Authentifizierung aktivieren"
|
||||
OBSWebSocket.Settings.Password="Serverpasswort"
|
||||
@ -28,7 +28,7 @@ OBSWebSocket.SessionTable.KickButtonColumnTitle="Entfernen?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Entfernen"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="WebSocket-Verbindungsinformationen"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Kopieren"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="Server-IP (geschätzt)"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="Server-IP (Geschätzt)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Serverport"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Serverpasswort"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="Authentifizierung deaktiviert"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket-Authentifizi
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Client %1 konnte sich nicht authentifizieren."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket-Client getrennt"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Client %1 getrennt."
|
||||
OBSWebSocket.Server.StartFailed.Title="WebSocket-Serverfehler"
|
||||
OBSWebSocket.Server.StartFailed.Message="Der WebSocket-Server konnte nicht gestartet werden, da der TCP-Port %1 möglicherweise benutzt wird. Versuchen Sie, den Port in den WebSocket-Servereinstellungen zu ändern oder Anwendungen zu schließen, die diesen verwenden könnten.\nFehler: %2"
|
||||
|
41
data/locale/el-GR.ini
Normal file
41
data/locale/el-GR.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="Απομακρυσμένος έλεγχος του OBS Studio μέσω WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Ρυθμίσεις Διακομιστή WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Ρυθμίσεις Προσθέτων"
|
||||
OBSWebSocket.Settings.ServerEnable="Ενεργοποίηση διακομιστή WebSocket"
|
||||
OBSWebSocket.Settings.AlertsEnable="Ενεργοποίηση Ειδοποιήσεων στο System Tray"
|
||||
OBSWebSocket.Settings.DebugEnable="Ενεργοποίηση καταγραφής σφαλμάτων"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Ενεργοποιεί την καταγραφή σφαλμάτων για την τρέχουσα εικόνα του OBS. Δεν επιμένει κατά τη φόρτωση.\nΧρησιμοποίησε το --websocket_debug για να ενεργοποιηθεί κατά τη φόρτωση."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Ρυθμίσεις Διακομιστή"
|
||||
OBSWebSocket.Settings.AuthRequired="Ενεργοποίηση Επαλήθευσης Στοιχείων"
|
||||
OBSWebSocket.Settings.Password="Κωδικός Διακομιστή"
|
||||
OBSWebSocket.Settings.GeneratePassword="Δημιουργία Κωδικού"
|
||||
OBSWebSocket.Settings.ServerPort="Θύρα Διακομιστή"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Εμφάνιση Πληροφοριών Σύνδεσης"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Προειδοποίηση: Ενεργό επί του Παρόντος"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Φαίνεται ότι μια έξοδος (ροή, εγγραφή, κλπ.) είναι ενεργή αυτή τη στιγμή."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Είστε βέβαιοι ότι θέλετε να εμφανιστούν οι πληροφορίες σύνδεσης σας?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Προειδοποίηση: Πιθανό Πρόβλημα Ασφαλείας"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="Το obs-websocket αποθηκεύει τον κωδικό πρόσβασης του διακομιστή ως απλό κείμενο. Χρησιμοποιώντας έναν κωδικό πρόσβασης που δημιουργείται από το obs-websocket συνιστάται ιδιαίτερα."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Είστε βέβαιοι ότι θέλετε να χρησιμοποιήσετε το δικό σας κωδικό πρόσβασης?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Σφάλμα: Μη Έγκυρη Ρύθμιση"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Πρέπει να χρησιμοποιήσετε έναν κωδικό πρόσβασης με 6 ή περισσότερους χαρακτήρες."
|
||||
OBSWebSocket.SessionTable.Title="Συνδεδεμένες Συνεδρίες WebSocket"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Απομακρυσμένη Διεύθυνση"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Διάρκεια Συνεδρίας"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Εισερχόμενα/Εξερχόμενα Μηνύματα"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Ταυτοποιήθηκε"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Διακοπή?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Διακοπή"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Πληροφορίες Σύνδεσης WebSocket"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Αντιγραφή"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="IP Διακομιστή (Βέλτιστη Εκτίμηση)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Θύρα Διακομιστή"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Κωδικός Διακομιστή"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Ταυτοποίηση Απενεργοποιημένη]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="Σύνδεση με QR"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Νέα Σύνδεση WebSocket"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Ο πελάτης %1 ταυτοποιήθηκε."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Αποτυχία Ταυτοποίησης WebSocket"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Αποτυχία ταυτοποίησης του πελάτη %1."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Αποσυνδέθηκε ο Πελάτης του WebSocket"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Ο πελάτης %1 αποσυνδέθηκε."
|
1
data/locale/en-GB.ini
Normal file
1
data/locale/en-GB.ini
Normal file
@ -0,0 +1 @@
|
||||
#
|
@ -1,6 +1,6 @@
|
||||
OBSWebSocket.Plugin.Description="Remote-control of OBS Studio through WebSocket"
|
||||
|
||||
OBSWebSocket.Settings.DialogTitle="obs-websocket Settings"
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket Server Settings"
|
||||
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Plugin Settings"
|
||||
OBSWebSocket.Settings.ServerEnable="Enable WebSocket server"
|
||||
@ -45,6 +45,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket Authenticati
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Client %1 failed to authenticate."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket Client Disconnected"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Client %1 disconnected."
|
||||
|
||||
OBSWebSocket.Server.StartFailed.Title="WebSocket Server Failure"
|
||||
OBSWebSocket.Server.StartFailed.Message="The WebSocket server failed to start. TCP port %1 may already be in use elsewhere on this system by another application. Try setting a different TCP port in the WebSocket server settings, or stop any application that could be using this port.\n Error message: %2"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="Control remoto de OBS Studio a través de WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Ajustes de obs-websocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Ajustes del servidor WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Ajustes del plugin"
|
||||
OBSWebSocket.Settings.ServerEnable="Habilitar servidor WebSocket"
|
||||
OBSWebSocket.Settings.AlertsEnable="Habilitar alertas en la bandeja del sistema"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Fallo de autenticació
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="El cliente %1 no se pudo autenticar."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Cliente WebSocket desconectado"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Cliente %1 desconectado."
|
||||
OBSWebSocket.Server.StartFailed.Title="Fallo del servidor WebSocket"
|
||||
OBSWebSocket.Server.StartFailed.Message="El servidor WebSocket no pudo iniciarse. El puerto TCP %1 puede que ya esté en uso en otro lugar de este sistema por otra aplicación. Intente configurar un puerto TCP diferente en la configuración del servidor WebSocket o detenga cualquier aplicación que pueda estar usando este puerto.\n Mensaje de error: %2"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="OBS Studio kaugjuhtimine WebSocketi kaudu"
|
||||
OBSWebSocket.Settings.DialogTitle="obs-websocket seaded"
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket serveri seaded"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Plugina seaded"
|
||||
OBSWebSocket.Settings.ServerEnable="Luba WebSocket server"
|
||||
OBSWebSocket.Settings.AlertsEnable="Luba hoiatused tegumireal"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket autentimise
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Kliendi %1 autentimine ebaõnnestus."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket kliendi ühendus katkenud"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Kliendi %1 ühendus katkenud."
|
||||
OBSWebSocket.Server.StartFailed.Title="WebSocket serveri tõrge"
|
||||
OBSWebSocket.Server.StartFailed.Message="WebSocket'i serveri käivitamine ebaõnnestus. TCP-port %1 võib olla juba mujal selles süsteemis mõne teise rakenduse poolt kasutusel. Proovige määrata WebSocket'i serveri seadetes teine TCP-port või peatada rakendus, mis võib seda porti kasutada.\n Veateade: %2"
|
||||
|
40
data/locale/eu-ES.ini
Normal file
40
data/locale/eu-ES.ini
Normal file
@ -0,0 +1,40 @@
|
||||
OBSWebSocket.Plugin.Description="OBS Studioren urruneko kontrolatzailea WebSocket-en bidez"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Plugin Ezarpenak"
|
||||
OBSWebSocket.Settings.ServerEnable="WebSocket zerbitzaria gaitu"
|
||||
OBSWebSocket.Settings.AlertsEnable="Aktibatu sistema-erretiluko alertak"
|
||||
OBSWebSocket.Settings.DebugEnable="Gaitu arazketa erregistroa"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="OBSren uneko instantzian arazketa erregistroa gaitzen du. Berriro irekitzerakoan ez da mantenduko . \nErabili --websocket_debug kargatzerakoan gaitzeko."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Zerbitzariaren Ezarpenak"
|
||||
OBSWebSocket.Settings.AuthRequired="Autentifikazioa aktibatu"
|
||||
OBSWebSocket.Settings.Password="Zerbitzari pasahitza"
|
||||
OBSWebSocket.Settings.GeneratePassword="Pasahitza sortu"
|
||||
OBSWebSocket.Settings.ServerPort="Zerbitzari portua"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Konexio-informazioa erakutsi"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Adi: Zuzenean zaude"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Irteera bat (stream, grabazioa, etab.) aktibo dagoela badirudi."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Ziur zaude konexio-informazioa erakutsi nahi duzula?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Adi: Segurtasun arazo potentziala"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket-ek zerbitzariaren pasahitza testu sinple gisa gordetzen du. obs-websocket bidez sortutako pasahitza erabiltzea gomendatzen da."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Ziur zaude zure pasahitza erabili nahi duzula?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Errorea: konfigurazio baliogabea"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="6 karaktere edo gehiagoko pasahitza erabili behar duzu."
|
||||
OBSWebSocket.SessionTable.Title="Konektatutako WebSocket saioak"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Urruneko helbidea"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Saioaren iraupena"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Sarrera-/irteera-mezuak"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Identifikatuta"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Kanporatu?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Kanporatu"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="WebSocket konexio-informazioa"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Kopiatu"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="Zerbitzariaren IP-a (proposamen hoberena)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Zerbitzari portua"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Zerbitzari pasahitza"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Autorizazioa desgaituta]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="Konexioaren QR kodea"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="WebSocket konexio berria"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="%1 bezeroa identifikatuta."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket Autentikazioan hutsegitea"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="%1 bezeroak autentifikatzen huts egin du."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket Bezeroa deskonektatu da"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="%1 bezeroa deskonektatu da."
|
@ -1,3 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="کنترل از راه دور OBS Studio از طریق WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="تنظیمات سرور سوکت وب"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="تنظیمات پلاگین"
|
||||
OBSWebSocket.Settings.ServerEnable="سرور سوکت وب را فعال کنید"
|
||||
OBSWebSocket.Settings.AlertsEnable="هشدارهای سینی سیستم را فعال کنید"
|
||||
OBSWebSocket.Settings.DebugEnable="فعال کردن گزارش اشکال زدایی"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="ثبت اشکال زدایی را برای نمونه فعلی OBS فعال می کند. در بارگذاری ادامه نمییابد.\n برای فعال کردن در بارگذاری از --websocket_debug استفاده کنید."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="تنظیمات سرور"
|
||||
OBSWebSocket.Settings.AuthRequired="فعال کردن احراز هویت"
|
||||
OBSWebSocket.Settings.Password="رمز سرور"
|
||||
OBSWebSocket.Settings.GeneratePassword="ایجاد رمز عبور"
|
||||
OBSWebSocket.Settings.ServerPort="پورت سرور"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="نمایش اطلاعات اتصال"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="هشدار: در حال حاضر زنده است"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="به نظر می رسد که یک خروجی (جریان، ضبط و غیره) در حال حاضر فعال است."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="آیا مطمئن هستید که می خواهید اطلاعات اتصال خود را نشان دهید؟"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="هشدار: مشکل امنیتی احتمالی"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket رمز عبور سرور را به صورت متن ساده ذخیره می کند. استفاده از رمز عبور تولید شده توسط obs-websocket بسیار توصیه می شود."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="آیا مطمئن هستید که می خواهید از رمز عبور خود استفاده کنید؟"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="خطا: پیکربندی نامعتبر است"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="باید از رمز عبور 6 کاراکتر یا بیشتر استفاده کنید."
|
||||
OBSWebSocket.SessionTable.Title="جلسات سوکت وب متصل"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="آدرس از راه دور"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="مدت زمان جلسه"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="پیام های ورودی/خارجی"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="تایید هویت شده"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="لگد زدن؟"
|
||||
OBSWebSocket.SessionTable.KickButtonText="اخراج"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="اطلاعات اتصال سوکت وب"
|
||||
OBSWebSocket.ConnectInfo.CopyText="رونوشت"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="IP سرور (بهترین حدس)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="پورت سرور"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="رمز سرور"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[احراز غیر فعال]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="QR را وصل کنید"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="اتصال سوکت وب جدید"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="سرویس گیرنده %1 شناسایی شد."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="خرابی تأیید اعتبار سوکت وب"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="سرویس گیرنده %1 احراز هویت نشد."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="سرویس گیرنده سوکت وب قطع شد"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="سرویس گیرنده %1 قطع شد."
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="OBS Studion etähallinta WebSocketin kautta"
|
||||
OBSWebSocket.Settings.DialogTitle="obs-websocketin asetukset"
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket-palvelimen asetukset"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Liitännäisen asetukset"
|
||||
OBSWebSocket.Settings.ServerEnable="Ota WebSocket-palvelin käyttöön"
|
||||
OBSWebSocket.Settings.AlertsEnable="Ota ilmoitusalueen ilmoitukset käyttöön"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket-tunnistusvir
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Asiakas %1 todennus epäonnistui."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket-asiakas katkaisi yhteyden"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Asiakas %1 on katkaistu."
|
||||
OBSWebSocket.Server.StartFailed.Title="WebSocket-palvelinvirhe"
|
||||
OBSWebSocket.Server.StartFailed.Message="WebSocket-palvelin ei käynnistynyt. TCP-portti %1 saattaa olla jo toisen sovelluksen käytössä. Yritä määrittää toinen TCP-portti WebSocket-palvelimen asetuksissa tai lopeta kaikki sovellukset, jotka saattavat käyttää tätä porttia.\nVirheilmoitus: %2"
|
||||
|
37
data/locale/fil-PH.ini
Normal file
37
data/locale/fil-PH.ini
Normal file
@ -0,0 +1,37 @@
|
||||
OBSWebSocket.Plugin.Description="Remote-control ng OBS Studio sa pamamagitan ng WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Mga Setting Ng WebSocket Server"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Mga Setting ng Plugin"
|
||||
OBSWebSocket.Settings.ServerEnable="Paganahin ang WebSocket server"
|
||||
OBSWebSocket.Settings.AlertsEnable="Paganahin ang System Tray Alerto"
|
||||
OBSWebSocket.Settings.DebugEnable="Paganahin ang Debug Log"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Paganahin ang debug log para sa kasalukuyang instance ng OBS. Hindi nagpapatuloy sa pag-load.\nGumamit ng --websocket_debug upang paganahin ang pag-load."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Mga setting ng Server"
|
||||
OBSWebSocket.Settings.AuthRequired="Paggamit ng Pagpapatunay"
|
||||
OBSWebSocket.Settings.Password="Password ng server"
|
||||
OBSWebSocket.Settings.GeneratePassword="Mag-Generate ng Password"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Ipakita ang Impormasyon sa Pagkonekta"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Babala: Kasalukuyang nakalive"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Lumalabas na kasalukuyang aktibo ang isang output (stream, recording, atbp.)."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Sigurado ka bang gusto mong ipakita ang iyong impormasyon sa pagkonekta?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Babala: Potensyal na Isyu sa Seguridad"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="Iniimbak ng obs-websocket ang password ng server bilang plain text. Ang paggamit ng password na nabuo ng obs-websocket ay lubos na inirerekomenda."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Sigurado ka bang gusto mong gamitin ang iyong sariling password?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Error: Di-wastong Configuration"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Dapat kang gumamit ng password na 6 o higit pang mga character."
|
||||
OBSWebSocket.SessionTable.Title="Nakakonektang WebSocket Session"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Tagal ng Session"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Mga Mensahe In/Out"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Kilalanin."
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Sipa?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Sipa"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Impormasyon ng WebSocket Connect"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Kopyahin"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Password ng server"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Naka-disable ang Auth]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="Ikonekta ang QR"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Bagong Koneksyon sa WebSocket"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Natukoy ang %1 ng kliyente."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Nabigo sa Pagpapatunay ang WebSocket"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Nabigo ang kliyenteng %1 na patotohanan."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Nadiskonekta ang WebSocket Client"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Nadiskonekta ang kliyenteng %1."
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="Contrôle à distance d'OBS Studio via WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Paramètre du websocket obs"
|
||||
OBSWebSocket.Settings.DialogTitle="Paramètres du serveur WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Paramètres du plugin"
|
||||
OBSWebSocket.Settings.ServerEnable="Activer le serveur WebSocket"
|
||||
OBSWebSocket.Settings.AlertsEnable="Activer les alertes de la zone de notification"
|
||||
@ -16,9 +16,9 @@ OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Il semble qu'une sortie (st
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Êtes-vous sûr de vouloir afficher vos informations de connexion ?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Avertissement : Problème potentiel de sécurité"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket enregistre le mot de passe du serveur en texte brut. L'utilisation d'un mot de passe généré par obs-websocket est fortement recommandée."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Êtes-vous sûr de vouloir utiliser votre propre mot de passe ?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Êtes-vous sûr(e) de vouloir utiliser votre propre mot de passe ?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Erreur : Configuration invalide"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Vous devez utiliser un mot de passe d'au moins 6 caractères"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Vous devez utiliser un mot de passe de 6 caractères ou plus."
|
||||
OBSWebSocket.SessionTable.Title="Sessions WebSocket connectées"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Adresse distante"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Durée de session"
|
||||
@ -30,7 +30,7 @@ OBSWebSocket.ConnectInfo.DialogTitle="Informations de connexion WebSocket"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Copier"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="IP du serveur (meilleure estimation)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Port serveur"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Mot de passe serveur"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Mot de passe du serveur"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Authentification désactivée]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="QR code de connexion"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Nouvelle connexion WebSocket"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Échec de l'authentifi
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Échec d'authentification du client %1."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Client WebSocket déconnecté"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Client %1 déconnecté."
|
||||
OBSWebSocket.Server.StartFailed.Title="Échec du serveur WebSocket"
|
||||
OBSWebSocket.Server.StartFailed.Message="Le serveur WebSocket n'a pas pu démarrer. Le port TCP %1 est peut être déjà utilisé par une autre application ailleurs sur ce système. Essayez de définir un port TCP différent dans les paramètres du serveur WebSocket, ou arrêtez toute application qui pourrait utiliser ce port.\n Message d'erreur : %2"
|
||||
|
6
data/locale/gl-ES.ini
Normal file
6
data/locale/gl-ES.ini
Normal file
@ -0,0 +1,6 @@
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Configuración do servidor"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Copiar"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Porto do Servidor"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Contrasinal do Servidor"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Cliente %1 identificado."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Cliente %1 desconectado."
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="שליטה מרחוק על OBS Studio באמצעות WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="הגדרות obs-websocket"
|
||||
OBSWebSocket.Settings.DialogTitle="הגדרות שרת WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="הגדרות תוסף"
|
||||
OBSWebSocket.Settings.ServerEnable="הפעלת שרת WebSocket"
|
||||
OBSWebSocket.Settings.AlertsEnable="הפעלת התראות במגש המערכת"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="אימות WebSocket
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="לקוח %1 נכשל באימות"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="לקוח WebSocket התנתק"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="לקוח %1 התנתק."
|
||||
OBSWebSocket.Server.StartFailed.Title="שגיאת שרת WebSocket"
|
||||
OBSWebSocket.Server.StartFailed.Message="שרת ה-WebSocket נכשל בהפעלה. ייתכן שפורט TCP %1 כבר נמצא בשימוש במקום אחר במערכת זו על ידי יישום אחר. יש לנסות להגדיר פורט TCP אחר בהגדרות שרת WebSocket, או לעצור כל יישום שעשוי להשתמש בפורט זה.\nהודעת שגיאה: %2"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="WebSocket के माध्यम से OBS स्टूडियो का रिमोट-कंट्रोल"
|
||||
OBSWebSocket.Settings.DialogTitle="obs-websocket सेटिंग्स"
|
||||
OBSWebSocket.Settings.DialogTitle="वेबसॉकेट सर्वर सेटिंग्स"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="प्लगइन सेटिंग्स"
|
||||
OBSWebSocket.Settings.ServerEnable="WebSocket सर्वर सक्षम करें"
|
||||
OBSWebSocket.Settings.AlertsEnable="सिस्टम ट्रे अलर्ट सक्षम करें"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket सत्य
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="क्लाइंट %1प्रमाणित करने में विफल रहा."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="वेबसॉकेट क्लाइंट डिस्कनेक्ट हो गया"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="क्लाइंट %1 डिस्कनेक्ट हो गया."
|
||||
OBSWebSocket.Server.StartFailed.Title="वेबसॉकेट सर्वर विफलता"
|
||||
OBSWebSocket.Server.StartFailed.Message="WebSocket सर्वर प्रारंभ करने में विफल रहा. TCP पोर्ट %1 पहले से ही इस सिस्टम पर किसी अन्य एप्लिकेशन द्वारा कहीं और उपयोग में हो सकता है. वेबसॉकेट सर्वर सेटिंग्स में एक अलग TCP पोर्ट सेट करने का प्रयास करें, या इस पोर्ट का उपयोग करने वाले किसी भी एप्लिकेशन को रोकें.\n त्रुटि संदेश : %2"
|
||||
|
10
data/locale/hr-HR.ini
Normal file
10
data/locale/hr-HR.ini
Normal file
@ -0,0 +1,10 @@
|
||||
OBSWebSocket.Settings.DialogTitle="Postavke servera WebSocket"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Pogreška: Neispravna konfiguracija"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Lozinka mora sadržavati barem 6 znakova."
|
||||
OBSWebSocket.SessionTable.Title="Spojene sesije WebSocketa"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Udaljena adresa"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Trajanje sesije"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Ulaz/izlaz poruka"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Kopiraj"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Vrata servera"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Lozinka servera"
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="Az OBS Studio távvezérlése WebSocketen keresztül"
|
||||
OBSWebSocket.Settings.DialogTitle="Az obs-websocket beállításai"
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket-kiszolgáló beállításai"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Bővítménybeállítások"
|
||||
OBSWebSocket.Settings.ServerEnable="WebSocket-kiszolgáló engedélyezése"
|
||||
OBSWebSocket.Settings.AlertsEnable="Rendszertálca-riasztások bekapcsolása"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket hitelesíté
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="A(z) %1 kliens hitelesítése sikertelen."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="A WebSocket-kliens bontotta a kapcsolatot"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="A(z) %1 kliens bontotta a kapcsolatot"
|
||||
OBSWebSocket.Server.StartFailed.Title="WebSocket kiszolgálóhiba"
|
||||
OBSWebSocket.Server.StartFailed.Message="A WebSocket-kiszolgáló nem tudott elindulni. A(z) %1 TCP-portot lehet, hogy már egy másik alkalmazás használja. Próbáljon eltérő TCP-portot beállítani a WebSocket-kiszolgáló beállítasaiban, vagy állítson le minden olyan alkalmazást, amely ezt a portot használhatja.\n Hibaüzenet: %2"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="OBS Studio-ի հեռակառավարումը WebSocket-ի միջոցով"
|
||||
OBSWebSocket.Settings.DialogTitle="obs-websocket կարգավորումներ"
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket Սպասարկչի Կարգավորումները"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Միացնիչի կարգավորումներ"
|
||||
OBSWebSocket.Settings.ServerEnable="Միացնել WebSocket սերվերը"
|
||||
OBSWebSocket.Settings.AlertsEnable="Միացնել սկուտեղի ծանուցումները"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket վավերա
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="%1 հաճախորդը չհաջողվեց նույնականացնել:"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket հաճախորդն անջատված է"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="%1 հաճախորդն անջատվել է:"
|
||||
OBSWebSocket.Server.StartFailed.Title="WebSocket սերվերի սխալ"
|
||||
OBSWebSocket.Server.StartFailed.Message="Չհաջողվեց գործարկել WebSockt սերվերը: Հնարավոր է, որ TCP %1 պորտն արդեն օգտագործվում է մեկ այլ հավելվածի կողմից: Փորձեք կարգավորել այլ TCP պորտ WebSocket սերվերի կարգավորումներում կամ դադարեցնել ցանկացած ծրագիր, որը կարող է օգտագործել այս պորտը:\n Սխալի հաղորդագրություն՝ %2։"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="Kendali jarak jauh OBS Studio melalui WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Pengaturan obs-websocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Pengaturan Server WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Pengaturan Plugin"
|
||||
OBSWebSocket.Settings.ServerEnable="Aktifkan server WebSocket"
|
||||
OBSWebSocket.Settings.AlertsEnable="Aktifkan Peringatan Baki Sistem"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Autentikasi WebSocket
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Klien %1 gagal mengautentikasi."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Klien WebSocket Terputus"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Klien %1 terputus."
|
||||
OBSWebSocket.Server.StartFailed.Title="Server WebSocket Gagal"
|
||||
OBSWebSocket.Server.StartFailed.Message="Server WebSocket gagal untuk memulai. Port TCP %1 mungkin sudah digunakan siapa pun pada sistem ini oleh aplikasi lain. Coba atur port TCP yang berbeda di pengaturan server WebSocket, atau hentikan aplikasi apapun yang bisa menggunakan port ini.\n Pesan galat: %2"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="Controllo remoto di OBS Studio tramite WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Impostazioni obs-websocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Impostazioni server WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Impostazioni del plugin"
|
||||
OBSWebSocket.Settings.ServerEnable="Abilita il server WebSocket"
|
||||
OBSWebSocket.Settings.AlertsEnable="Abilita avvisi sulla barra delle applicazioni"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Errore di autenticazio
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Il client %1 non è riuscito ad autenticarsi."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Client WebSocket disconnesso"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Client %1 disconnesso."
|
||||
OBSWebSocket.Server.StartFailed.Title="Errore del server WebSocket"
|
||||
OBSWebSocket.Server.StartFailed.Message="Impossibile avviare il server WebSocket.\nLa porta TCP %1 potrebbe essere già usata in questo sistema da un'altra applicazione.\nProva a impostare nelle impostazioni del server WebSocket una porta TCP diversa oppure interrompi qualsiasi applicazione che potrebbe usare questa porta.\nMessaggio di errore: %2."
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="WebSocketを介したOBS Studioのリモートコントロール"
|
||||
OBSWebSocket.Settings.DialogTitle="obs-websocket設定"
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket サーバー設定"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="プラグイン設定"
|
||||
OBSWebSocket.Settings.ServerEnable="WebSocketサーバーを有効にする"
|
||||
OBSWebSocket.Settings.AlertsEnable="システムトレイアラートを有効にする"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket認証失敗"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="クライアント %1 の認証に失敗しました。"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocketクライアントが切断されました"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="クライアント %1 が切断されました。"
|
||||
OBSWebSocket.Server.StartFailed.Title="WebSocketサーバー障害"
|
||||
OBSWebSocket.Server.StartFailed.Message="WebSocketサーバーの起動に失敗しました。TCPポート %1 はこのシステム上の他の場所で別のアプリケーションによって既に使用されている可能性があります。 WebSocketサーバーの設定で別のTCPポートを設定するか、このポートを使用している可能性のあるアプリケーションを終了してください。\n エラーメッセージ: %2"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="OBS Studio-ს დაშორებულად მართვა WebSocket-ით"
|
||||
OBSWebSocket.Settings.DialogTitle="obs-websocket-პარამეტრები"
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket-სერვერის პარამეტრები"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="მოდულის პარამეტრები"
|
||||
OBSWebSocket.Settings.ServerEnable="WebSocket-სერვერის ჩართვა"
|
||||
OBSWebSocket.Settings.AlertsEnable="სისტემური არეში ცნობების ჩართვა"
|
||||
@ -14,7 +14,7 @@ OBSWebSocket.Settings.ShowConnectInfo="კავშირის შესახ
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="გაფრთხილება: პირდაპირ ეთერშია"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="როგორც ჩანს, გამოტანა (ნაკადის, ჩანაწერის და სხვ.) ეთერში გადის."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="ნამდვილად გსურთ კავშირის მონაცემების გამოჩენა?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="ყურადღება: უსაფრთხოების შესაძლო სისუსტე"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="ყურადღება: სავარაუდო საფრთხე"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket სერვერის პაროლს ტექსტის სახით. დაჟინებით გირჩევთ, გამოიყენოთ obs-websocket-ით შედგენილი პაროლი."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="ნამდვილად გსურთ საკუთარი პაროლის გამოყენება?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="შეცდომა: არასწორი გამართვა"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket-შესვ
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="კლიენტი %1 ვერ დამოწმდა."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket-კლიენტი გამოითიშა"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="კლიენტი %1 გამოთიშეულია."
|
||||
OBSWebSocket.Server.StartFailed.Title="WebSocket-სერვერის ხარვეზი"
|
||||
OBSWebSocket.Server.StartFailed.Message="WebSocket-სერვერი ვერ ამუშავდა. TCP-პორტი %1 შეიძლება უკვე გამოიყენება სისტემაში სხვა პროგამის მიერ. მოსინჯეთ განსხვავებული TCP-პორტი WebSocket-სერვერის პარამეტრებში ან გათიშეთ ყველა პროგრამა, რომელიც ამ პორტს უნდა იყენებდეს.\n შეცდომის აღწერა: %2"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="Rêveberina ji dûr ve ya OBS Studio bi riya WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Sazkariyên obs-websocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Sazkariyên rajekar a WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Sazkariyên pêvekê"
|
||||
OBSWebSocket.Settings.ServerEnable="Rajekarê WebSocket çalak bike"
|
||||
OBSWebSocket.Settings.AlertsEnable="Hişyariyên darika pergalê çalak bike"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Rastandina WebSocket t
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Rastandina rajegir %1 têk çû."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Girêdana rajegira WebSocket qut bû"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Girêdana rajegir %1 qut bû."
|
||||
OBSWebSocket.Server.StartFailed.Title="Rajekara WebSocket têk çû"
|
||||
OBSWebSocket.Server.StartFailed.Message="Destpêkirina rajekara WebSocket têk çû. Dibe ku dergeha TCP %1 jixwe ji hêla sepaneke din ve li cîhek din li ser vê pergalê were bikaranîn. Kontrol bike ku di sazkariyên rajekara WebSocket de dergehek TCP a cuda saz bikî, an jî sepanek ku dikare vê dergehê bi kar bîne rawestîne.\n Peyama çewtiyê: %2"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="WebSocket으로 OBS Studio를 원격 제어"
|
||||
OBSWebSocket.Settings.DialogTitle="obs-websocket 설정"
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket 서버 설정"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="플러그인 설정"
|
||||
OBSWebSocket.Settings.ServerEnable="WebSocket 서버 사용"
|
||||
OBSWebSocket.Settings.AlertsEnable="시스템 트레이 알림 사용"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket 인증 실
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="클라이언트 %1 인증 실패."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket 클라이언트 연결 해제됨"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="클라이언트 %1 연결 해제됨."
|
||||
OBSWebSocket.Server.StartFailed.Title="WebSocket 서버 기동 실패"
|
||||
OBSWebSocket.Server.StartFailed.Message="WebSocket 서버를 시작하는 데 실패했습니다. %1 TCP 포트가 타 응용 프로그램에 의해 이 시스템에서 이미 사용 중일 수 있습니다. WebSocket 서버 설정에서 다른 TCP 포트로 변경하거나 이 포트를 사용하는 응용 프로그램을 종료하십시오.\n 오류 메시지: %2"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="Kawalan-jauh OBS Studio melalui WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Tetapan obs-websocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Tetapan Pelayan WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Tetapan Pemalam"
|
||||
OBSWebSocket.Settings.ServerEnable="Benarkan pelayan WebSocket"
|
||||
OBSWebSocket.Settings.AlertsEnable="Benarkan Amaran Talam Sistem"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Kegagalan Pengesahihan
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Klien %1 gagal disahihkan."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Klien WebSocket Terputus"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Klien %1 terputus."
|
||||
OBSWebSocket.Server.StartFailed.Title="Kegagalan Pelayan WebSocket"
|
||||
OBSWebSocket.Server.StartFailed.Message="Pelayan WebSocket gagal dimulakan. Port TCP %1 mungkin telah digunakan di tempat lain dalam sistem ini oleh aplikasi lain. Cuba tetapkan port TCP lain dalam tetapan pelayan WebSocket, atau hentikan mana-mana aplikasi yang guna port tersebut.\n Mesej ralat: %2"
|
||||
|
25
data/locale/nb-NO.ini
Normal file
25
data/locale/nb-NO.ini
Normal file
@ -0,0 +1,25 @@
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket-tjenerinnstillinger"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Utvidelsesinnstillinger"
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Tjenerinnstillinger"
|
||||
OBSWebSocket.Settings.AuthRequired="Skru på autentisering"
|
||||
OBSWebSocket.Settings.Password="Server Passord"
|
||||
OBSWebSocket.Settings.GeneratePassword="Generer Passord"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Vis tilkoblingsinfo"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Advarsel: For øyeblikket på direktesending"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Advarsel: Potensielt sikkerhetsproblem"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Feil: Ugyldig konfigurasjon"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Du må bruke et passord på minst 6 tegn."
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Ekstern adresse"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Øktens varighet"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Innboks/Utboks"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Identifisert"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="WebSocket-tilkoblingsinfo"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Kopier"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="Tjenerens IP (beste gjetning)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Tjenerport"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Tjenerpassord"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="QR-tilkobling"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Ny WebSocket-tilkobling"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Klient %1 er identifisert."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket-klient koblet fra"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Klient %1 koblet fra."
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="Op afstand bediening van OBS Studio via WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="obs-websocket Instellingen"
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket Server Instellingen"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Plugin instellingen"
|
||||
OBSWebSocket.Settings.ServerEnable="WebSocket server inschakelen"
|
||||
OBSWebSocket.Settings.AlertsEnable="Systeemtray meldingen inschakelen"
|
||||
@ -30,6 +30,7 @@ OBSWebSocket.ConnectInfo.DialogTitle="WebSocket verbindingsinformatie"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Kopiëren"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="Server IP (Beste inschatting)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Serverpoort"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Serverwachtwoord"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Authenticatie Uitgeschakeld]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="QR koppelen"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Nieuwe WebSocket verbinding"
|
||||
@ -38,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket Authenticati
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Authenticatie van client %1 mislukt."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket Client losgekoppeld"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Client %1 ontkoppeld."
|
||||
OBSWebSocket.Server.StartFailed.Title="WebSocket Server fout"
|
||||
OBSWebSocket.Server.StartFailed.Message="De WebSocket server kon niet worden gestart. TCP-poort %1 is mogelijk al in gebruik op dit systeem door een andere toepassing. Probeer een andere TCP-poort in te stellen in de WebSocket server-instellingen, of stop elke toepassing die deze poort zou kunnen gebruiken.\n Foutmelding: %2"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="Zdalna kontrola OBS Studio przez WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Ustawienia obs-websocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Ustawienia serwera WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Ustawienia wtyczki"
|
||||
OBSWebSocket.Settings.ServerEnable="Włącz serwer WebSocket"
|
||||
OBSWebSocket.Settings.AlertsEnable="Włącz powiadomienia w zasobniku systemowym"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Błąd uwierzytelniani
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Klient %1 nie został uwierzytelniony."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Klient WebSocket odłączony"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Klient %1 odłączony."
|
||||
OBSWebSocket.Server.StartFailed.Title="Błąd serwera WebSocket"
|
||||
OBSWebSocket.Server.StartFailed.Message="Nie udało się uruchomić serwera WebSocket. Port TCP %1 może być już używany w innym miejscu tego systemu przez inną aplikację. Spróbuj ustawić inny port TCP w ustawieniach serwera WebSocket lub zatrzymaj aplikację, która może korzystać z tego portu.\n Komunikat błędu: %2"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="Controle remoto do OBS Studio através de WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Configurações OBS-WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Configurações do servidor WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Configurações de Plugin"
|
||||
OBSWebSocket.Settings.ServerEnable="Ativar servidor WebSocket"
|
||||
OBSWebSocket.Settings.AlertsEnable="Ativar Alertas da Bandeja do Sistema"
|
||||
@ -22,7 +22,7 @@ OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Você deve usar uma senh
|
||||
OBSWebSocket.SessionTable.Title="Sessões WebSocket Conectadas"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Endereço Remoto"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Duração de Sessão"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Mengsagens de Entrada/Saída"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Mensagens"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Identificada"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Expulsar?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Expulsar"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Falha na Autenticaçã
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Cliente %1 falhou na autenticação."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Cliente WebSocket Desconectado"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Cliente %1 desconectado."
|
||||
OBSWebSocket.Server.StartFailed.Title="Falha no Servidor WebSocket"
|
||||
OBSWebSocket.Server.StartFailed.Message="O servidor de WebSocket falhou ao iniciar. A porta TCP %1 já pode estar em uso em outro lugar neste sistema por outro aplicativo. Tente definir uma porta TCP diferente nas configurações do servidor de WebSocket, ou pare qualquer aplicativo que possa estar usando essa porta.\n Mensagem de erro: %2"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="Controlo remoto do OBS Studio através de WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Configurações obs-websocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Definições do servidor WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Configurações do plugin"
|
||||
OBSWebSocket.Settings.ServerEnable="Ativar servidor WebSocket"
|
||||
OBSWebSocket.Settings.AlertsEnable="Ativar alertas da bandeja do sistema"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Falha na autenticaçã
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Cliente %1 falhou na autenticação."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Cliente WebSocket desligado"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Cliente %1 desligado."
|
||||
OBSWebSocket.Server.StartFailed.Title="Falha no servidor WebSocket"
|
||||
OBSWebSocket.Server.StartFailed.Message="O servidor de WebSocket falhou ao iniciar. A porta TCP %1 pode já estar em uso noutro local deste sistema por outra aplicação. Tente definir uma porta TCP diferente nas configurações do servidor de WebSocket, ou pare qualquer aplicação que possa estar a usar essa porta.\n Mensagem de erro: %2"
|
||||
|
@ -1,22 +1,22 @@
|
||||
OBSWebSocket.Plugin.Description="Control de la distanță pentru OBS Studio prin WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Setări obs-websocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Setări ale plugin-ului"
|
||||
OBSWebSocket.Settings.DialogTitle="Setări pentru serverul WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Setări pentru plugin"
|
||||
OBSWebSocket.Settings.ServerEnable="Activează serverul WebSocket"
|
||||
OBSWebSocket.Settings.AlertsEnable="Activați alertele din bara de sistem"
|
||||
OBSWebSocket.Settings.DebugEnable="Activează jurnalizarea de depanare"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Activează jurnalizarea de depanare pentru instanța curentă de OBS. Nu persistă la încărcare.\nUtilizați --websocket_debug pentru a activa la încărcare."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Setări server"
|
||||
OBSWebSocket.Settings.AlertsEnable="Activează alertele din bara de sistem"
|
||||
OBSWebSocket.Settings.DebugEnable="Activează jurnalizarea pentru depanare"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Activează jurnalizarea pentru depanare în cazul instanței actuale de OBS. Nu persistă la încărcare.\nFolosește --websocket_debug pentru a activa la încărcare."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Setări pentru server"
|
||||
OBSWebSocket.Settings.AuthRequired="Activează autentificarea"
|
||||
OBSWebSocket.Settings.Password="Parola serverului"
|
||||
OBSWebSocket.Settings.GeneratePassword="Generează parola"
|
||||
OBSWebSocket.Settings.ServerPort="Portul serverului"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Afișează informațiile de conectare"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Afișează informațiile conexiunii"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Avertisment: În prezent în direct"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Se pare că o ieșire (flux, înregistrare etc.) este activă în prezent."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Ești sigur că vrei să-ți arăți informațiile de conectare?"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Se pare că un output (transmisiune, înregistrare etc.) este activ în prezent."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Sigur vrei să afișezi informațiile de conectare?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Avertisment: Potențială problemă de securitate"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket stochează parola serverului ca text simplu. Este foarte recomandat să folosiți o parolă generată de obs-websocket."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Ești sigur că vrei să-ți folosești propria parolă?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Sigur vrei să-ți folosești propria parolă?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Eroare: Configurație invalidă"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Trebuie să folosești o parolă care să aibă 6 sau mai multe caractere."
|
||||
OBSWebSocket.SessionTable.Title="Sesiuni WebSocket conectate"
|
||||
@ -24,20 +24,18 @@ OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Adresă la distanță"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Durata sesiunii"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Mesaje de intrare/ieșire"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Identificat"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Înlătură?"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Înlături?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Înlătură"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Informații de conectare WebSocket"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Informațiile conexiunii WebSocket"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Copiază"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="IP-ul serverului (cea mai bună presupunere)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Portul serverului"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Parola serverului"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Autentificare dezactivată]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="Conectare QR"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="QR de conectare"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="O nouă conexiune WebSocket"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Client %1 identificat."
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Clientul %1 identificat."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Eroare de autentificare WebSocket"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Client %1 nu a reușit să se autentifice."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Client WebSocket deconectat"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Clientul %1 s-a deconectat."
|
||||
OBSWebSocket.Server.StartFailed.Title="Eroare de server WebSocket"
|
||||
OBSWebSocket.Server.StartFailed.Message="Serverul WebSocket nu a reușit să pornească. Este posibil ca portul TCP %1 să fie deja utilizat în altă parte pe acest sistem de o altă aplicație. Încearcă să setezi un alt port TCP în setările serverului WebSocket sau oprește orice aplicație care ar putea utiliza acest port.\n Mesaj de eroare: %2"
|
||||
|
@ -1,18 +1,18 @@
|
||||
OBSWebSocket.Plugin.Description="Удалённое управление OBS Studio по WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Настройки obs-websocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Настройки сервера WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Настройки плагина"
|
||||
OBSWebSocket.Settings.ServerEnable="Включить сервер WebSocket"
|
||||
OBSWebSocket.Settings.AlertsEnable="Включить оповещения в трее"
|
||||
OBSWebSocket.Settings.DebugEnable="Включить отладочный журнал"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Включает ведение журнала отладки для текущего экземпляра OBS. Не сохраняется при запуске.\nИспользуйте --websocket_debug для включения при запуске."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Настройки сервера"
|
||||
OBSWebSocket.Settings.AuthRequired="Включить аутентификацию"
|
||||
OBSWebSocket.Settings.AuthRequired="Включить вход в аккаунт"
|
||||
OBSWebSocket.Settings.Password="Пароль сервера"
|
||||
OBSWebSocket.Settings.GeneratePassword="Сгенерировать пароль"
|
||||
OBSWebSocket.Settings.GeneratePassword="Создать пароль"
|
||||
OBSWebSocket.Settings.ServerPort="Порт сервера"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Показать сведения о подключении"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Предупреждение: Сейчас в эфире"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Похоже, что вывод (поток, запись и т. д.) в настоящее время активен."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Похоже, что вывод (поток, запись и т. д.) в настоящее время уже выбран."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Уверены, что хотите показать ваши сведения о подключении?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Предупреждение: Потенциальная проблема безопасности"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket хранит пароль сервера в виде обычного текста. Настоятельно рекомендуется использовать пароль, сгенерированный obs-websock."
|
||||
@ -31,13 +31,11 @@ OBSWebSocket.ConnectInfo.CopyText="Копировать"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="IP сервера (лучшая догадка)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Порт сервера"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Пароль сервера"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Авторизация отключена]"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Вход отключён]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="QR-код подключения"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Новое подключение WebSocket"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Клиент %1 распознан."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Ошибка аутентификации WebSocket"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Клиент %1 не смог аутентифицироваться."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Ошибка входа WebSocket"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Клиент %1 не смог войти."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Клиент WebSocket отключился"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Клиент %1 отключился."
|
||||
OBSWebSocket.Server.StartFailed.Title="Ошибка сервера WebSocket"
|
||||
OBSWebSocket.Server.StartFailed.Message="Не удалось запустить сервер WebSockt. Возможно, порт TCP %1 уже используется другим приложением. Попробуйте установить другой TCP-порт в настройках сервера WebSocket или остановите любое приложение, которое может использовать этот порт.\n Сообщение ошибки: %2"
|
||||
|
@ -1,4 +1,5 @@
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="පේනුවේ සැකසුම්"
|
||||
OBSWebSocket.Settings.DebugEnable="නිදොස්කරණ සටහන් තැබීම සබල කරන්න"
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="සේවාදායකයේ සැකසුම්"
|
||||
OBSWebSocket.Settings.AuthRequired="සත්යාපනය සබල කරන්න"
|
||||
OBSWebSocket.Settings.Password="සේවාදායකයේ මුරපදය"
|
||||
@ -11,6 +12,7 @@ OBSWebSocket.SessionTable.SessionDurationColumnTitle="වාරයේ පරා
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="පණිවිඩ එන/යන"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="හඳුනා ගැනිණි"
|
||||
OBSWebSocket.ConnectInfo.CopyText="පිටපතක්"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="සේවාදායකයේ අ.ජා.කෙ. (අනුමානය)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="සේවාදායකයේ තොට"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="සේවාදායකයේ මුරපදය"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[සත්යාපනය අබලයි]"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="Vzdialené ovládanie OBS Štúdia cez WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Nastavenia obs-websocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Serverové nastavenia WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Nastavenia pluginu"
|
||||
OBSWebSocket.Settings.ServerEnable="Zapnúť WebSocket server"
|
||||
OBSWebSocket.Settings.AlertsEnable="Zapnúť notifikácie zo systémovej lišty"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Zlyhanie WebSocket aut
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Klientovi %1 sa nepodarilo autentifikovať."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket klient odpojený"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Klient %1 odpojený."
|
||||
OBSWebSocket.Server.StartFailed.Title="Zlyhanie WebSocket servera"
|
||||
OBSWebSocket.Server.StartFailed.Message="WebSocket server zlyhal pri spustení. TCP port %1 sa môže používať na inom mieste, na tomto systéme, inou aplikáciou. Skúste nastaviť iný TCP port v nastaveniach WebSocket servera, alebo zastavte iné aplikácie, ktoré by mohli používať tento port.\n Chybová správa: %2"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="Oddaljeni nadzor OBS Studia prek WebSocketa"
|
||||
OBSWebSocket.Settings.DialogTitle="Nastavitve obs-websocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Nastavitve strežnika WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Nastavitve vtičnika"
|
||||
OBSWebSocket.Settings.ServerEnable="Omogoči strežnik WebSocket"
|
||||
OBSWebSocket.Settings.AlertsEnable="Omogoči opozorila v sistemskem pladnju"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Spodletelo ovetjanje W
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Odjemalec %1 ni prestal overjanja."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Odjemalec WebSocket je prekinil povezavo"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Odjemalec %1 ni več povezan."
|
||||
OBSWebSocket.Server.StartFailed.Title="Odpoved strežnika WebSocket"
|
||||
OBSWebSocket.Server.StartFailed.Message="Strežnik WebSocket se ni uspel zagnati. Vrata TCP %1 morda že uporablja drug program na tem sistemu. Poskusite določiti druga vrata TCP v nastavitvah strežnika WebSocket ali pa ustaviti program, ki bi lahko uporabljal želena vrata.\nSporočilo o napaki: %2"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="Fjärrkontroll av OBS Studio via WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Inställningar för obs-websocket"
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket-serverinställningar"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Insticksmodulsinställningar"
|
||||
OBSWebSocket.Settings.ServerEnable="Aktivera WebSocket-server"
|
||||
OBSWebSocket.Settings.AlertsEnable="Aktivera systemfältsmeddelanden"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Autentisering av WebSo
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Klient %1 misslyckades att autentiseras."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket-klient frånkopplades"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Klient %1 frånkopplades."
|
||||
OBSWebSocket.Server.StartFailed.Title="WebSocket-serverfel"
|
||||
OBSWebSocket.Server.StartFailed.Message="WebSocket-servern kunde inte startaw. TCP-porten %1 kanske redan används någon annanstans på detta system av ett annat program. Prova att ange en annan TCP-port i WebSocket-serverinställningarna eller stoppa alla program som kan använda denna port.\n Felmeddelande: %2"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="WebSocket aracılığıyla uzaktan OBS Studio"
|
||||
OBSWebSocket.Settings.DialogTitle="obs-websocket Ayarları"
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket Suncusu Ayarları"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Eklenti Ayarları"
|
||||
OBSWebSocket.Settings.ServerEnable="WebSocket sunucuyu etkinleştir"
|
||||
OBSWebSocket.Settings.AlertsEnable="Sistem Tepsi Uyarılarını Etkinleştir"
|
||||
@ -29,7 +29,7 @@ OBSWebSocket.SessionTable.KickButtonText="Çıkar"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="WebSocket Bağlanma Bilgileri"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Kopyala"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="Sunucu IP (En İyi Tahmin)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Sunucu Kapısı"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Sunucu Portu"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Sunucu Parolası"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Doğrulama Devre Dışı]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="Kare Kod ile Bağlan"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket Kimlik Doğr
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="%1 istemcisinin kimlik doğrulaması başarısız oldu."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket İstemcisinin Bağlantısı Kesildi"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="%1 istemcisinin bağlantısı kesildi."
|
||||
OBSWebSocket.Server.StartFailed.Title="WebSocket Sunucu Hatası"
|
||||
OBSWebSocket.Server.StartFailed.Message="WebSocket sunucusu başlatılamadı. %1 TCP kapısı bu sistemde başka bir yerde başka bir uygulama tarafından zaten kullanılıyor olabilir. WebSocket sunucu ayarlarında farklı bir TCP kapısı ayarlamayı deneyin, veya bu kapıyı kullanıyor olabilecek herhangi bir uygulamayı durdurun.\n Hata mesajı: %2"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="Віддалене керування OBS Studio через WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Налаштування obs-websocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Налаштування WebSocket сервера"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Налаштування плагіна"
|
||||
OBSWebSocket.Settings.ServerEnable="Увімкнути сервер WebSocket"
|
||||
OBSWebSocket.Settings.AlertsEnable="Увімкнути сповіщення у системному лотку"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Помилка авт
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Клієнт %1 не зміг автентифікуватися."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Клієнт WebSocket від'єднаний"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Клієнт %1 від'єднаний."
|
||||
OBSWebSocket.Server.StartFailed.Title="Помилка сервера WebSocket"
|
||||
OBSWebSocket.Server.StartFailed.Message="Не вдалося запустити сервер WebSocket. Порт TCP %1 може вже використовуватися в іншому місці цим системним інтерфейсом. Спробуйте встановити інший TCP порт в налаштуваннях WebSocket сервера або зупинити будь-які застосунки, які можуть використовувати цей порт.\n Повідомлення про помилку: %2"
|
||||
|
37
data/locale/vi-VN.ini
Normal file
37
data/locale/vi-VN.ini
Normal file
@ -0,0 +1,37 @@
|
||||
OBSWebSocket.Plugin.Description="Điều khiển từ xa OBS Studio thông qua WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Cài đặt máy chủ WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Thiết đặt trình cắm"
|
||||
OBSWebSocket.Settings.ServerEnable="Bật máy chủ WebSocket"
|
||||
OBSWebSocket.Settings.AlertsEnable="Bật cảnh báo khay hệ thống"
|
||||
OBSWebSocket.Settings.DebugEnable="Bật ghi nhật ký gỡ lỗi"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Cho phép ghi nhật ký gỡ lỗi cho phiên bản OBS hiện tại. Không tồn tại khi tải.\nUde --websocket gỡ lỗi để bật khi tải."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Thiết đặt máy chủ"
|
||||
OBSWebSocket.Settings.AuthRequired="Bật xác thực"
|
||||
OBSWebSocket.Settings.Password="Mật khẩu máy chủ"
|
||||
OBSWebSocket.Settings.GeneratePassword="Tạo mật khẩu"
|
||||
OBSWebSocket.Settings.ServerPort="Cổng máy chủ"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Hiện thông tin kết nối"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Cảnh báo: Hiện đang chạy"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Có vẻ như một đầu ra (luồng, bản ghi, v.v.) hiện đang hoạt động."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Bạn có chắc chắn muốn hiển thị thông tin kết nối của mình không?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Cảnh báo: Vấn đề bảo mật tiềm ẩn"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket lưu trữ mật khẩu máy chủ dưới dạng văn bản thuần túy. Bạn nên sử dụng mật khẩu được tạo bởi obs-websocket."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Bạn có chắc bạn muốn sử dụng mật khẩu của mình?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Lỗi: Thiết lập không hợp lệ"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Bạn phải sử dụng mật khẩu có 6 ký tự trở lên."
|
||||
OBSWebSocket.SessionTable.Title="Các phiên WebSocket được kết nối"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Địa chỉ từ xa"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Thời lượng phiên"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Tin nhắn vào/ra"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Định dạng"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Thông tin kết nối WebSocket"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="IP Máy chủ (Gợi ý tốt nhất)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Cổng máy chủ"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Mật khẩu máy chủ"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="Kết nối bằng mã QR"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Tạo cổng kết nối WebSocket mới"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Máy khách %1 được xác định."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Lỗi xác thực WebSocket"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Máy khách %1 không xác thực được."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Máy khách WebSocket bị ngắt kết nối"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Máy khách %1 bị ngắt kết nối."
|
@ -1,28 +1,28 @@
|
||||
OBSWebSocket.Plugin.Description="通过 WebSocket 远程控制 OBS Studio"
|
||||
OBSWebSocket.Settings.DialogTitle="obs-websocket 设置"
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket 服务器设置"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="插件设置"
|
||||
OBSWebSocket.Settings.ServerEnable="开启 WebSocket 服务器"
|
||||
OBSWebSocket.Settings.AlertsEnable="开启系统托盘提醒"
|
||||
OBSWebSocket.Settings.DebugEnable="开启调试日志"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="启用当前 OBS 实例的调试日志。下次启动时需重新设置。\n使用 --websocket_debug 在启动 OBS 时启用日志。"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="开启当前 OBS 实例的调试日志。下次启动时需重新设置。\n使用 --websocket_debug 在启动 OBS 时开启日志。"
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="服务器设置"
|
||||
OBSWebSocket.Settings.AuthRequired="开启鉴权"
|
||||
OBSWebSocket.Settings.AuthRequired="开启身份认证"
|
||||
OBSWebSocket.Settings.Password="服务器密码"
|
||||
OBSWebSocket.Settings.GeneratePassword="生成密码"
|
||||
OBSWebSocket.Settings.ServerPort="服务器端口"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="显示连接信息"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="警告:正在直播"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="似乎正在输出(串流、录像等)。"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="似乎输出(串流、录像等)正在进行。"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="您确定要显示您的连接信息吗?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="警告:潜在安全问题"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket 会以明文形式储存服务器密码。强烈建议使用 obs-websocket 生成的密码。"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="您确定要使用自定义密码吗?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="错误:配置无效"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="错误:无效的配置"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="您的密码必须包含 6 个或以上的字符。"
|
||||
OBSWebSocket.SessionTable.Title="已连接的 WebSocket 会话"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="远程地址"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="会话持续时间"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="消息传入/出"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="消息传入/传出"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="已识别"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="踢出?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="踢出"
|
||||
@ -31,13 +31,11 @@ OBSWebSocket.ConnectInfo.CopyText="复制"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="服务器 IP(最佳猜测)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="服务器端口"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="服务器密码"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[鉴权已停用]"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[身份认证已停用]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="连接 QR 码"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="新 WebSocket 连接"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="已识别 %1 客户端。"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket 鉴权失败"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="客户端%1已识别 。"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket 认证失败"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="%1 客户端认证失败。"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket 客户端已断开"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="%1 客户端已断开。"
|
||||
OBSWebSocket.Server.StartFailed.Title="WebSocket 服务器启动失败"
|
||||
OBSWebSocket.Server.StartFailed.Message="WebSocket 服务器启动失败。TCP 端口 %1 可能已被其它程序占用。请尝试在 WebSocket 服务器设置中更改不同的 TCP 端口号,或者结束其它任何可能占用此端口的程序。\n错误信息:%2"
|
||||
|
@ -1,5 +1,5 @@
|
||||
OBSWebSocket.Plugin.Description="透過 WebSocket 遠端控制 OBS Studio"
|
||||
OBSWebSocket.Settings.DialogTitle="obs-websocket 設定"
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket 伺服器設定"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="外掛程式設定"
|
||||
OBSWebSocket.Settings.ServerEnable="啟用 WebSocket 伺服器"
|
||||
OBSWebSocket.Settings.AlertsEnable="啟用系統匣通知"
|
||||
@ -39,5 +39,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket 認證失敗
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="%1 用戶端無法進行認證。"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket 用戶端已斷線"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="%1 用戶端已斷線。"
|
||||
OBSWebSocket.Server.StartFailed.Title="WebSocket 伺服器錯誤"
|
||||
OBSWebSocket.Server.StartFailed.Message="無法啟動 WebSocket 伺服器。可能 TCP 連線埠 %1 已經被系統中的某個應用程式佔用。請嘗試在 WebSocket 伺服器設定更改不同的 TCP 連線埠,或停止任何可能正在使用這個連線埠的應用程式。\n錯誤訊息:%2"
|
||||
|
1
deps/asio
vendored
1
deps/asio
vendored
Submodule deps/asio deleted from b73dc1d2c0
1
deps/json
vendored
1
deps/json
vendored
Submodule deps/json deleted from a34e011e24
1
deps/qr
vendored
1
deps/qr
vendored
Submodule deps/qr deleted from 8518684c0f
1
deps/websocketpp
vendored
1
deps/websocketpp
vendored
Submodule deps/websocketpp deleted from 56123c8759
@ -1,5 +1,7 @@
|
||||
# obs-websocket documentation
|
||||
|
||||
## If you're looking for the documentation page, it's [here](generated/protocol.md)
|
||||
|
||||
This is the documentation for obs-websocket. Run `build_docs.sh` to auto generate the latest docs from the `src` directory. There are 3 components to the docs generation:
|
||||
|
||||
- `comments/comments.js`: Generates the `work/comments.json` file from the code comments in the src directory.
|
||||
|
@ -9,7 +9,9 @@ enumTypeOrder = [
|
||||
'WebSocketCloseCode',
|
||||
'RequestBatchExecutionType',
|
||||
'RequestStatus',
|
||||
'EventSubscription'
|
||||
'EventSubscription',
|
||||
'ObsMediaInputAction',
|
||||
'ObsOutputState'
|
||||
]
|
||||
|
||||
categoryOrder = [
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
# obs-websocket 5.0.1 Protocol
|
||||
# obs-websocket 5.x.x Protocol
|
||||
|
||||
## Main Table of Contents
|
||||
|
||||
@ -19,6 +19,9 @@
|
||||
- [RequestResponse (OpCode 7)](#requestresponse-opcode-7)
|
||||
- [RequestBatch (OpCode 8)](#requestbatch-opcode-8)
|
||||
- [RequestBatchResponse (OpCode 9)](#requestbatchresponse-opcode-9)
|
||||
- [Enumerations](#enums)
|
||||
- [Events](#events)
|
||||
- [Requests](#requests)
|
||||
|
||||
## General Intro
|
||||
|
||||
@ -58,7 +61,7 @@ These steps should be followed precisely. Failure to connect to the server as in
|
||||
|
||||
- The server receives and processes the `Identify` sent by the client.
|
||||
- If authentication is required and the `Identify` message data does not contain an `authentication` string, or the string is not correct, the connection is closed with `WebSocketCloseCode::AuthenticationFailed`
|
||||
- If the client has requested an `rpcVersion` which the server cannot use, the connection is closed with `WebSocketCloseCode::UnsupportedRpcVersion`. This system allows both the server and client to have seamless backwards compatability.
|
||||
- If the client has requested an `rpcVersion` which the server cannot use, the connection is closed with `WebSocketCloseCode::UnsupportedRpcVersion`. This system allows both the server and client to have seamless backwards compatibility.
|
||||
- If any other parameters are malformed (invalid type, etc), the connection is closed with an appropriate close code.
|
||||
|
||||
- Once identification is processed on the server, the server responds to the client with an [OpCode 2 `Identified`](#identified-opcode-2).
|
||||
@ -143,7 +146,7 @@ Authentication is required
|
||||
{
|
||||
"op": 0,
|
||||
"d": {
|
||||
"obsWebSocketVersion": "5.0.1",
|
||||
"obsWebSocketVersion": "5.1.0",
|
||||
"rpcVersion": 1,
|
||||
"authentication": {
|
||||
"challenge": "+IxH4CnCiqpX1rM9scsNynZzbOe4KhDeYcTNS3PDaeY=",
|
||||
@ -159,7 +162,7 @@ Authentication is not required
|
||||
{
|
||||
"op": 0,
|
||||
"d": {
|
||||
"obsWebSocketVersion": "5.0.1",
|
||||
"obsWebSocketVersion": "5.1.0",
|
||||
"rpcVersion": 1
|
||||
}
|
||||
}
|
||||
|
@ -237,6 +237,14 @@
|
||||
"initialVersion": "5.0.0",
|
||||
"enumValue": 206
|
||||
},
|
||||
{
|
||||
"description": "The server is not ready to handle the request.\n\nNote: This usually occurs during OBS scene collection change or exit. Requests may be tried again after a delay if this code is given.",
|
||||
"enumIdentifier": "NotReady",
|
||||
"rpcVersion": "1",
|
||||
"deprecated": false,
|
||||
"initialVersion": "5.3.0",
|
||||
"enumValue": 207
|
||||
},
|
||||
{
|
||||
"description": "A required request field is missing.",
|
||||
"enumIdentifier": "MissingRequestField",
|
||||
@ -447,6 +455,83 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"enumType": "ObsOutputState",
|
||||
"enumIdentifiers": [
|
||||
{
|
||||
"description": "Unknown state.",
|
||||
"enumIdentifier": "OBS_WEBSOCKET_OUTPUT_UNKNOWN",
|
||||
"rpcVersion": 1,
|
||||
"deprecated": true,
|
||||
"initialVersion": "5.0.0",
|
||||
"enumValue": "OBS_WEBSOCKET_OUTPUT_UNKNOWN"
|
||||
},
|
||||
{
|
||||
"description": "The output is starting.",
|
||||
"enumIdentifier": "OBS_WEBSOCKET_OUTPUT_STARTING",
|
||||
"rpcVersion": 1,
|
||||
"deprecated": true,
|
||||
"initialVersion": "5.0.0",
|
||||
"enumValue": "OBS_WEBSOCKET_OUTPUT_STARTING"
|
||||
},
|
||||
{
|
||||
"description": "The input has started.",
|
||||
"enumIdentifier": "OBS_WEBSOCKET_OUTPUT_STARTED",
|
||||
"rpcVersion": 1,
|
||||
"deprecated": true,
|
||||
"initialVersion": "5.0.0",
|
||||
"enumValue": "OBS_WEBSOCKET_OUTPUT_STARTED"
|
||||
},
|
||||
{
|
||||
"description": "The output is stopping.",
|
||||
"enumIdentifier": "OBS_WEBSOCKET_OUTPUT_STOPPING",
|
||||
"rpcVersion": 1,
|
||||
"deprecated": true,
|
||||
"initialVersion": "5.0.0",
|
||||
"enumValue": "OBS_WEBSOCKET_OUTPUT_STOPPING"
|
||||
},
|
||||
{
|
||||
"description": "The output has stopped.",
|
||||
"enumIdentifier": "OBS_WEBSOCKET_OUTPUT_STOPPED",
|
||||
"rpcVersion": 1,
|
||||
"deprecated": true,
|
||||
"initialVersion": "5.0.0",
|
||||
"enumValue": "OBS_WEBSOCKET_OUTPUT_STOPPED"
|
||||
},
|
||||
{
|
||||
"description": "The output has disconnected and is reconnecting.",
|
||||
"enumIdentifier": "OBS_WEBSOCKET_OUTPUT_RECONNECTING",
|
||||
"rpcVersion": 1,
|
||||
"deprecated": true,
|
||||
"initialVersion": "5.0.0",
|
||||
"enumValue": "OBS_WEBSOCKET_OUTPUT_RECONNECTING"
|
||||
},
|
||||
{
|
||||
"description": "The output has reconnected successfully.",
|
||||
"enumIdentifier": "OBS_WEBSOCKET_OUTPUT_RECONNECTED",
|
||||
"rpcVersion": 1,
|
||||
"deprecated": true,
|
||||
"initialVersion": "5.1.0",
|
||||
"enumValue": "OBS_WEBSOCKET_OUTPUT_RECONNECTED"
|
||||
},
|
||||
{
|
||||
"description": "The output is now paused.",
|
||||
"enumIdentifier": "OBS_WEBSOCKET_OUTPUT_PAUSED",
|
||||
"rpcVersion": 1,
|
||||
"deprecated": true,
|
||||
"initialVersion": "5.1.0",
|
||||
"enumValue": "OBS_WEBSOCKET_OUTPUT_PAUSED"
|
||||
},
|
||||
{
|
||||
"description": "The output has been resumed (unpaused).",
|
||||
"enumIdentifier": "OBS_WEBSOCKET_OUTPUT_RESUMED",
|
||||
"rpcVersion": 1,
|
||||
"deprecated": true,
|
||||
"initialVersion": "5.0.0",
|
||||
"enumValue": "OBS_WEBSOCKET_OUTPUT_RESUMED"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"enumType": "ObsMediaInputAction",
|
||||
"enumIdentifiers": [
|
||||
@ -1140,7 +1225,7 @@
|
||||
{
|
||||
"description": "Gets the current directory that the record output is set to.",
|
||||
"requestType": "GetRecordDirectory",
|
||||
"complexity": 1,
|
||||
"complexity": 2,
|
||||
"rpcVersion": "1",
|
||||
"deprecated": false,
|
||||
"initialVersion": "5.0.0",
|
||||
@ -1154,6 +1239,43 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "Sets the current directory that the record output writes files to.",
|
||||
"requestType": "SetRecordDirectory",
|
||||
"complexity": 2,
|
||||
"rpcVersion": "1",
|
||||
"deprecated": false,
|
||||
"initialVersion": "5.3.0",
|
||||
"category": "config",
|
||||
"requestFields": [
|
||||
{
|
||||
"valueName": "recordDirectory",
|
||||
"valueType": "String",
|
||||
"valueDescription": "Output directory",
|
||||
"valueRestrictions": null,
|
||||
"valueOptional": false,
|
||||
"valueOptionalBehavior": null
|
||||
}
|
||||
],
|
||||
"responseFields": []
|
||||
},
|
||||
{
|
||||
"description": "Gets an array of all available source filter kinds.\n\nSimilar to `GetInputKindList`",
|
||||
"requestType": "GetSourceFilterKindList",
|
||||
"complexity": 2,
|
||||
"rpcVersion": "1",
|
||||
"deprecated": false,
|
||||
"initialVersion": "5.4.0",
|
||||
"category": "filters",
|
||||
"requestFields": [],
|
||||
"responseFields": [
|
||||
{
|
||||
"valueName": "sourceFilterKinds",
|
||||
"valueType": "Array<String>",
|
||||
"valueDescription": "Array of source filter kinds"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "Gets an array of all of a source's filters.",
|
||||
"requestType": "GetSourceFilterList",
|
||||
@ -1698,6 +1820,14 @@
|
||||
"valueRestrictions": null,
|
||||
"valueOptional": false,
|
||||
"valueOptionalBehavior": null
|
||||
},
|
||||
{
|
||||
"valueName": "contextName",
|
||||
"valueType": "String",
|
||||
"valueDescription": "Name of context of the hotkey to trigger",
|
||||
"valueRestrictions": null,
|
||||
"valueOptional": true,
|
||||
"valueOptionalBehavior": "Unknown"
|
||||
}
|
||||
],
|
||||
"responseFields": []
|
||||
@ -1776,16 +1906,16 @@
|
||||
"valueType": "Number",
|
||||
"valueDescription": "Number of milliseconds to sleep for (if `SERIAL_REALTIME` mode)",
|
||||
"valueRestrictions": ">= 0, <= 50000",
|
||||
"valueOptional": false,
|
||||
"valueOptionalBehavior": null
|
||||
"valueOptional": true,
|
||||
"valueOptionalBehavior": "Unknown"
|
||||
},
|
||||
{
|
||||
"valueName": "sleepFrames",
|
||||
"valueType": "Number",
|
||||
"valueDescription": "Number of frames to sleep for (if `SERIAL_FRAME` mode)",
|
||||
"valueRestrictions": ">= 0, <= 10000",
|
||||
"valueOptional": false,
|
||||
"valueOptionalBehavior": null
|
||||
"valueOptional": true,
|
||||
"valueOptionalBehavior": "Unknown"
|
||||
}
|
||||
],
|
||||
"responseFields": []
|
||||
@ -2481,7 +2611,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "Presses a button in the properties of an input.\n\nNote: Use this in cases where there is a button in the properties of an input that cannot be accessed in any other way. For example, browser sources, where there is a refresh button.",
|
||||
"description": "Presses a button in the properties of an input.\n\nSome known `propertyName` values are:\n\n- `refreshnocache` - Browser source reload button\n\nNote: Use this in cases where there is a button in the properties of an input that cannot be accessed in any other way. For example, browser sources, where there is a refresh button.",
|
||||
"requestType": "PressInputPropertiesButton",
|
||||
"complexity": 4,
|
||||
"rpcVersion": "1",
|
||||
@ -2777,7 +2907,13 @@
|
||||
"initialVersion": "5.0.0",
|
||||
"category": "outputs",
|
||||
"requestFields": [],
|
||||
"responseFields": []
|
||||
"responseFields": [
|
||||
{
|
||||
"valueName": "outputs",
|
||||
"valueType": "Array<Object>",
|
||||
"valueDescription": "Array of outputs"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "Gets the status of an output.",
|
||||
@ -2976,7 +3112,7 @@
|
||||
"valueDescription": "Whether the output is active"
|
||||
},
|
||||
{
|
||||
"valueName": "ouputPaused",
|
||||
"valueName": "outputPaused",
|
||||
"valueType": "Boolean",
|
||||
"valueDescription": "Whether the output is paused"
|
||||
},
|
||||
@ -3006,7 +3142,13 @@
|
||||
"initialVersion": "5.0.0",
|
||||
"category": "record",
|
||||
"requestFields": [],
|
||||
"responseFields": []
|
||||
"responseFields": [
|
||||
{
|
||||
"valueName": "outputActive",
|
||||
"valueType": "Boolean",
|
||||
"valueDescription": "The new active state of the output"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "Starts the record output.",
|
||||
@ -3096,7 +3238,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "Basically GetSceneItemList, but for groups.\n\nUsing groups at all in OBS is discouraged, as they are very broken under the hood.\n\nGroups only",
|
||||
"description": "Basically GetSceneItemList, but for groups.\n\nUsing groups at all in OBS is discouraged, as they are very broken under the hood. Please use nested scenes instead.\n\nGroups only",
|
||||
"requestType": "GetGroupSceneItemList",
|
||||
"complexity": 3,
|
||||
"rpcVersion": "1",
|
||||
@ -3843,7 +3985,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "Gets the scene transition overridden for a scene.",
|
||||
"description": "Sets the scene transition overridden for a scene.",
|
||||
"requestType": "SetSceneSceneTransitionOverride",
|
||||
"complexity": 2,
|
||||
"rpcVersion": "1",
|
||||
@ -4955,7 +5097,7 @@
|
||||
{
|
||||
"valueName": "inputVolumeMul",
|
||||
"valueType": "Number",
|
||||
"valueDescription": "New volume level in multimap"
|
||||
"valueDescription": "New volume level multiplier"
|
||||
},
|
||||
{
|
||||
"valueName": "inputVolumeDb",
|
||||
@ -5638,6 +5780,23 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "A screenshot has been saved.\n\nNote: Triggered for the screenshot feature available in `Settings -> Hotkeys -> Screenshot Output` ONLY.\nApplications using `Get/SaveSourceScreenshot` should implement a `CustomEvent` if this kind of inter-client\ncommunication is desired.",
|
||||
"eventType": "ScreenshotSaved",
|
||||
"eventSubscription": "Ui",
|
||||
"complexity": 2,
|
||||
"rpcVersion": "1",
|
||||
"deprecated": false,
|
||||
"initialVersion": "5.1.0",
|
||||
"category": "ui",
|
||||
"dataFields": [
|
||||
{
|
||||
"valueName": "savedScreenshotPath",
|
||||
"valueType": "String",
|
||||
"valueDescription": "Path of the saved image file"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "An event has been emitted from a vendor.\n\nA vendor is a unique name registered by a third-party plugin or script, which allows for custom requests and events to be added to obs-websocket.\nIf a plugin or script implements vendor requests or events, documentation is expected to be provided with them.",
|
||||
"eventType": "VendorEvent",
|
||||
@ -5664,6 +5823,23 @@
|
||||
"valueDescription": "Vendor-provided event data. {} if event does not provide any data"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "Custom event emitted by `BroadcastCustomEvent`.",
|
||||
"eventType": "CustomEvent",
|
||||
"eventSubscription": "General",
|
||||
"complexity": 1,
|
||||
"rpcVersion": "1",
|
||||
"deprecated": false,
|
||||
"initialVersion": "5.0.0",
|
||||
"category": "general",
|
||||
"dataFields": [
|
||||
{
|
||||
"valueName": "eventData",
|
||||
"valueType": "Object",
|
||||
"valueDescription": "Custom event data"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
<!-- This file was automatically generated. Do not edit directly! -->
|
||||
<!-- markdownlint-disable no-bare-urls -->
|
||||
|
||||
# obs-websocket 5.0.1 Protocol
|
||||
# obs-websocket 5.x.x Protocol
|
||||
|
||||
## Main Table of Contents
|
||||
|
||||
@ -21,6 +21,9 @@
|
||||
- [RequestResponse (OpCode 7)](#requestresponse-opcode-7)
|
||||
- [RequestBatch (OpCode 8)](#requestbatch-opcode-8)
|
||||
- [RequestBatchResponse (OpCode 9)](#requestbatchresponse-opcode-9)
|
||||
- [Enumerations](#enums)
|
||||
- [Events](#events)
|
||||
- [Requests](#requests)
|
||||
|
||||
## General Intro
|
||||
|
||||
@ -60,7 +63,7 @@ These steps should be followed precisely. Failure to connect to the server as in
|
||||
|
||||
- The server receives and processes the `Identify` sent by the client.
|
||||
- If authentication is required and the `Identify` message data does not contain an `authentication` string, or the string is not correct, the connection is closed with `WebSocketCloseCode::AuthenticationFailed`
|
||||
- If the client has requested an `rpcVersion` which the server cannot use, the connection is closed with `WebSocketCloseCode::UnsupportedRpcVersion`. This system allows both the server and client to have seamless backwards compatability.
|
||||
- If the client has requested an `rpcVersion` which the server cannot use, the connection is closed with `WebSocketCloseCode::UnsupportedRpcVersion`. This system allows both the server and client to have seamless backwards compatibility.
|
||||
- If any other parameters are malformed (invalid type, etc), the connection is closed with an appropriate close code.
|
||||
|
||||
- Once identification is processed on the server, the server responds to the client with an [OpCode 2 `Identified`](#identified-opcode-2).
|
||||
@ -145,7 +148,7 @@ Authentication is required
|
||||
{
|
||||
"op": 0,
|
||||
"d": {
|
||||
"obsWebSocketVersion": "5.0.1",
|
||||
"obsWebSocketVersion": "5.1.0",
|
||||
"rpcVersion": 1,
|
||||
"authentication": {
|
||||
"challenge": "+IxH4CnCiqpX1rM9scsNynZzbOe4KhDeYcTNS3PDaeY=",
|
||||
@ -161,7 +164,7 @@ Authentication is not required
|
||||
{
|
||||
"op": 0,
|
||||
"d": {
|
||||
"obsWebSocketVersion": "5.0.1",
|
||||
"obsWebSocketVersion": "5.1.0",
|
||||
"rpcVersion": 1
|
||||
}
|
||||
}
|
||||
@ -468,6 +471,7 @@ These are enumeration declarations, which are referenced throughout obs-websocke
|
||||
- [RequestStatus::UnknownRequestType](#requeststatusunknownrequesttype)
|
||||
- [RequestStatus::GenericError](#requeststatusgenericerror)
|
||||
- [RequestStatus::UnsupportedRequestBatchExecutionType](#requeststatusunsupportedrequestbatchexecutiontype)
|
||||
- [RequestStatus::NotReady](#requeststatusnotready)
|
||||
- [RequestStatus::MissingRequestField](#requeststatusmissingrequestfield)
|
||||
- [RequestStatus::MissingRequestData](#requeststatusmissingrequestdata)
|
||||
- [RequestStatus::InvalidRequestField](#requeststatusinvalidrequestfield)
|
||||
@ -512,6 +516,24 @@ These are enumeration declarations, which are referenced throughout obs-websocke
|
||||
- [EventSubscription::InputActiveStateChanged](#eventsubscriptioninputactivestatechanged)
|
||||
- [EventSubscription::InputShowStateChanged](#eventsubscriptioninputshowstatechanged)
|
||||
- [EventSubscription::SceneItemTransformChanged](#eventsubscriptionsceneitemtransformchanged)
|
||||
- [ObsMediaInputAction](#obsmediainputaction)
|
||||
- [ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_NONE](#obsmediainputactionobs_websocket_media_input_action_none)
|
||||
- [ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_PLAY](#obsmediainputactionobs_websocket_media_input_action_play)
|
||||
- [ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_PAUSE](#obsmediainputactionobs_websocket_media_input_action_pause)
|
||||
- [ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_STOP](#obsmediainputactionobs_websocket_media_input_action_stop)
|
||||
- [ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_RESTART](#obsmediainputactionobs_websocket_media_input_action_restart)
|
||||
- [ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_NEXT](#obsmediainputactionobs_websocket_media_input_action_next)
|
||||
- [ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_PREVIOUS](#obsmediainputactionobs_websocket_media_input_action_previous)
|
||||
- [ObsOutputState](#obsoutputstate)
|
||||
- [ObsOutputState::OBS_WEBSOCKET_OUTPUT_UNKNOWN](#obsoutputstateobs_websocket_output_unknown)
|
||||
- [ObsOutputState::OBS_WEBSOCKET_OUTPUT_STARTING](#obsoutputstateobs_websocket_output_starting)
|
||||
- [ObsOutputState::OBS_WEBSOCKET_OUTPUT_STARTED](#obsoutputstateobs_websocket_output_started)
|
||||
- [ObsOutputState::OBS_WEBSOCKET_OUTPUT_STOPPING](#obsoutputstateobs_websocket_output_stopping)
|
||||
- [ObsOutputState::OBS_WEBSOCKET_OUTPUT_STOPPED](#obsoutputstateobs_websocket_output_stopped)
|
||||
- [ObsOutputState::OBS_WEBSOCKET_OUTPUT_RECONNECTING](#obsoutputstateobs_websocket_output_reconnecting)
|
||||
- [ObsOutputState::OBS_WEBSOCKET_OUTPUT_RECONNECTED](#obsoutputstateobs_websocket_output_reconnected)
|
||||
- [ObsOutputState::OBS_WEBSOCKET_OUTPUT_PAUSED](#obsoutputstateobs_websocket_output_paused)
|
||||
- [ObsOutputState::OBS_WEBSOCKET_OUTPUT_RESUMED](#obsoutputstateobs_websocket_output_resumed)
|
||||
|
||||
## WebSocketOpCode
|
||||
|
||||
@ -858,6 +880,18 @@ The request batch execution type is not supported.
|
||||
|
||||
---
|
||||
|
||||
### RequestStatus::NotReady
|
||||
|
||||
The server is not ready to handle the request.
|
||||
|
||||
Note: This usually occurs during OBS scene collection change or exit. Requests may be tried again after a delay if this code is given.
|
||||
|
||||
- Identifier Value: `207`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.3.0
|
||||
|
||||
---
|
||||
|
||||
### RequestStatus::MissingRequestField
|
||||
|
||||
A required request field is missing.
|
||||
@ -1294,6 +1328,182 @@ Subscription value to receive the `SceneItemTransformChanged` high-volume event.
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.0.0
|
||||
|
||||
## ObsMediaInputAction
|
||||
|
||||
### ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_NONE
|
||||
|
||||
No action.
|
||||
|
||||
- Identifier Value: `OBS_WEBSOCKET_MEDIA_INPUT_ACTION_NONE`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- **⚠️ Deprecated. ⚠️**
|
||||
- Added in v5.0.0
|
||||
|
||||
---
|
||||
|
||||
### ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_PLAY
|
||||
|
||||
Play the media input.
|
||||
|
||||
- Identifier Value: `OBS_WEBSOCKET_MEDIA_INPUT_ACTION_PLAY`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- **⚠️ Deprecated. ⚠️**
|
||||
- Added in v5.0.0
|
||||
|
||||
---
|
||||
|
||||
### ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_PAUSE
|
||||
|
||||
Pause the media input.
|
||||
|
||||
- Identifier Value: `OBS_WEBSOCKET_MEDIA_INPUT_ACTION_PAUSE`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- **⚠️ Deprecated. ⚠️**
|
||||
- Added in v5.0.0
|
||||
|
||||
---
|
||||
|
||||
### ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_STOP
|
||||
|
||||
Stop the media input.
|
||||
|
||||
- Identifier Value: `OBS_WEBSOCKET_MEDIA_INPUT_ACTION_STOP`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- **⚠️ Deprecated. ⚠️**
|
||||
- Added in v5.0.0
|
||||
|
||||
---
|
||||
|
||||
### ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_RESTART
|
||||
|
||||
Restart the media input.
|
||||
|
||||
- Identifier Value: `OBS_WEBSOCKET_MEDIA_INPUT_ACTION_RESTART`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- **⚠️ Deprecated. ⚠️**
|
||||
- Added in v5.0.0
|
||||
|
||||
---
|
||||
|
||||
### ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_NEXT
|
||||
|
||||
Go to the next playlist item.
|
||||
|
||||
- Identifier Value: `OBS_WEBSOCKET_MEDIA_INPUT_ACTION_NEXT`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- **⚠️ Deprecated. ⚠️**
|
||||
- Added in v5.0.0
|
||||
|
||||
---
|
||||
|
||||
### ObsMediaInputAction::OBS_WEBSOCKET_MEDIA_INPUT_ACTION_PREVIOUS
|
||||
|
||||
Go to the previous playlist item.
|
||||
|
||||
- Identifier Value: `OBS_WEBSOCKET_MEDIA_INPUT_ACTION_PREVIOUS`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- **⚠️ Deprecated. ⚠️**
|
||||
- Added in v5.0.0
|
||||
|
||||
## ObsOutputState
|
||||
|
||||
### ObsOutputState::OBS_WEBSOCKET_OUTPUT_UNKNOWN
|
||||
|
||||
Unknown state.
|
||||
|
||||
- Identifier Value: `OBS_WEBSOCKET_OUTPUT_UNKNOWN`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- **⚠️ Deprecated. ⚠️**
|
||||
- Added in v5.0.0
|
||||
|
||||
---
|
||||
|
||||
### ObsOutputState::OBS_WEBSOCKET_OUTPUT_STARTING
|
||||
|
||||
The output is starting.
|
||||
|
||||
- Identifier Value: `OBS_WEBSOCKET_OUTPUT_STARTING`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- **⚠️ Deprecated. ⚠️**
|
||||
- Added in v5.0.0
|
||||
|
||||
---
|
||||
|
||||
### ObsOutputState::OBS_WEBSOCKET_OUTPUT_STARTED
|
||||
|
||||
The input has started.
|
||||
|
||||
- Identifier Value: `OBS_WEBSOCKET_OUTPUT_STARTED`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- **⚠️ Deprecated. ⚠️**
|
||||
- Added in v5.0.0
|
||||
|
||||
---
|
||||
|
||||
### ObsOutputState::OBS_WEBSOCKET_OUTPUT_STOPPING
|
||||
|
||||
The output is stopping.
|
||||
|
||||
- Identifier Value: `OBS_WEBSOCKET_OUTPUT_STOPPING`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- **⚠️ Deprecated. ⚠️**
|
||||
- Added in v5.0.0
|
||||
|
||||
---
|
||||
|
||||
### ObsOutputState::OBS_WEBSOCKET_OUTPUT_STOPPED
|
||||
|
||||
The output has stopped.
|
||||
|
||||
- Identifier Value: `OBS_WEBSOCKET_OUTPUT_STOPPED`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- **⚠️ Deprecated. ⚠️**
|
||||
- Added in v5.0.0
|
||||
|
||||
---
|
||||
|
||||
### ObsOutputState::OBS_WEBSOCKET_OUTPUT_RECONNECTING
|
||||
|
||||
The output has disconnected and is reconnecting.
|
||||
|
||||
- Identifier Value: `OBS_WEBSOCKET_OUTPUT_RECONNECTING`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- **⚠️ Deprecated. ⚠️**
|
||||
- Added in v5.0.0
|
||||
|
||||
---
|
||||
|
||||
### ObsOutputState::OBS_WEBSOCKET_OUTPUT_RECONNECTED
|
||||
|
||||
The output has reconnected successfully.
|
||||
|
||||
- Identifier Value: `OBS_WEBSOCKET_OUTPUT_RECONNECTED`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- **⚠️ Deprecated. ⚠️**
|
||||
- Added in v5.1.0
|
||||
|
||||
---
|
||||
|
||||
### ObsOutputState::OBS_WEBSOCKET_OUTPUT_PAUSED
|
||||
|
||||
The output is now paused.
|
||||
|
||||
- Identifier Value: `OBS_WEBSOCKET_OUTPUT_PAUSED`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- **⚠️ Deprecated. ⚠️**
|
||||
- Added in v5.1.0
|
||||
|
||||
---
|
||||
|
||||
### ObsOutputState::OBS_WEBSOCKET_OUTPUT_RESUMED
|
||||
|
||||
The output has been resumed (unpaused).
|
||||
|
||||
- Identifier Value: `OBS_WEBSOCKET_OUTPUT_RESUMED`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- **⚠️ Deprecated. ⚠️**
|
||||
- Added in v5.0.0
|
||||
|
||||
# Events
|
||||
|
||||
## Events Table of Contents
|
||||
@ -1301,6 +1511,7 @@ Subscription value to receive the `SceneItemTransformChanged` high-volume event.
|
||||
- [General Events](#general-events)
|
||||
- [ExitStarted](#exitstarted)
|
||||
- [VendorEvent](#vendorevent)
|
||||
- [CustomEvent](#customevent)
|
||||
- [Config Events](#config-events)
|
||||
- [CurrentSceneCollectionChanging](#currentscenecollectionchanging)
|
||||
- [CurrentSceneCollectionChanged](#currentscenecollectionchanged)
|
||||
@ -1360,6 +1571,7 @@ Subscription value to receive the `SceneItemTransformChanged` high-volume event.
|
||||
- [MediaInputActionTriggered](#mediainputactiontriggered)
|
||||
- [Ui Events](#ui-events)
|
||||
- [StudioModeStateChanged](#studiomodestatechanged)
|
||||
- [ScreenshotSaved](#screenshotsaved)
|
||||
|
||||
## General Events
|
||||
|
||||
@ -1392,6 +1604,22 @@ If a plugin or script implements vendor requests or events, documentation is exp
|
||||
| eventType | String | Vendor-provided event typedef |
|
||||
| eventData | Object | Vendor-provided event data. {} if event does not provide any data |
|
||||
|
||||
---
|
||||
|
||||
### CustomEvent
|
||||
|
||||
Custom event emitted by `BroadcastCustomEvent`.
|
||||
|
||||
- Complexity Rating: `1/5`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.0.0
|
||||
|
||||
**Data Fields:**
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | :---: | ----------- |
|
||||
| eventData | Object | Custom event data |
|
||||
|
||||
## Config Events
|
||||
|
||||
### CurrentSceneCollectionChanging
|
||||
@ -1717,7 +1945,7 @@ An input's volume level has changed.
|
||||
| Name | Type | Description |
|
||||
| ---- | :---: | ----------- |
|
||||
| inputName | String | Name of the input |
|
||||
| inputVolumeMul | Number | New volume level in multimap |
|
||||
| inputVolumeMul | Number | New volume level multiplier |
|
||||
| inputVolumeDb | Number | New volume level in dB |
|
||||
|
||||
---
|
||||
@ -2265,6 +2493,26 @@ Studio mode has been enabled or disabled.
|
||||
| ---- | :---: | ----------- |
|
||||
| studioModeEnabled | Boolean | True == Enabled, False == Disabled |
|
||||
|
||||
---
|
||||
|
||||
### ScreenshotSaved
|
||||
|
||||
A screenshot has been saved.
|
||||
|
||||
Note: Triggered for the screenshot feature available in `Settings -> Hotkeys -> Screenshot Output` ONLY.
|
||||
Applications using `Get/SaveSourceScreenshot` should implement a `CustomEvent` if this kind of inter-client
|
||||
communication is desired.
|
||||
|
||||
- Complexity Rating: `2/5`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.1.0
|
||||
|
||||
**Data Fields:**
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | :---: | ----------- |
|
||||
| savedScreenshotPath | String | Path of the saved image file |
|
||||
|
||||
# Requests
|
||||
|
||||
## Requests Table of Contents
|
||||
@ -2295,6 +2543,7 @@ Studio mode has been enabled or disabled.
|
||||
- [GetStreamServiceSettings](#getstreamservicesettings)
|
||||
- [SetStreamServiceSettings](#setstreamservicesettings)
|
||||
- [GetRecordDirectory](#getrecorddirectory)
|
||||
- [SetRecordDirectory](#setrecorddirectory)
|
||||
- [Sources Requests](#sources-requests)
|
||||
- [GetSourceActive](#getsourceactive)
|
||||
- [GetSourceScreenshot](#getsourcescreenshot)
|
||||
@ -2347,6 +2596,7 @@ Studio mode has been enabled or disabled.
|
||||
- [TriggerStudioModeTransition](#triggerstudiomodetransition)
|
||||
- [SetTBarPosition](#settbarposition)
|
||||
- [Filters Requests](#filters-1-requests)
|
||||
- [GetSourceFilterKindList](#getsourcefilterkindlist)
|
||||
- [GetSourceFilterList](#getsourcefilterlist)
|
||||
- [GetSourceFilterDefaultSettings](#getsourcefilterdefaultsettings)
|
||||
- [CreateSourceFilter](#createsourcefilter)
|
||||
@ -2544,6 +2794,7 @@ Triggers a hotkey using its name. See `GetHotkeyList`
|
||||
| Name | Type | Description | Value Restrictions | ?Default Behavior |
|
||||
| ---- | :---: | ----------- | :----------------: | ----------------- |
|
||||
| hotkeyName | String | Name of the hotkey to trigger | None | N/A |
|
||||
| ?contextName | String | Name of context of the hotkey to trigger | None | Unknown |
|
||||
|
||||
---
|
||||
|
||||
@ -2580,8 +2831,8 @@ Sleeps for a time duration or number of frames. Only available in request batche
|
||||
|
||||
| Name | Type | Description | Value Restrictions | ?Default Behavior |
|
||||
| ---- | :---: | ----------- | :----------------: | ----------------- |
|
||||
| sleepMillis | Number | Number of milliseconds to sleep for (if `SERIAL_REALTIME` mode) | >= 0, <= 50000 | N/A |
|
||||
| sleepFrames | Number | Number of frames to sleep for (if `SERIAL_FRAME` mode) | >= 0, <= 10000 | N/A |
|
||||
| ?sleepMillis | Number | Number of milliseconds to sleep for (if `SERIAL_REALTIME` mode) | >= 0, <= 50000 | Unknown |
|
||||
| ?sleepFrames | Number | Number of frames to sleep for (if `SERIAL_FRAME` mode) | >= 0, <= 10000 | Unknown |
|
||||
|
||||
## Config Requests
|
||||
|
||||
@ -2872,7 +3123,7 @@ Note: Simple RTMP settings can be set with type `rtmp_custom` and the settings f
|
||||
|
||||
Gets the current directory that the record output is set to.
|
||||
|
||||
- Complexity Rating: `1/5`
|
||||
- Complexity Rating: `2/5`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.0.0
|
||||
|
||||
@ -2882,6 +3133,22 @@ Gets the current directory that the record output is set to.
|
||||
| ---- | :---: | ----------- |
|
||||
| recordDirectory | String | Output directory |
|
||||
|
||||
---
|
||||
|
||||
### SetRecordDirectory
|
||||
|
||||
Sets the current directory that the record output writes files to.
|
||||
|
||||
- Complexity Rating: `2/5`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.3.0
|
||||
|
||||
**Request Fields:**
|
||||
|
||||
| Name | Type | Description | Value Restrictions | ?Default Behavior |
|
||||
| ---- | :---: | ----------- | :----------------: | ----------------- |
|
||||
| recordDirectory | String | Output directory | None | N/A |
|
||||
|
||||
## Sources Requests
|
||||
|
||||
### GetSourceActive
|
||||
@ -3150,7 +3417,7 @@ Gets the scene transition overridden for a scene.
|
||||
|
||||
### SetSceneSceneTransitionOverride
|
||||
|
||||
Gets the scene transition overridden for a scene.
|
||||
Sets the scene transition overridden for a scene.
|
||||
|
||||
- Complexity Rating: `2/5`
|
||||
- Latest Supported RPC Version: `1`
|
||||
@ -3652,6 +3919,10 @@ Note: Use this in cases where an input provides a dynamic, selectable list of it
|
||||
|
||||
Presses a button in the properties of an input.
|
||||
|
||||
Some known `propertyName` values are:
|
||||
|
||||
- `refreshnocache` - Browser source reload button
|
||||
|
||||
Note: Use this in cases where there is a button in the properties of an input that cannot be accessed in any other way. For example, browser sources, where there is a refresh button.
|
||||
|
||||
- Complexity Rating: `4/5`
|
||||
@ -3822,6 +4093,24 @@ Sets the position of the TBar.
|
||||
|
||||
## Filters Requests
|
||||
|
||||
### GetSourceFilterKindList
|
||||
|
||||
Gets an array of all available source filter kinds.
|
||||
|
||||
Similar to `GetInputKindList`
|
||||
|
||||
- Complexity Rating: `2/5`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.4.0
|
||||
|
||||
**Response Fields:**
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | :---: | ----------- |
|
||||
| sourceFilterKinds | Array<String> | Array of source filter kinds |
|
||||
|
||||
---
|
||||
|
||||
### GetSourceFilterList
|
||||
|
||||
Gets an array of all of a source's filters.
|
||||
@ -4029,7 +4318,7 @@ Scenes only
|
||||
|
||||
Basically GetSceneItemList, but for groups.
|
||||
|
||||
Using groups at all in OBS is discouraged, as they are very broken under the hood.
|
||||
Using groups at all in OBS is discouraged, as they are very broken under the hood. Please use nested scenes instead.
|
||||
|
||||
Groups only
|
||||
|
||||
@ -4521,6 +4810,12 @@ Gets the list of available outputs.
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.0.0
|
||||
|
||||
**Response Fields:**
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | :---: | ----------- |
|
||||
| outputs | Array<Object> | Array of outputs |
|
||||
|
||||
---
|
||||
|
||||
### GetOutputStatus
|
||||
@ -4733,7 +5028,7 @@ Gets the status of the record output.
|
||||
| Name | Type | Description |
|
||||
| ---- | :---: | ----------- |
|
||||
| outputActive | Boolean | Whether the output is active |
|
||||
| ouputPaused | Boolean | Whether the output is paused |
|
||||
| outputPaused | Boolean | Whether the output is paused |
|
||||
| outputTimecode | String | Current formatted timecode string for the output |
|
||||
| outputDuration | Number | Current duration in milliseconds for the output |
|
||||
| outputBytes | Number | Number of bytes sent by the output |
|
||||
@ -4748,6 +5043,12 @@ Toggles the status of the record output.
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.0.0
|
||||
|
||||
**Response Fields:**
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | :---: | ----------- |
|
||||
| outputActive | Boolean | The new active state of the output |
|
||||
|
||||
---
|
||||
|
||||
### StartRecord
|
||||
|
@ -38,16 +38,6 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
#define CMDLINE_WEBSOCKET_DEBUG "websocket_debug"
|
||||
|
||||
Config::Config()
|
||||
: PortOverridden(false),
|
||||
PasswordOverridden(false),
|
||||
FirstLoad(true),
|
||||
ServerEnabled(false),
|
||||
ServerPort(4455),
|
||||
Ipv4Only(false),
|
||||
DebugEnabled(false),
|
||||
AlertsEnabled(false),
|
||||
AuthRequired(true),
|
||||
ServerPassword("")
|
||||
{
|
||||
SetDefaultsToGlobalStore();
|
||||
}
|
||||
|
20
src/Config.h
20
src/Config.h
@ -30,17 +30,17 @@ struct Config {
|
||||
void Load();
|
||||
void Save();
|
||||
void SetDefaultsToGlobalStore();
|
||||
config_t *GetConfigStore();
|
||||
static config_t *GetConfigStore();
|
||||
|
||||
std::atomic<bool> PortOverridden;
|
||||
std::atomic<bool> PasswordOverridden;
|
||||
std::atomic<bool> PortOverridden = false;
|
||||
std::atomic<bool> PasswordOverridden = false;
|
||||
|
||||
std::atomic<bool> FirstLoad;
|
||||
std::atomic<bool> ServerEnabled;
|
||||
std::atomic<uint16_t> ServerPort;
|
||||
std::atomic<bool> Ipv4Only;
|
||||
std::atomic<bool> DebugEnabled;
|
||||
std::atomic<bool> AlertsEnabled;
|
||||
std::atomic<bool> AuthRequired;
|
||||
std::atomic<bool> FirstLoad = true;
|
||||
std::atomic<bool> ServerEnabled = false;
|
||||
std::atomic<uint16_t> ServerPort = 4455;
|
||||
std::atomic<bool> Ipv4Only = false;
|
||||
std::atomic<bool> DebugEnabled = false;
|
||||
std::atomic<bool> AlertsEnabled = false;
|
||||
std::atomic<bool> AuthRequired = true;
|
||||
QString ServerPassword;
|
||||
};
|
||||
|
@ -1,3 +1,21 @@
|
||||
/*
|
||||
obs-websocket
|
||||
Copyright (C) 2020-2023 Kyle Manning <tt2468@gmail.com>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
#include "WebSocketApi.h"
|
||||
#include "requesthandler/RequestHandler.h"
|
||||
#include "obs-websocket.h"
|
||||
|
@ -1,3 +1,21 @@
|
||||
/*
|
||||
obs-websocket
|
||||
Copyright (C) 2020-2023 Kyle Manning <tt2468@gmail.com>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <functional>
|
||||
|
@ -20,11 +20,6 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
#include "EventHandler.h"
|
||||
|
||||
EventHandler::EventHandler()
|
||||
: _obsLoaded(false),
|
||||
_inputVolumeMetersRef(0),
|
||||
_inputActiveStateChangedRef(0),
|
||||
_inputShowStateChangedRef(0),
|
||||
_sceneItemTransformChangedRef(0)
|
||||
{
|
||||
blog_debug("[EventHandler::EventHandler] Setting up...");
|
||||
|
||||
@ -36,6 +31,7 @@ EventHandler::EventHandler()
|
||||
signal_handler_connect(coreSignalHandler, "source_destroy", SourceDestroyedMultiHandler, this);
|
||||
signal_handler_connect(coreSignalHandler, "source_remove", SourceRemovedMultiHandler, this);
|
||||
signal_handler_connect(coreSignalHandler, "source_rename", SourceRenamedMultiHandler, this);
|
||||
signal_handler_connect(coreSignalHandler, "source_update", SourceUpdatedMultiHandler, this);
|
||||
} else {
|
||||
blog(LOG_ERROR, "[EventHandler::EventHandler] Unable to get libobs signal handler!");
|
||||
}
|
||||
@ -55,10 +51,25 @@ EventHandler::~EventHandler()
|
||||
signal_handler_disconnect(coreSignalHandler, "source_destroy", SourceDestroyedMultiHandler, this);
|
||||
signal_handler_disconnect(coreSignalHandler, "source_remove", SourceRemovedMultiHandler, this);
|
||||
signal_handler_disconnect(coreSignalHandler, "source_rename", SourceRenamedMultiHandler, this);
|
||||
signal_handler_disconnect(coreSignalHandler, "source_update", SourceUpdatedMultiHandler, this);
|
||||
} else {
|
||||
blog(LOG_ERROR, "[EventHandler::~EventHandler] Unable to get libobs signal handler!");
|
||||
}
|
||||
|
||||
// Revoke callbacks of all inputs and scenes, in case some still have our callbacks attached
|
||||
auto enumInputs = [](void *param, obs_source_t *source) {
|
||||
auto eventHandler = static_cast<EventHandler *>(param);
|
||||
eventHandler->DisconnectSourceSignals(source);
|
||||
return true;
|
||||
};
|
||||
obs_enum_sources(enumInputs, this);
|
||||
auto enumScenes = [](void *param, obs_source_t *source) {
|
||||
auto eventHandler = static_cast<EventHandler *>(param);
|
||||
eventHandler->DisconnectSourceSignals(source);
|
||||
return true;
|
||||
};
|
||||
obs_enum_scenes(enumScenes, this);
|
||||
|
||||
blog_debug("[EventHandler::~EventHandler] Finished.");
|
||||
}
|
||||
|
||||
@ -67,9 +78,9 @@ void EventHandler::SetBroadcastCallback(EventHandler::BroadcastCallback cb)
|
||||
_broadcastCallback = cb;
|
||||
}
|
||||
|
||||
void EventHandler::SetObsLoadedCallback(EventHandler::ObsLoadedCallback cb)
|
||||
void EventHandler::SetObsReadyCallback(EventHandler::ObsReadyCallback cb)
|
||||
{
|
||||
_obsLoadedCallback = cb;
|
||||
_obsReadyCallback = cb;
|
||||
}
|
||||
|
||||
// Function to increment refcounts for high volume event subscriptions
|
||||
@ -261,103 +272,13 @@ void EventHandler::OnFrontendEvent(enum obs_frontend_event event, void *private_
|
||||
{
|
||||
auto eventHandler = static_cast<EventHandler *>(private_data);
|
||||
|
||||
if (!eventHandler->_obsLoaded.load() && event != OBS_FRONTEND_EVENT_FINISHED_LOADING)
|
||||
return;
|
||||
|
||||
switch (event) {
|
||||
// General
|
||||
case OBS_FRONTEND_EVENT_FINISHED_LOADING:
|
||||
blog_debug(
|
||||
"[EventHandler::OnFrontendEvent] OBS has finished loading. Connecting final handlers and enabling events...");
|
||||
|
||||
// Connect source signals and enable events only after OBS has fully loaded (to reduce extra logging).
|
||||
eventHandler->_obsLoaded.store(true);
|
||||
|
||||
// In the case that plugins become hotloadable, this will have to go back into `EventHandler::EventHandler()`
|
||||
// Enumerate inputs and connect each one
|
||||
{
|
||||
auto enumInputs = [](void *param, obs_source_t *source) {
|
||||
auto eventHandler = static_cast<EventHandler *>(param);
|
||||
eventHandler->ConnectSourceSignals(source);
|
||||
return true;
|
||||
};
|
||||
obs_enum_sources(enumInputs, private_data);
|
||||
}
|
||||
|
||||
// Enumerate scenes and connect each one
|
||||
{
|
||||
auto enumScenes = [](void *param, obs_source_t *source) {
|
||||
auto eventHandler = static_cast<EventHandler *>(param);
|
||||
eventHandler->ConnectSourceSignals(source);
|
||||
return true;
|
||||
};
|
||||
obs_enum_scenes(enumScenes, private_data);
|
||||
}
|
||||
|
||||
// Enumerate all scene transitions and connect each one
|
||||
{
|
||||
obs_frontend_source_list transitions = {};
|
||||
obs_frontend_get_transitions(&transitions);
|
||||
for (size_t i = 0; i < transitions.sources.num; i++) {
|
||||
obs_source_t *transition = transitions.sources.array[i];
|
||||
eventHandler->ConnectSourceSignals(transition);
|
||||
}
|
||||
obs_frontend_source_list_free(&transitions);
|
||||
}
|
||||
|
||||
blog_debug("[EventHandler::OnFrontendEvent] Finished.");
|
||||
|
||||
if (eventHandler->_obsLoadedCallback)
|
||||
eventHandler->_obsLoadedCallback();
|
||||
|
||||
eventHandler->FrontendFinishedLoadingMultiHandler();
|
||||
break;
|
||||
case OBS_FRONTEND_EVENT_EXIT:
|
||||
eventHandler->HandleExitStarted();
|
||||
|
||||
blog_debug("[EventHandler::OnFrontendEvent] OBS is unloading. Disabling events...");
|
||||
// Disconnect source signals and disable events when OBS starts unloading (to reduce extra logging).
|
||||
eventHandler->_obsLoaded.store(false);
|
||||
|
||||
// In the case that plugins become hotloadable, this will have to go back into `EventHandler::~EventHandler()`
|
||||
// Enumerate inputs and disconnect each one
|
||||
{
|
||||
auto enumInputs = [](void *param, obs_source_t *source) {
|
||||
auto eventHandler = static_cast<EventHandler *>(param);
|
||||
eventHandler->DisconnectSourceSignals(source);
|
||||
return true;
|
||||
};
|
||||
obs_enum_sources(enumInputs, private_data);
|
||||
}
|
||||
|
||||
// Enumerate scenes and disconnect each one
|
||||
{
|
||||
auto enumScenes = [](void *param, obs_source_t *source) {
|
||||
auto eventHandler = static_cast<EventHandler *>(param);
|
||||
eventHandler->DisconnectSourceSignals(source);
|
||||
return true;
|
||||
};
|
||||
obs_enum_scenes(enumScenes, private_data);
|
||||
}
|
||||
|
||||
// Enumerate all scene transitions and disconnect each one
|
||||
{
|
||||
obs_frontend_source_list transitions = {};
|
||||
obs_frontend_get_transitions(&transitions);
|
||||
for (size_t i = 0; i < transitions.sources.num; i++) {
|
||||
obs_source_t *transition = transitions.sources.array[i];
|
||||
eventHandler->DisconnectSourceSignals(transition);
|
||||
}
|
||||
obs_frontend_source_list_free(&transitions);
|
||||
}
|
||||
|
||||
blog_debug("[EventHandler::OnFrontendEvent] Finished.");
|
||||
|
||||
break;
|
||||
case OBS_FRONTEND_EVENT_STUDIO_MODE_ENABLED:
|
||||
eventHandler->HandleStudioModeStateChanged(true);
|
||||
break;
|
||||
case OBS_FRONTEND_EVENT_STUDIO_MODE_DISABLED:
|
||||
eventHandler->HandleStudioModeStateChanged(false);
|
||||
case OBS_FRONTEND_EVENT_SCRIPTING_SHUTDOWN:
|
||||
eventHandler->FrontendExitMultiHandler();
|
||||
break;
|
||||
|
||||
// Config
|
||||
@ -370,7 +291,11 @@ void EventHandler::OnFrontendEvent(enum obs_frontend_event event, void *private_
|
||||
}
|
||||
obs_frontend_source_list_free(&transitions);
|
||||
}
|
||||
// Before ready update to allow event to broadcast
|
||||
eventHandler->HandleCurrentSceneCollectionChanging();
|
||||
eventHandler->_obsReady = false;
|
||||
if (eventHandler->_obsReadyCallback)
|
||||
eventHandler->_obsReadyCallback(false);
|
||||
break;
|
||||
case OBS_FRONTEND_EVENT_SCENE_COLLECTION_CHANGED: {
|
||||
obs_frontend_source_list transitions = {};
|
||||
@ -381,6 +306,9 @@ void EventHandler::OnFrontendEvent(enum obs_frontend_event event, void *private_
|
||||
}
|
||||
obs_frontend_source_list_free(&transitions);
|
||||
}
|
||||
eventHandler->_obsReady = true;
|
||||
if (eventHandler->_obsReadyCallback)
|
||||
eventHandler->_obsReadyCallback(true);
|
||||
eventHandler->HandleCurrentSceneCollectionChanged();
|
||||
break;
|
||||
case OBS_FRONTEND_EVENT_SCENE_COLLECTION_LIST_CHANGED:
|
||||
@ -427,12 +355,31 @@ void EventHandler::OnFrontendEvent(enum obs_frontend_event event, void *private_
|
||||
// Outputs
|
||||
case OBS_FRONTEND_EVENT_STREAMING_STARTING:
|
||||
eventHandler->HandleStreamStateChanged(OBS_WEBSOCKET_OUTPUT_STARTING);
|
||||
{
|
||||
// Connect signals for stream output reconnects (hacky)
|
||||
OBSOutputAutoRelease streamOutput = obs_frontend_get_streaming_output();
|
||||
if (streamOutput) {
|
||||
signal_handler_t *sh = obs_output_get_signal_handler(streamOutput);
|
||||
signal_handler_connect(sh, "reconnect", StreamOutputReconnectHandler, private_data);
|
||||
signal_handler_connect(sh, "reconnect_success", StreamOutputReconnectSuccessHandler, private_data);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case OBS_FRONTEND_EVENT_STREAMING_STARTED:
|
||||
eventHandler->HandleStreamStateChanged(OBS_WEBSOCKET_OUTPUT_STARTED);
|
||||
break;
|
||||
case OBS_FRONTEND_EVENT_STREAMING_STOPPING:
|
||||
eventHandler->HandleStreamStateChanged(OBS_WEBSOCKET_OUTPUT_STOPPING);
|
||||
{
|
||||
// Disconnect signals for stream output reconnects
|
||||
OBSOutputAutoRelease streamOutput = obs_frontend_get_streaming_output();
|
||||
if (streamOutput) {
|
||||
signal_handler_t *sh = obs_output_get_signal_handler(streamOutput);
|
||||
signal_handler_disconnect(sh, "reconnect", StreamOutputReconnectHandler, private_data);
|
||||
signal_handler_disconnect(sh, "reconnect_success", StreamOutputReconnectSuccessHandler,
|
||||
private_data);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case OBS_FRONTEND_EVENT_STREAMING_STOPPED:
|
||||
eventHandler->HandleStreamStateChanged(OBS_WEBSOCKET_OUTPUT_STOPPED);
|
||||
@ -477,20 +424,75 @@ void EventHandler::OnFrontendEvent(enum obs_frontend_event event, void *private_
|
||||
eventHandler->HandleReplayBufferSaved();
|
||||
break;
|
||||
|
||||
// Ui
|
||||
case OBS_FRONTEND_EVENT_STUDIO_MODE_ENABLED:
|
||||
eventHandler->HandleStudioModeStateChanged(true);
|
||||
break;
|
||||
case OBS_FRONTEND_EVENT_STUDIO_MODE_DISABLED:
|
||||
eventHandler->HandleStudioModeStateChanged(false);
|
||||
break;
|
||||
case OBS_FRONTEND_EVENT_SCREENSHOT_TAKEN:
|
||||
eventHandler->HandleScreenshotSaved();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void EventHandler::FrontendFinishedLoadingMultiHandler()
|
||||
{
|
||||
blog_debug(
|
||||
"[EventHandler::FrontendFinishedLoadingMultiHandler] OBS has finished loading. Connecting final handlers and enabling events...");
|
||||
|
||||
// Enumerate all scene transitions and connect each one
|
||||
{
|
||||
obs_frontend_source_list transitions = {};
|
||||
obs_frontend_get_transitions(&transitions);
|
||||
for (size_t i = 0; i < transitions.sources.num; i++) {
|
||||
obs_source_t *transition = transitions.sources.array[i];
|
||||
ConnectSourceSignals(transition);
|
||||
}
|
||||
obs_frontend_source_list_free(&transitions);
|
||||
}
|
||||
|
||||
_obsReady = true;
|
||||
if (_obsReadyCallback)
|
||||
_obsReadyCallback(true);
|
||||
|
||||
blog_debug("[EventHandler::FrontendFinishedLoadingMultiHandler] Finished.");
|
||||
}
|
||||
|
||||
void EventHandler::FrontendExitMultiHandler()
|
||||
{
|
||||
blog_debug("[EventHandler::FrontendExitMultiHandler] OBS is unloading. Disabling events...");
|
||||
|
||||
HandleExitStarted();
|
||||
|
||||
// Disconnect source signals and disable events when OBS starts unloading (to reduce extra logging).
|
||||
_obsReady = false;
|
||||
if (_obsReadyCallback)
|
||||
_obsReadyCallback(false);
|
||||
|
||||
// Enumerate all scene transitions and disconnect each one
|
||||
{
|
||||
obs_frontend_source_list transitions = {};
|
||||
obs_frontend_get_transitions(&transitions);
|
||||
for (size_t i = 0; i < transitions.sources.num; i++) {
|
||||
obs_source_t *transition = transitions.sources.array[i];
|
||||
DisconnectSourceSignals(transition);
|
||||
}
|
||||
obs_frontend_source_list_free(&transitions);
|
||||
}
|
||||
|
||||
blog_debug("[EventHandler::FrontendExitMultiHandler] Finished.");
|
||||
}
|
||||
|
||||
// Only called for creation of a public source
|
||||
void EventHandler::SourceCreatedMultiHandler(void *param, calldata_t *data)
|
||||
{
|
||||
auto eventHandler = static_cast<EventHandler *>(param);
|
||||
|
||||
// Don't react to signals until OBS has finished loading
|
||||
if (!eventHandler->_obsLoaded.load())
|
||||
return;
|
||||
|
||||
obs_source_t *source = GetCalldataPointer<obs_source_t>(data, "source");
|
||||
if (!source)
|
||||
return;
|
||||
@ -523,10 +525,6 @@ void EventHandler::SourceDestroyedMultiHandler(void *param, calldata_t *data)
|
||||
// Disconnect all signals from the source
|
||||
eventHandler->DisconnectSourceSignals(source);
|
||||
|
||||
// Don't react to signals if OBS is unloading
|
||||
if (!eventHandler->_obsLoaded.load())
|
||||
return;
|
||||
|
||||
switch (obs_source_get_type(source)) {
|
||||
case OBS_SOURCE_TYPE_INPUT:
|
||||
// Only emit removed if the input has not already been removed. This is the case when removing the last scene item of an input.
|
||||
@ -549,9 +547,6 @@ void EventHandler::SourceRemovedMultiHandler(void *param, calldata_t *data)
|
||||
{
|
||||
auto eventHandler = static_cast<EventHandler *>(param);
|
||||
|
||||
if (!eventHandler->_obsLoaded.load())
|
||||
return;
|
||||
|
||||
obs_source_t *source = GetCalldataPointer<obs_source_t>(data, "source");
|
||||
if (!source)
|
||||
return;
|
||||
@ -572,9 +567,6 @@ void EventHandler::SourceRenamedMultiHandler(void *param, calldata_t *data)
|
||||
{
|
||||
auto eventHandler = static_cast<EventHandler *>(param);
|
||||
|
||||
if (!eventHandler->_obsLoaded.load())
|
||||
return;
|
||||
|
||||
obs_source_t *source = GetCalldataPointer<obs_source_t>(data, "source");
|
||||
if (!source)
|
||||
return;
|
||||
@ -597,3 +589,34 @@ void EventHandler::SourceRenamedMultiHandler(void *param, calldata_t *data)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void EventHandler::SourceUpdatedMultiHandler(void *param, calldata_t *data)
|
||||
{
|
||||
auto eventHandler = static_cast<EventHandler *>(param);
|
||||
|
||||
obs_source_t *source = GetCalldataPointer<obs_source_t>(data, "source");
|
||||
if (!source)
|
||||
return;
|
||||
|
||||
switch (obs_source_get_type(source)) {
|
||||
case OBS_SOURCE_TYPE_INPUT:
|
||||
eventHandler->HandleInputSettingsChanged(source);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void EventHandler::StreamOutputReconnectHandler(void *param, calldata_t *)
|
||||
{
|
||||
auto eventHandler = static_cast<EventHandler *>(param);
|
||||
|
||||
eventHandler->HandleStreamStateChanged(OBS_WEBSOCKET_OUTPUT_RECONNECTING);
|
||||
}
|
||||
|
||||
void EventHandler::StreamOutputReconnectSuccessHandler(void *param, calldata_t *)
|
||||
{
|
||||
auto eventHandler = static_cast<EventHandler *>(param);
|
||||
|
||||
eventHandler->HandleStreamStateChanged(OBS_WEBSOCKET_OUTPUT_RECONNECTED);
|
||||
}
|
||||
|
@ -27,32 +27,33 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
#include "../obs-websocket.h"
|
||||
#include "../utils/Obs.h"
|
||||
#include "../utils/Obs_VolumeMeter.h"
|
||||
#include "../plugin-macros.generated.h"
|
||||
#include "plugin-macros.generated.h"
|
||||
|
||||
class EventHandler {
|
||||
public:
|
||||
EventHandler();
|
||||
~EventHandler();
|
||||
|
||||
typedef std::function<void(uint64_t, std::string, json, uint8_t)> BroadcastCallback;
|
||||
typedef std::function<void(uint64_t, std::string, json, uint8_t)>
|
||||
BroadcastCallback; // uint64_t requiredIntent, std::string eventType, json eventData, uint8_t rpcVersion
|
||||
void SetBroadcastCallback(BroadcastCallback cb);
|
||||
typedef std::function<void()> ObsLoadedCallback;
|
||||
void SetObsLoadedCallback(ObsLoadedCallback cb);
|
||||
typedef std::function<void(bool)> ObsReadyCallback; // bool ready
|
||||
void SetObsReadyCallback(ObsReadyCallback cb);
|
||||
|
||||
void ProcessSubscription(uint64_t eventSubscriptions);
|
||||
void ProcessUnsubscription(uint64_t eventSubscriptions);
|
||||
|
||||
private:
|
||||
BroadcastCallback _broadcastCallback;
|
||||
ObsLoadedCallback _obsLoadedCallback;
|
||||
ObsReadyCallback _obsReadyCallback;
|
||||
|
||||
std::atomic<bool> _obsLoaded;
|
||||
std::atomic<bool> _obsReady = false;
|
||||
|
||||
std::unique_ptr<Utils::Obs::VolumeMeter::Handler> _inputVolumeMetersHandler;
|
||||
std::atomic<uint64_t> _inputVolumeMetersRef;
|
||||
std::atomic<uint64_t> _inputActiveStateChangedRef;
|
||||
std::atomic<uint64_t> _inputShowStateChangedRef;
|
||||
std::atomic<uint64_t> _sceneItemTransformChangedRef;
|
||||
std::atomic<uint64_t> _inputVolumeMetersRef = 0;
|
||||
std::atomic<uint64_t> _inputActiveStateChangedRef = 0;
|
||||
std::atomic<uint64_t> _inputShowStateChangedRef = 0;
|
||||
std::atomic<uint64_t> _sceneItemTransformChangedRef = 0;
|
||||
|
||||
void ConnectSourceSignals(obs_source_t *source);
|
||||
void DisconnectSourceSignals(obs_source_t *source);
|
||||
@ -61,14 +62,17 @@ private:
|
||||
|
||||
// Signal handler: frontend
|
||||
static void OnFrontendEvent(enum obs_frontend_event event, void *private_data);
|
||||
void FrontendFinishedLoadingMultiHandler();
|
||||
void FrontendExitMultiHandler();
|
||||
|
||||
// Signal handler: libobs
|
||||
static void SourceCreatedMultiHandler(void *param, calldata_t *data);
|
||||
static void SourceDestroyedMultiHandler(void *param, calldata_t *data);
|
||||
static void SourceRemovedMultiHandler(void *param, calldata_t *data);
|
||||
|
||||
// Signal handler: source
|
||||
static void SourceRenamedMultiHandler(void *param, calldata_t *data);
|
||||
static void SourceUpdatedMultiHandler(void *param, calldata_t *data);
|
||||
|
||||
// Signal handler: media sources
|
||||
static void SourceMediaPauseMultiHandler(void *param, calldata_t *data);
|
||||
static void SourceMediaPlayMultiHandler(void *param, calldata_t *data);
|
||||
static void SourceMediaRestartMultiHandler(void *param, calldata_t *data);
|
||||
@ -76,9 +80,12 @@ private:
|
||||
static void SourceMediaNextMultiHandler(void *param, calldata_t *data);
|
||||
static void SourceMediaPreviousMultiHandler(void *param, calldata_t *data);
|
||||
|
||||
// Signal handler: output
|
||||
static void StreamOutputReconnectHandler(void *param, calldata_t *data);
|
||||
static void StreamOutputReconnectSuccessHandler(void *param, calldata_t *data);
|
||||
|
||||
// General
|
||||
void HandleExitStarted();
|
||||
void HandleStudioModeStateChanged(bool enabled);
|
||||
|
||||
// Config
|
||||
void HandleCurrentSceneCollectionChanging();
|
||||
@ -100,7 +107,7 @@ private:
|
||||
void HandleInputCreated(obs_source_t *source);
|
||||
void HandleInputRemoved(obs_source_t *source);
|
||||
void HandleInputNameChanged(obs_source_t *source, std::string oldInputName, std::string inputName);
|
||||
void HandleInputVolumeMeters(std::vector<json> inputs); // AudioMeter::Handler callback
|
||||
void HandleInputSettingsChanged(obs_source_t *source);
|
||||
static void HandleInputActiveStateChanged(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleInputShowStateChanged(void *param,
|
||||
@ -117,6 +124,7 @@ private:
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleInputAudioMonitorTypeChanged(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
void HandleInputVolumeMeters(std::vector<json> inputs); // AudioMeter::Handler callback
|
||||
|
||||
// Transitions
|
||||
void HandleCurrentSceneTransitionChanged();
|
||||
@ -170,4 +178,8 @@ private:
|
||||
static void HandleMediaInputPlaybackEnded(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
void HandleMediaInputActionTriggered(obs_source_t *source, ObsMediaInputAction action);
|
||||
|
||||
// Ui
|
||||
void HandleStudioModeStateChanged(bool enabled);
|
||||
void HandleScreenshotSaved();
|
||||
};
|
||||
|
@ -93,6 +93,32 @@ void EventHandler::HandleInputNameChanged(obs_source_t *, std::string oldInputNa
|
||||
BroadcastEvent(EventSubscription::Inputs, "InputNameChanged", eventData);
|
||||
}
|
||||
|
||||
/**
|
||||
* An input's settings have changed (been updated).
|
||||
*
|
||||
* Note: On some inputs, changing values in the properties dialog will cause an immediate update. Pressing the "Cancel" button will revert the settings, resulting in another event being fired.
|
||||
*
|
||||
* @dataField inputName | String | Name of the input
|
||||
* @dataField inputSettings | Object | New settings object of the input
|
||||
*
|
||||
* @eventType InputSettingsChanged
|
||||
* @eventSubscription Inputs
|
||||
* @complexity 3
|
||||
* @rpcVersion -1
|
||||
* @initialVersion 5.4.0
|
||||
* @api events
|
||||
* @category inputs
|
||||
*/
|
||||
void EventHandler::HandleInputSettingsChanged(obs_source_t *source)
|
||||
{
|
||||
OBSDataAutoRelease inputSettings = obs_source_get_settings(source);
|
||||
|
||||
json eventData;
|
||||
eventData["inputName"] = obs_source_get_name(source);
|
||||
eventData["inputSettings"] = Utils::Json::ObsDataToJson(inputSettings);
|
||||
BroadcastEvent(EventSubscription::Inputs, "InputSettingsChanged", eventData);
|
||||
}
|
||||
|
||||
/**
|
||||
* An input's active state has changed.
|
||||
*
|
||||
@ -200,7 +226,7 @@ void EventHandler::HandleInputMuteStateChanged(void *param, calldata_t *data)
|
||||
* An input's volume level has changed.
|
||||
*
|
||||
* @dataField inputName | String | Name of the input
|
||||
* @dataField inputVolumeMul | Number | New volume level in multimap
|
||||
* @dataField inputVolumeMul | Number | New volume level multiplier
|
||||
* @dataField inputVolumeDb | Number | New volume level in dB
|
||||
*
|
||||
* @eventType InputVolumeChanged
|
||||
|
@ -24,10 +24,12 @@ static bool GetOutputStateActive(ObsOutputState state)
|
||||
switch (state) {
|
||||
case OBS_WEBSOCKET_OUTPUT_STARTED:
|
||||
case OBS_WEBSOCKET_OUTPUT_RESUMED:
|
||||
case OBS_WEBSOCKET_OUTPUT_RECONNECTED:
|
||||
return true;
|
||||
case OBS_WEBSOCKET_OUTPUT_STARTING:
|
||||
case OBS_WEBSOCKET_OUTPUT_STOPPING:
|
||||
case OBS_WEBSOCKET_OUTPUT_STOPPED:
|
||||
case OBS_WEBSOCKET_OUTPUT_RECONNECTING:
|
||||
case OBS_WEBSOCKET_OUTPUT_PAUSED:
|
||||
return false;
|
||||
default:
|
||||
|
@ -38,3 +38,27 @@ void EventHandler::HandleStudioModeStateChanged(bool enabled)
|
||||
eventData["studioModeEnabled"] = enabled;
|
||||
BroadcastEvent(EventSubscription::Ui, "StudioModeStateChanged", eventData);
|
||||
}
|
||||
|
||||
/**
|
||||
* A screenshot has been saved.
|
||||
*
|
||||
* Note: Triggered for the screenshot feature available in `Settings -> Hotkeys -> Screenshot Output` ONLY.
|
||||
* Applications using `Get/SaveSourceScreenshot` should implement a `CustomEvent` if this kind of inter-client
|
||||
* communication is desired.
|
||||
*
|
||||
* @dataField savedScreenshotPath | String | Path of the saved image file
|
||||
*
|
||||
* @eventType ScreenshotSaved
|
||||
* @eventSubscription Ui
|
||||
* @complexity 2
|
||||
* @rpcVersion -1
|
||||
* @initialVersion 5.1.0
|
||||
* @api events
|
||||
* @category ui
|
||||
*/
|
||||
void EventHandler::HandleScreenshotSaved()
|
||||
{
|
||||
json eventData;
|
||||
eventData["savedScreenshotPath"] = Utils::Obs::StringHelper::GetLastScreenshotFileName();
|
||||
BroadcastEvent(EventSubscription::Ui, "ScreenshotSaved", eventData);
|
||||
}
|
||||
|
@ -21,9 +21,9 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
#include <QPainter>
|
||||
#include <QUrl>
|
||||
#include <obs-module.h>
|
||||
#include <qrcodegen.hpp>
|
||||
|
||||
#include "ConnectInfo.h"
|
||||
#include "../../deps/qr/cpp/QrCode.hpp"
|
||||
#include "../obs-websocket.h"
|
||||
#include "../Config.h"
|
||||
#include "../utils/Platform.h"
|
||||
@ -105,7 +105,7 @@ void ConnectInfo::SetClipboardText(QString text)
|
||||
|
||||
void ConnectInfo::DrawQr(QString qrText)
|
||||
{
|
||||
QPixmap map(230, 230);
|
||||
QPixmap map(236, 236);
|
||||
map.fill(Qt::white);
|
||||
QPainter painter(&map);
|
||||
|
||||
|
@ -21,7 +21,7 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
|
||||
#include <QtWidgets/QDialog>
|
||||
|
||||
#include "../plugin-macros.generated.h"
|
||||
#include "plugin-macros.generated.h"
|
||||
|
||||
#include "ui_ConnectInfo.h"
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>451</width>
|
||||
<height>412</height>
|
||||
<height>432</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
@ -19,7 +19,7 @@
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>451</width>
|
||||
<height>412</height>
|
||||
<height>432</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@ -31,12 +31,21 @@
|
||||
<x>10</x>
|
||||
<y>10</y>
|
||||
<width>431</width>
|
||||
<height>101</height>
|
||||
<height>121</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<property name="formAlignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="serverIpLabel">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>200</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>OBSWebSocket.ConnectInfo.ServerIp</string>
|
||||
</property>
|
||||
@ -46,6 +55,12 @@
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLineEdit" name="serverIpLineEdit">
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::NoFocus</enum>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
@ -53,6 +68,12 @@
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="copyServerIpButton">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>75</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>OBSWebSocket.ConnectInfo.CopyText</string>
|
||||
</property>
|
||||
@ -62,6 +83,12 @@
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="serverPortLabel">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>200</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>OBSWebSocket.ConnectInfo.ServerPort</string>
|
||||
</property>
|
||||
@ -71,6 +98,12 @@
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QLineEdit" name="serverPortLineEdit">
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::NoFocus</enum>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
@ -78,6 +111,12 @@
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="copyServerPortButton">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>75</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>OBSWebSocket.ConnectInfo.CopyText</string>
|
||||
</property>
|
||||
@ -87,6 +126,12 @@
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="serverPasswordLabel">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>200</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>OBSWebSocket.ConnectInfo.ServerPassword</string>
|
||||
</property>
|
||||
@ -96,9 +141,15 @@
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<widget class="QLineEdit" name="serverPasswordLineEdit">
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::NoFocus</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
@ -106,6 +157,12 @@
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="copyServerPasswordButton">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>75</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>OBSWebSocket.ConnectInfo.CopyText</string>
|
||||
</property>
|
||||
@ -119,7 +176,7 @@
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>10</x>
|
||||
<y>120</y>
|
||||
<y>140</y>
|
||||
<width>431</width>
|
||||
<height>281</height>
|
||||
</rect>
|
||||
@ -131,9 +188,9 @@
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>100</x>
|
||||
<y>40</y>
|
||||
<width>230</width>
|
||||
<height>230</height>
|
||||
<y>30</y>
|
||||
<width>236</width>
|
||||
<height>236</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
|
@ -23,7 +23,7 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
#include <QTimer>
|
||||
|
||||
#include "ConnectInfo.h"
|
||||
#include "../plugin-macros.generated.h"
|
||||
#include "plugin-macros.generated.h"
|
||||
|
||||
#include "ui_SettingsDialog.h"
|
||||
|
||||
|
@ -80,7 +80,7 @@
|
||||
<item row="3" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="enableDebugLoggingCheckBox">
|
||||
@ -97,6 +97,12 @@
|
||||
<property name="toolTip">
|
||||
<string>OBSWebSocket.Settings.DebugEnableHoverText</string>
|
||||
</property>
|
||||
<property name="scaledContents">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
|
@ -89,7 +89,24 @@ bool obs_module_load(void)
|
||||
return true;
|
||||
}
|
||||
|
||||
void obs_module_unload()
|
||||
#ifdef PLUGIN_TESTS
|
||||
void test_register_vendor();
|
||||
#endif
|
||||
|
||||
void obs_module_post_load(void)
|
||||
{
|
||||
#ifdef PLUGIN_TESTS
|
||||
test_register_vendor();
|
||||
#endif
|
||||
|
||||
// Server will accept clients, but requests and events will not be served until FINISHED_LOADING occurs
|
||||
if (_config->ServerEnabled) {
|
||||
blog(LOG_INFO, "[obs_module_post_load] WebSocket server is enabled, starting...");
|
||||
_webSocketServer->Start();
|
||||
}
|
||||
}
|
||||
|
||||
void obs_module_unload(void)
|
||||
{
|
||||
blog(LOG_INFO, "[obs_module_unload] Shutting down...");
|
||||
|
||||
@ -108,8 +125,7 @@ void obs_module_unload()
|
||||
// Destroy the event handler
|
||||
_eventHandler.reset();
|
||||
|
||||
// Save and destroy the config manager
|
||||
_config->Save();
|
||||
// Destroy the config manager
|
||||
_config.reset();
|
||||
|
||||
// Destroy the cpu stats
|
||||
@ -193,18 +209,18 @@ static void test_vendor_request_cb(obs_data_t *requestData, obs_data_t *response
|
||||
obs_websocket_vendor_emit_event(priv_data, "TestEvent", requestData);
|
||||
}
|
||||
|
||||
void obs_module_post_load()
|
||||
void test_register_vendor()
|
||||
{
|
||||
blog(LOG_INFO, "[obs_module_post_load] Post load started.");
|
||||
blog(LOG_INFO, "[test_register_vendor] Registering test vendor...");
|
||||
|
||||
// Test plugin API version fetch
|
||||
uint apiVersion = obs_websocket_get_api_version();
|
||||
blog(LOG_INFO, "[obs_module_post_load] obs-websocket plugin API version: %u", apiVersion);
|
||||
blog(LOG_INFO, "[test_register_vendor] obs-websocket plugin API version: %u", apiVersion);
|
||||
|
||||
// Test calling obs-websocket requests
|
||||
struct obs_websocket_request_response *response = obs_websocket_call_request("GetVersion");
|
||||
if (response) {
|
||||
blog(LOG_INFO, "[obs_module_post_load] Called GetVersion. Status Code: %u | Comment: %s | Response Data: %s",
|
||||
blog(LOG_INFO, "[test_register_vendor] Called GetVersion. Status Code: %u | Comment: %s | Response Data: %s",
|
||||
response->status_code, response->comment, response->response_data);
|
||||
obs_websocket_request_response_free(response);
|
||||
}
|
||||
@ -212,17 +228,17 @@ void obs_module_post_load()
|
||||
// Test vendor creation
|
||||
auto vendor = obs_websocket_register_vendor("obs-websocket-test");
|
||||
if (!vendor) {
|
||||
blog(LOG_WARNING, "[obs_module_post_load] Failed to create vendor!");
|
||||
blog(LOG_WARNING, "[test_register_vendor] Failed to create vendor!");
|
||||
return;
|
||||
}
|
||||
|
||||
// Test vendor request registration
|
||||
if (!obs_websocket_vendor_register_request(vendor, "TestRequest", test_vendor_request_cb, vendor)) {
|
||||
blog(LOG_WARNING, "[obs_module_post_load] Failed to register vendor request!");
|
||||
blog(LOG_WARNING, "[test_register_vendor] Failed to register vendor request!");
|
||||
return;
|
||||
}
|
||||
|
||||
blog(LOG_INFO, "[obs_module_post_load] Post load completed.");
|
||||
blog(LOG_INFO, "[test_register_vendor] Post load completed.");
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -31,17 +31,13 @@ struct SerialFrameBatch {
|
||||
json &variables;
|
||||
bool haltOnFailure;
|
||||
|
||||
size_t frameCount;
|
||||
size_t sleepUntilFrame;
|
||||
size_t frameCount = 0;
|
||||
size_t sleepUntilFrame = 0;
|
||||
std::mutex conditionMutex;
|
||||
std::condition_variable condition;
|
||||
|
||||
SerialFrameBatch(RequestHandler &requestHandler, json &variables, bool haltOnFailure)
|
||||
: requestHandler(requestHandler),
|
||||
variables(variables),
|
||||
haltOnFailure(haltOnFailure),
|
||||
frameCount(0),
|
||||
sleepUntilFrame(0)
|
||||
: requestHandler(requestHandler), variables(variables), haltOnFailure(haltOnFailure)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
@ -33,6 +33,8 @@ const std::unordered_map<std::string, RequestMethodHandler> RequestHandler::_han
|
||||
{"TriggerHotkeyByName", &RequestHandler::TriggerHotkeyByName},
|
||||
{"TriggerHotkeyByKeySequence", &RequestHandler::TriggerHotkeyByKeySequence},
|
||||
{"Sleep", &RequestHandler::Sleep},
|
||||
{"Compare", &RequestHandler::Compare},
|
||||
{"Assert", &RequestHandler::Assert},
|
||||
|
||||
// Config
|
||||
{"GetPersistentData", &RequestHandler::GetPersistentData},
|
||||
@ -51,6 +53,7 @@ const std::unordered_map<std::string, RequestMethodHandler> RequestHandler::_han
|
||||
{"GetStreamServiceSettings", &RequestHandler::GetStreamServiceSettings},
|
||||
{"SetStreamServiceSettings", &RequestHandler::SetStreamServiceSettings},
|
||||
{"GetRecordDirectory", &RequestHandler::GetRecordDirectory},
|
||||
{"SetRecordDirectory", &RequestHandler::SetRecordDirectory},
|
||||
|
||||
// Sources
|
||||
{"GetSourceActive", &RequestHandler::GetSourceActive},
|
||||
@ -110,6 +113,7 @@ const std::unordered_map<std::string, RequestMethodHandler> RequestHandler::_han
|
||||
{"SetTBarPosition", &RequestHandler::SetTBarPosition},
|
||||
|
||||
// Filters
|
||||
{"GetSourceFilterKindList", &RequestHandler::GetSourceFilterKindList},
|
||||
{"GetSourceFilterList", &RequestHandler::GetSourceFilterList},
|
||||
{"GetSourceFilterDefaultSettings", &RequestHandler::GetSourceFilterDefaultSettings},
|
||||
{"CreateSourceFilter", &RequestHandler::CreateSourceFilter},
|
||||
@ -220,9 +224,8 @@ RequestResult RequestHandler::ProcessRequest(const Request &request)
|
||||
std::vector<std::string> RequestHandler::GetRequestList()
|
||||
{
|
||||
std::vector<std::string> ret;
|
||||
for (auto const &[key, val] : _handlerMap) {
|
||||
for (auto const &[key, val] : _handlerMap)
|
||||
ret.push_back(key);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
#include "../websocketserver/rpc/WebSocketSession.h"
|
||||
#include "../obs-websocket.h"
|
||||
#include "../utils/Obs.h"
|
||||
#include "../plugin-macros.generated.h"
|
||||
#include "plugin-macros.generated.h"
|
||||
|
||||
class RequestHandler;
|
||||
typedef RequestResult (RequestHandler::*RequestMethodHandler)(const Request &);
|
||||
@ -52,6 +52,8 @@ private:
|
||||
RequestResult TriggerHotkeyByName(const Request &);
|
||||
RequestResult TriggerHotkeyByKeySequence(const Request &);
|
||||
RequestResult Sleep(const Request &);
|
||||
RequestResult Compare(const Request &);
|
||||
RequestResult Assert(const Request &);
|
||||
|
||||
// Config
|
||||
RequestResult GetPersistentData(const Request &);
|
||||
@ -70,6 +72,7 @@ private:
|
||||
RequestResult GetStreamServiceSettings(const Request &);
|
||||
RequestResult SetStreamServiceSettings(const Request &);
|
||||
RequestResult GetRecordDirectory(const Request &);
|
||||
RequestResult SetRecordDirectory(const Request &);
|
||||
|
||||
// Sources
|
||||
RequestResult GetSourceActive(const Request &);
|
||||
@ -129,6 +132,7 @@ private:
|
||||
RequestResult SetTBarPosition(const Request &);
|
||||
|
||||
// Filters
|
||||
RequestResult GetSourceFilterKindList(const Request &);
|
||||
RequestResult GetSourceFilterList(const Request &);
|
||||
RequestResult GetSourceFilterDefaultSettings(const Request &);
|
||||
RequestResult CreateSourceFilter(const Request &);
|
||||
|
@ -622,7 +622,7 @@ RequestResult RequestHandler::SetStreamServiceSettings(const Request &request)
|
||||
* @responseField recordDirectory | String | Output directory
|
||||
*
|
||||
* @requestType GetRecordDirectory
|
||||
* @complexity 1
|
||||
* @complexity 2
|
||||
* @rpcVersion -1
|
||||
* @initialVersion 5.0.0
|
||||
* @api requests
|
||||
@ -635,3 +635,35 @@ RequestResult RequestHandler::GetRecordDirectory(const Request &)
|
||||
|
||||
return RequestResult::Success(responseData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the current directory that the record output writes files to.
|
||||
*
|
||||
* @requestField recordDirectory | String | Output directory
|
||||
*
|
||||
* @requestType SetRecordDirectory
|
||||
* @complexity 2
|
||||
* @rpcVersion -1
|
||||
* @initialVersion 5.3.0
|
||||
* @api requests
|
||||
* @category config
|
||||
*/
|
||||
RequestResult RequestHandler::SetRecordDirectory(const Request &request)
|
||||
{
|
||||
if (obs_frontend_recording_active())
|
||||
return RequestResult::Error(RequestStatus::OutputRunning);
|
||||
|
||||
RequestStatus::RequestStatus statusCode;
|
||||
std::string comment;
|
||||
if (!request.ValidateString("recordDirectory", statusCode, comment))
|
||||
return RequestResult::Error(statusCode, comment);
|
||||
|
||||
std::string recordDirectory = request.RequestData["recordDirectory"];
|
||||
|
||||
config_t *config = obs_frontend_get_profile_config();
|
||||
config_set_string(config, "AdvOut", "RecFilePath", recordDirectory.c_str());
|
||||
config_set_string(config, "SimpleOutput", "FilePath", recordDirectory.c_str());
|
||||
config_save(config);
|
||||
|
||||
return RequestResult::Success();
|
||||
}
|
||||
|
@ -19,6 +19,27 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
|
||||
#include "RequestHandler.h"
|
||||
|
||||
/**
|
||||
* Gets an array of all available source filter kinds.
|
||||
*
|
||||
* Similar to `GetInputKindList`
|
||||
*
|
||||
* @responseField sourceFilterKinds | Array<String> | Array of source filter kinds
|
||||
*
|
||||
* @requestType GetSourceFilterKindList
|
||||
* @complexity 2
|
||||
* @rpcVersion -1
|
||||
* @initialVersion 5.4.0
|
||||
* @api requests
|
||||
* @category filters
|
||||
*/
|
||||
RequestResult RequestHandler::GetSourceFilterKindList(const Request &)
|
||||
{
|
||||
json responseData;
|
||||
responseData["sourceFilterKinds"] = Utils::Obs::ArrayHelper::GetFilterKindList();
|
||||
return RequestResult::Success(responseData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an array of all of a source's filters.
|
||||
*
|
||||
|
@ -102,6 +102,20 @@ RequestResult RequestHandler::GetStats(const Request &)
|
||||
return RequestResult::Success(responseData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom event emitted by `BroadcastCustomEvent`.
|
||||
*
|
||||
* @dataField eventData | Object | Custom event data
|
||||
*
|
||||
* @eventType CustomEvent
|
||||
* @eventSubscription General
|
||||
* @complexity 1
|
||||
* @rpcVersion -1
|
||||
* @initialVersion 5.0.0
|
||||
* @category general
|
||||
* @api events
|
||||
*/
|
||||
|
||||
/**
|
||||
* Broadcasts a `CustomEvent` to all WebSocket clients. Receivers are clients which are identified and subscribed.
|
||||
*
|
||||
@ -164,7 +178,7 @@ RequestResult RequestHandler::CallVendorRequest(const Request &request)
|
||||
|
||||
OBSDataAutoRelease requestData = obs_data_create();
|
||||
if (request.Contains("requestData")) {
|
||||
if (!request.ValidateOptionalObject("requestData", statusCode, comment))
|
||||
if (!request.ValidateOptionalObject("requestData", statusCode, comment, true))
|
||||
return RequestResult::Error(statusCode, comment);
|
||||
|
||||
requestData = Utils::Json::JsonToObsData(request.RequestData["requestData"]);
|
||||
@ -219,6 +233,7 @@ RequestResult RequestHandler::GetHotkeyList(const Request &)
|
||||
* Triggers a hotkey using its name. See `GetHotkeyList`
|
||||
*
|
||||
* @requestField hotkeyName | String | Name of the hotkey to trigger
|
||||
* @requestField ?contextName | String | Name of context of the hotkey to trigger
|
||||
*
|
||||
* @requestType TriggerHotkeyByName
|
||||
* @complexity 3
|
||||
@ -234,7 +249,15 @@ RequestResult RequestHandler::TriggerHotkeyByName(const Request &request)
|
||||
if (!request.ValidateString("hotkeyName", statusCode, comment))
|
||||
return RequestResult::Error(statusCode, comment);
|
||||
|
||||
obs_hotkey_t *hotkey = Utils::Obs::SearchHelper::GetHotkeyByName(request.RequestData["hotkeyName"]);
|
||||
std::string contextName;
|
||||
if (request.Contains("contextName")) {
|
||||
if (!request.ValidateOptionalString("contextName", statusCode, comment))
|
||||
return RequestResult::Error(statusCode, comment);
|
||||
|
||||
contextName = request.RequestData["contextName"];
|
||||
}
|
||||
|
||||
obs_hotkey_t *hotkey = Utils::Obs::SearchHelper::GetHotkeyByName(request.RequestData["hotkeyName"], contextName);
|
||||
if (!hotkey)
|
||||
return RequestResult::Error(RequestStatus::ResourceNotFound, "No hotkeys were found by that name.");
|
||||
|
||||
@ -309,10 +332,12 @@ RequestResult RequestHandler::TriggerHotkeyByKeySequence(const Request &request)
|
||||
}
|
||||
|
||||
/**
|
||||
* Sleeps for a time duration or number of frames. Only available in request batches with types `SERIAL_REALTIME` or `SERIAL_FRAME`.
|
||||
* Sleeps for a time duration or number of frames.
|
||||
*
|
||||
* @requestField sleepMillis | Number | Number of milliseconds to sleep for (if `SERIAL_REALTIME` mode) | >= 0, <= 50000
|
||||
* @requestField sleepFrames | Number | Number of frames to sleep for (if `SERIAL_FRAME` mode) | >= 0, <= 10000
|
||||
* Note: Only available in request batches with types `SERIAL_REALTIME` or `SERIAL_FRAME`.
|
||||
*
|
||||
* @requestField ?sleepMillis | Number | Number of milliseconds to sleep for (if `SERIAL_REALTIME` mode) | >= 0, <= 50000
|
||||
* @requestField ?sleepFrames | Number | Number of frames to sleep for (if `SERIAL_FRAME` mode) | >= 0, <= 10000
|
||||
*
|
||||
* @requestType Sleep
|
||||
* @complexity 2
|
||||
@ -342,3 +367,63 @@ RequestResult RequestHandler::Sleep(const Request &request)
|
||||
return RequestResult::Error(RequestStatus::UnsupportedRequestBatchExecutionType);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Compares the values of the two request fields, `left` and `right`.
|
||||
*
|
||||
* Note: Only available in request batches with types `SERIAL_REALTIME` or `SERIAL_FRAME`.
|
||||
*
|
||||
* @requestField left | Any | First request batch variable in comparison
|
||||
* @requestField right | Any | Second request batch variable in comparison
|
||||
*
|
||||
* @responseField result | Boolean | Whether the comparison is equal
|
||||
*
|
||||
* @requestType Compare
|
||||
* @complexity 4
|
||||
* @rpcVersion -1
|
||||
* @initialVersion 5.4.0
|
||||
* @category general
|
||||
* @api requests
|
||||
*/
|
||||
RequestResult RequestHandler::Compare(const Request &request)
|
||||
{
|
||||
if (!request.RequestData.contains("left") || !request.RequestData.contains("right"))
|
||||
return RequestResult::Error(RequestStatus::MissingRequestField, "One or more sides of the comparison are missing.");
|
||||
|
||||
bool result = request.RequestData["left"] == request.RequestData["right"];
|
||||
|
||||
json responseData;
|
||||
responseData["result"] = result;
|
||||
return RequestResult::Success(responseData);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns an error if the value of `check` is not `true`.
|
||||
*
|
||||
* This can be useful to interrupt a request batch from proceeding if an assumed state does not match real-world state.
|
||||
*
|
||||
* Note: Only available in request batches with types `SERIAL_REALTIME` or `SERIAL_FRAME`.
|
||||
*
|
||||
* @requestField check | Boolean | Value to assert to be true
|
||||
*
|
||||
* @requestType Assert
|
||||
* @complexity 4
|
||||
* @rpcVersion -1
|
||||
* @initialVersion 5.4.0
|
||||
* @category general
|
||||
* @api requests
|
||||
*/
|
||||
RequestResult RequestHandler::Assert(const Request &request)
|
||||
{
|
||||
RequestStatus::RequestStatus statusCode;
|
||||
std::string comment;
|
||||
if (!request.ValidateBoolean("check", statusCode, comment))
|
||||
return RequestResult::Error(statusCode, comment);
|
||||
|
||||
bool check = request.RequestData["check"];
|
||||
if (!check)
|
||||
return RequestResult::Error(RequestStatus::AssertFailed, "Assertion failed.");
|
||||
|
||||
return RequestResult::Success();
|
||||
}
|
||||
|
@ -889,6 +889,10 @@ RequestResult RequestHandler::GetInputPropertiesListPropertyItems(const Request
|
||||
/**
|
||||
* Presses a button in the properties of an input.
|
||||
*
|
||||
* Some known `propertyName` values are:
|
||||
*
|
||||
* - `refreshnocache` - Browser source reload button
|
||||
*
|
||||
* Note: Use this in cases where there is a button in the properties of an input that cannot be accessed in any other way. For example, browser sources, where there is a refresh button.
|
||||
*
|
||||
* @requestField inputName | String | Name of the input
|
||||
|
@ -279,6 +279,8 @@ RequestResult RequestHandler::GetLastReplayBufferReplay(const Request &)
|
||||
/**
|
||||
* Gets the list of available outputs.
|
||||
*
|
||||
* @responseField outputs | Array<Object> | Array of outputs
|
||||
*
|
||||
* @requestType GetOutputList
|
||||
* @complexity 4
|
||||
* @rpcVersion -1
|
||||
|
@ -23,7 +23,7 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
* Gets the status of the record output.
|
||||
*
|
||||
* @responseField outputActive | Boolean | Whether the output is active
|
||||
* @responseField ouputPaused | Boolean | Whether the output is paused
|
||||
* @responseField outputPaused | Boolean | Whether the output is paused
|
||||
* @responseField outputTimecode | String | Current formatted timecode string for the output
|
||||
* @responseField outputDuration | Number | Current duration in milliseconds for the output
|
||||
* @responseField outputBytes | Number | Number of bytes sent by the output
|
||||
@ -54,6 +54,8 @@ RequestResult RequestHandler::GetRecordStatus(const Request &)
|
||||
/**
|
||||
* Toggles the status of the record output.
|
||||
*
|
||||
* @responseField outputActive | Boolean | The new active state of the output
|
||||
*
|
||||
* @requestType ToggleRecord
|
||||
* @complexity 1
|
||||
* @rpcVersion -1
|
||||
|
@ -52,7 +52,7 @@ RequestResult RequestHandler::GetSceneItemList(const Request &request)
|
||||
/**
|
||||
* Basically GetSceneItemList, but for groups.
|
||||
*
|
||||
* Using groups at all in OBS is discouraged, as they are very broken under the hood.
|
||||
* Using groups at all in OBS is discouraged, as they are very broken under the hood. Please use nested scenes instead.
|
||||
*
|
||||
* Groups only
|
||||
*
|
||||
|
@ -317,7 +317,7 @@ RequestResult RequestHandler::GetSceneSceneTransitionOverride(const Request &req
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the scene transition overridden for a scene.
|
||||
* Sets the scene transition overridden for a scene.
|
||||
*
|
||||
* @requestField sceneName | String | Name of the scene
|
||||
* @requestField ?transitionName | String | Name of the scene transition to use as override. Specify `null` to remove | Unchanged
|
||||
|
@ -44,12 +44,16 @@ RequestResult RequestHandler::GetStreamStatus(const Request &)
|
||||
|
||||
uint64_t outputDuration = Utils::Obs::NumberHelper::GetOutputDuration(streamOutput);
|
||||
|
||||
float outputCongestion = obs_output_get_congestion(streamOutput);
|
||||
if (std::isnan(outputCongestion)) // libobs does not handle NaN, so we're handling it here
|
||||
outputCongestion = 0.0f;
|
||||
|
||||
json responseData;
|
||||
responseData["outputActive"] = obs_output_active(streamOutput);
|
||||
responseData["outputReconnecting"] = obs_output_reconnecting(streamOutput);
|
||||
responseData["outputTimecode"] = Utils::Obs::StringHelper::DurationToTimecode(outputDuration);
|
||||
responseData["outputDuration"] = outputDuration;
|
||||
responseData["outputCongestion"] = obs_output_get_congestion(streamOutput);
|
||||
responseData["outputCongestion"] = outputCongestion;
|
||||
responseData["outputBytes"] = (uint64_t)obs_output_get_total_bytes(streamOutput);
|
||||
responseData["outputSkippedFrames"] = obs_output_get_frames_dropped(streamOutput);
|
||||
responseData["outputTotalFrames"] = obs_output_get_total_frames(streamOutput);
|
||||
|
@ -103,6 +103,19 @@ namespace RequestStatus {
|
||||
* @api enums
|
||||
*/
|
||||
UnsupportedRequestBatchExecutionType = 206,
|
||||
/**
|
||||
* The server is not ready to handle the request.
|
||||
*
|
||||
* Note: This usually occurs during OBS scene collection change or exit. Requests may be tried again after a delay if this code is given.
|
||||
*
|
||||
* @enumIdentifier NotReady
|
||||
* @enumValue 207
|
||||
* @enumType RequestStatus
|
||||
* @rpcVersion -1
|
||||
* @initialVersion 5.3.0
|
||||
* @api enums
|
||||
*/
|
||||
NotReady = 207,
|
||||
|
||||
/**
|
||||
* A required request field is missing.
|
||||
@ -402,5 +415,16 @@ namespace RequestStatus {
|
||||
* @api enums
|
||||
*/
|
||||
CannotAct = 703,
|
||||
/**
|
||||
* Assertion failed.
|
||||
*
|
||||
* @enumIdentifier AssertFailed
|
||||
* @enumValue 704
|
||||
* @enumType RequestStatus
|
||||
* @rpcVersion -1
|
||||
* @initialVersion 5.4.0
|
||||
* @api enums
|
||||
*/
|
||||
AssertFailed = 704,
|
||||
};
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
#include <QRandomGenerator>
|
||||
|
||||
#include "Crypto.h"
|
||||
#include "../plugin-macros.generated.h"
|
||||
#include "plugin-macros.generated.h"
|
||||
|
||||
static const char allowedChars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
static const int allowedCharsCount = static_cast<int>(sizeof(allowedChars) - 1);
|
||||
|
@ -19,7 +19,7 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
|
||||
#include "Json.h"
|
||||
#include "Platform.h"
|
||||
#include "../plugin-macros.generated.h"
|
||||
#include "plugin-macros.generated.h"
|
||||
|
||||
bool Utils::Json::JsonArrayIsValidObsArray(const json &j)
|
||||
{
|
||||
|
@ -18,4 +18,4 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
#include "Obs.h"
|
||||
#include "../plugin-macros.generated.h"
|
||||
#include "plugin-macros.generated.h"
|
||||
|
@ -67,22 +67,105 @@ template<typename T> T *GetCalldataPointer(const calldata_t *data, const char *n
|
||||
}
|
||||
|
||||
enum ObsOutputState {
|
||||
/**
|
||||
* Unknown state.
|
||||
*
|
||||
* @enumIdentifier OBS_WEBSOCKET_OUTPUT_UNKNOWN
|
||||
* @enumType ObsOutputState
|
||||
* @rpcVersion 1
|
||||
* @initialVersion 5.0.0
|
||||
* @api enums
|
||||
*/
|
||||
OBS_WEBSOCKET_OUTPUT_UNKNOWN,
|
||||
/**
|
||||
* The output is starting.
|
||||
*
|
||||
* @enumIdentifier OBS_WEBSOCKET_OUTPUT_STARTING
|
||||
* @enumType ObsOutputState
|
||||
* @rpcVersion 1
|
||||
* @initialVersion 5.0.0
|
||||
* @api enums
|
||||
*/
|
||||
OBS_WEBSOCKET_OUTPUT_STARTING,
|
||||
/**
|
||||
* The input has started.
|
||||
*
|
||||
* @enumIdentifier OBS_WEBSOCKET_OUTPUT_STARTED
|
||||
* @enumType ObsOutputState
|
||||
* @rpcVersion 1
|
||||
* @initialVersion 5.0.0
|
||||
* @api enums
|
||||
*/
|
||||
OBS_WEBSOCKET_OUTPUT_STARTED,
|
||||
/**
|
||||
* The output is stopping.
|
||||
*
|
||||
* @enumIdentifier OBS_WEBSOCKET_OUTPUT_STOPPING
|
||||
* @enumType ObsOutputState
|
||||
* @rpcVersion 1
|
||||
* @initialVersion 5.0.0
|
||||
* @api enums
|
||||
*/
|
||||
OBS_WEBSOCKET_OUTPUT_STOPPING,
|
||||
/**
|
||||
* The output has stopped.
|
||||
*
|
||||
* @enumIdentifier OBS_WEBSOCKET_OUTPUT_STOPPED
|
||||
* @enumType ObsOutputState
|
||||
* @rpcVersion 1
|
||||
* @initialVersion 5.0.0
|
||||
* @api enums
|
||||
*/
|
||||
OBS_WEBSOCKET_OUTPUT_STOPPED,
|
||||
/**
|
||||
* The output has disconnected and is reconnecting.
|
||||
*
|
||||
* @enumIdentifier OBS_WEBSOCKET_OUTPUT_RECONNECTING
|
||||
* @enumType ObsOutputState
|
||||
* @rpcVersion 1
|
||||
* @initialVersion 5.0.0
|
||||
* @api enums
|
||||
*/
|
||||
OBS_WEBSOCKET_OUTPUT_RECONNECTING,
|
||||
/**
|
||||
* The output has reconnected successfully.
|
||||
*
|
||||
* @enumIdentifier OBS_WEBSOCKET_OUTPUT_RECONNECTED
|
||||
* @enumType ObsOutputState
|
||||
* @rpcVersion 1
|
||||
* @initialVersion 5.1.0
|
||||
* @api enums
|
||||
*/
|
||||
OBS_WEBSOCKET_OUTPUT_RECONNECTED,
|
||||
/**
|
||||
* The output is now paused.
|
||||
*
|
||||
* @enumIdentifier OBS_WEBSOCKET_OUTPUT_PAUSED
|
||||
* @enumType ObsOutputState
|
||||
* @rpcVersion 1
|
||||
* @initialVersion 5.1.0
|
||||
* @api enums
|
||||
*/
|
||||
OBS_WEBSOCKET_OUTPUT_PAUSED,
|
||||
/**
|
||||
* The output has been resumed (unpaused).
|
||||
*
|
||||
* @enumIdentifier OBS_WEBSOCKET_OUTPUT_RESUMED
|
||||
* @enumType ObsOutputState
|
||||
* @rpcVersion 1
|
||||
* @initialVersion 5.0.0
|
||||
* @api enums
|
||||
*/
|
||||
OBS_WEBSOCKET_OUTPUT_RESUMED,
|
||||
};
|
||||
|
||||
NLOHMANN_JSON_SERIALIZE_ENUM(ObsOutputState, {
|
||||
{OBS_WEBSOCKET_OUTPUT_UNKNOWN, "OBS_WEBSOCKET_OUTPUT_UNKNOWN"},
|
||||
{OBS_WEBSOCKET_OUTPUT_STARTING, "OBS_WEBSOCKET_OUTPUT_STARTING"},
|
||||
{OBS_WEBSOCKET_OUTPUT_STARTED, "OBS_WEBSOCKET_OUTPUT_STARTED"},
|
||||
{OBS_WEBSOCKET_OUTPUT_STOPPING, "OBS_WEBSOCKET_OUTPUT_STOPPING"},
|
||||
{OBS_WEBSOCKET_OUTPUT_STOPPED, "OBS_WEBSOCKET_OUTPUT_STOPPED"},
|
||||
{OBS_WEBSOCKET_OUTPUT_RECONNECTING, "OBS_WEBSOCKET_OUTPUT_RECONNECTING"},
|
||||
{OBS_WEBSOCKET_OUTPUT_RECONNECTED, "OBS_WEBSOCKET_OUTPUT_RECONNECTED"},
|
||||
{OBS_WEBSOCKET_OUTPUT_PAUSED, "OBS_WEBSOCKET_OUTPUT_PAUSED"},
|
||||
{OBS_WEBSOCKET_OUTPUT_RESUMED, "OBS_WEBSOCKET_OUTPUT_RESUMED"},
|
||||
})
|
||||
@ -159,7 +242,6 @@ enum ObsMediaInputAction {
|
||||
*/
|
||||
OBS_WEBSOCKET_MEDIA_INPUT_ACTION_PREVIOUS,
|
||||
};
|
||||
|
||||
NLOHMANN_JSON_SERIALIZE_ENUM(ObsMediaInputAction,
|
||||
{
|
||||
{OBS_WEBSOCKET_MEDIA_INPUT_ACTION_NONE, "OBS_WEBSOCKET_MEDIA_INPUT_ACTION_NONE"},
|
||||
@ -181,6 +263,7 @@ namespace Utils {
|
||||
std::string GetCurrentRecordOutputPath();
|
||||
std::string GetLastRecordFileName();
|
||||
std::string GetLastReplayBufferFileName();
|
||||
std::string GetLastScreenshotFileName();
|
||||
std::string DurationToTimecode(uint64_t);
|
||||
}
|
||||
|
||||
@ -214,7 +297,7 @@ namespace Utils {
|
||||
}
|
||||
|
||||
namespace SearchHelper {
|
||||
obs_hotkey_t *GetHotkeyByName(std::string name);
|
||||
obs_hotkey_t *GetHotkeyByName(std::string name, std::string context);
|
||||
obs_source_t *GetSceneTransitionByName(std::string name); // Increments source ref. Use OBSSourceAutoRelease
|
||||
obs_sceneitem_t *GetSceneItemByName(obs_scene_t *scene, std::string name,
|
||||
int offset = 0); // Increments ref. Use OBSSceneItemAutoRelease
|
||||
|
@ -17,7 +17,7 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
#include "Obs.h"
|
||||
#include "../plugin-macros.generated.h"
|
||||
#include "plugin-macros.generated.h"
|
||||
|
||||
struct CreateSceneItemData {
|
||||
obs_source_t *source; // In
|
||||
|
@ -20,7 +20,7 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
#include <algorithm>
|
||||
|
||||
#include "Obs.h"
|
||||
#include "../plugin-macros.generated.h"
|
||||
#include "plugin-macros.generated.h"
|
||||
|
||||
static std::vector<std::string> ConvertStringArray(char **array)
|
||||
{
|
||||
|
@ -21,7 +21,7 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
#include <util/util_uint64.h>
|
||||
|
||||
#include "Obs.h"
|
||||
#include "../plugin-macros.generated.h"
|
||||
#include "plugin-macros.generated.h"
|
||||
|
||||
uint64_t Utils::Obs::NumberHelper::GetOutputDuration(obs_output_t *output)
|
||||
{
|
||||
|
@ -21,7 +21,7 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
|
||||
#include "Obs.h"
|
||||
#include "../obs-websocket.h"
|
||||
#include "../plugin-macros.generated.h"
|
||||
#include "plugin-macros.generated.h"
|
||||
|
||||
json Utils::Obs::ObjectHelper::GetStats()
|
||||
{
|
||||
|
@ -17,9 +17,9 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
#include "Obs.h"
|
||||
#include "../plugin-macros.generated.h"
|
||||
#include "plugin-macros.generated.h"
|
||||
|
||||
obs_hotkey_t *Utils::Obs::SearchHelper::GetHotkeyByName(std::string name)
|
||||
obs_hotkey_t *Utils::Obs::SearchHelper::GetHotkeyByName(std::string name, std::string context)
|
||||
{
|
||||
if (name.empty())
|
||||
return nullptr;
|
||||
@ -27,7 +27,46 @@ obs_hotkey_t *Utils::Obs::SearchHelper::GetHotkeyByName(std::string name)
|
||||
auto hotkeys = ArrayHelper::GetHotkeyList();
|
||||
|
||||
for (auto hotkey : hotkeys) {
|
||||
if (obs_hotkey_get_name(hotkey) == name)
|
||||
if (obs_hotkey_get_name(hotkey) != name)
|
||||
continue;
|
||||
|
||||
if (context.empty())
|
||||
return hotkey;
|
||||
|
||||
auto type = obs_hotkey_get_registerer_type(hotkey);
|
||||
if (type == OBS_HOTKEY_REGISTERER_SOURCE) {
|
||||
OBSSourceAutoRelease source = obs_weak_source_get_source((obs_weak_source_t *)obs_hotkey_get_registerer(hotkey));
|
||||
if (!source)
|
||||
continue;
|
||||
|
||||
if (context != obs_source_get_name(source))
|
||||
continue;
|
||||
|
||||
} else if (type == OBS_HOTKEY_REGISTERER_OUTPUT) {
|
||||
OBSOutputAutoRelease output = obs_weak_output_get_output((obs_weak_output_t *)obs_hotkey_get_registerer(hotkey));
|
||||
if (!output)
|
||||
continue;
|
||||
|
||||
if (context != obs_output_get_name(output))
|
||||
continue;
|
||||
|
||||
} else if (type == OBS_HOTKEY_REGISTERER_ENCODER) {
|
||||
OBSEncoderAutoRelease encoder = obs_weak_encoder_get_encoder((obs_weak_encoder_t *)obs_hotkey_get_registerer(hotkey));
|
||||
if (!encoder)
|
||||
continue;
|
||||
|
||||
if (context != obs_encoder_get_name(encoder))
|
||||
continue;
|
||||
|
||||
} else if (type == OBS_HOTKEY_REGISTERER_SERVICE) {
|
||||
OBSServiceAutoRelease service = obs_weak_service_get_service((obs_weak_service_t *)obs_hotkey_get_registerer(hotkey));
|
||||
if (!service)
|
||||
continue;
|
||||
|
||||
if (context != obs_service_get_name(service))
|
||||
continue;
|
||||
|
||||
}
|
||||
return hotkey;
|
||||
}
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user