mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Compare commits
161 Commits
release/5.
...
5.3.5
Author | SHA1 | Date | |
---|---|---|---|
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 | |||
5716577019 | |||
b4a1266cf0 | |||
6527381c91 | |||
fb2abc45cf | |||
54b0dc3781 | |||
0ff90d1687 | |||
62bdbb2e64 | |||
5f8a0122bd | |||
20ea6e3352 | |||
b07dce821a | |||
2f549b82a3 | |||
17243577c5 | |||
c0ba751aaf | |||
eba6c4c6f3 | |||
59e7e3a307 | |||
8bf8995ad8 | |||
2b8dd47a6c | |||
268a45e8dd | |||
e52d5402cf | |||
0db223b148 | |||
420e600864 | |||
190a9551f6 | |||
773f85e0d7 | |||
b5d50c4243 | |||
e3314b3608 | |||
1902d7e1a3 | |||
e0d322d4cc | |||
ecde83a28d | |||
b0167e6296 | |||
16f3ceb997 | |||
2875fc7313 | |||
b9a63603c7 | |||
de40b53d77 | |||
1698b2895b | |||
1d25f97004 | |||
258bfc5689 | |||
35e3e278bf | |||
5341cb5951 | |||
00504a0d52 | |||
ab743c2ee6 | |||
1dd57f6140 | |||
a22a7cf993 | |||
d9026c1791 | |||
2524dc47cf | |||
798eebf638 | |||
9cdfa41113 | |||
aab925c0ed | |||
be1b13f15d | |||
6122fe6ea7 | |||
4201664c7b | |||
3deea2b5da | |||
c3ee52c4fe | |||
f4b72b69ce | |||
5b8fd096d5 | |||
22fee0312d | |||
17292520f2 | |||
711746524c | |||
e04bca0993 | |||
c8d0ed2138 | |||
6deadc25ac | |||
f73e78582b | |||
7b238793d0 | |||
7a09f38a64 | |||
27d21975f0 | |||
60e272e6f0 |
46
.cmake-format.json
Normal file
46
.cmake-format.json
Normal file
@ -0,0 +1,46 @@
|
||||
{
|
||||
"format": {
|
||||
"line_width": 120,
|
||||
"tab_size": 2,
|
||||
"enable_sort": true,
|
||||
"autosort": true
|
||||
},
|
||||
"additional_commands": {
|
||||
"find_qt": {
|
||||
"flags": [],
|
||||
"kwargs": {
|
||||
"COMPONENTS": "+",
|
||||
"COMPONENTS_WIN": "+",
|
||||
"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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -9,8 +9,16 @@ indent_style = tab
|
||||
indent_size = 4
|
||||
|
||||
[CMakeLists.txt]
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[**/CMakeLists.txt]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[cmake/**/*.cmake]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.{yml,yaml}]
|
||||
indent_style = space
|
||||
|
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
|
54
.github/workflows/generate_docs.yml
vendored
54
.github/workflows/generate_docs.yml
vendored
@ -1,27 +1,27 @@
|
||||
name: 'Generate docs'
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- 'docs/generated/**'
|
||||
branches:
|
||||
- release/5.0.0
|
||||
|
||||
jobs:
|
||||
docs-build:
|
||||
name: 'Generate docs [Ubuntu]'
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.ref == 'refs/heads/master' }}
|
||||
env:
|
||||
CHECKOUT_REF: ${{ github.ref }}
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
IS_CI: "true"
|
||||
steps:
|
||||
- name: 'Checkout'
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
path: ${{ github.workspace }}/obs-websocket
|
||||
- name: 'Generate docs'
|
||||
working-directory: ${{ github.workspace }}/obs-websocket
|
||||
run: |
|
||||
./CI/generate-docs.sh
|
||||
name: 'Generate docs'
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- 'docs/generated/**'
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
docs-build:
|
||||
name: 'Generate docs [Ubuntu]'
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.ref == 'refs/heads/master' }}
|
||||
env:
|
||||
CHECKOUT_REF: ${{ github.ref }}
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
IS_CI: "true"
|
||||
steps:
|
||||
- name: 'Checkout'
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
path: ${{ github.workspace }}/obs-websocket
|
||||
- name: 'Generate docs'
|
||||
working-directory: ${{ github.workspace }}/obs-websocket
|
||||
run: |
|
||||
./CI/generate-docs.sh
|
||||
|
4
.github/workflows/lint.yml
vendored
4
.github/workflows/lint.yml
vendored
@ -3,10 +3,10 @@ name: Code Quality
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- release/5.0.0
|
||||
- master
|
||||
pull_request:
|
||||
branches:
|
||||
- release/5.0.0
|
||||
- master
|
||||
|
||||
jobs:
|
||||
markdown:
|
||||
|
563
.github/workflows/main.yml
vendored
563
.github/workflows/main.yml
vendored
@ -1,563 +0,0 @@
|
||||
name: 'CI Multiplatform Build'
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
branches:
|
||||
- release/5.0.0
|
||||
tags:
|
||||
- '[45].[0-9]+.[0-9]+*'
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '**.md'
|
||||
branches:
|
||||
- release/5.0.0
|
||||
|
||||
jobs:
|
||||
windows:
|
||||
name: 'Windows 32/64-bit'
|
||||
runs-on: [windows-2019]
|
||||
if: contains(github.event.head_commit.message, '[skip ci]') != true
|
||||
env:
|
||||
QT_CACHE_VERSION: '2' # Change whenever updating OBS dependencies URL, in order to force a cache reset
|
||||
QT_VERSION: '5.15.2'
|
||||
WINDOWS_DEPS_CACHE_VERSION: '1' # Change whenever updating Qt dependency URL, in order to force a cache reset
|
||||
WINDOWS_DEPS_VERSION: '2019'
|
||||
CMAKE_GENERATOR: 'Visual Studio 16 2019'
|
||||
CMAKE_SYSTEM_VERSION: '10.0'
|
||||
steps:
|
||||
- name: 'Add msbuild to PATH'
|
||||
uses: microsoft/setup-msbuild@v1.0.2
|
||||
- name: 'Checkout obs-websocket'
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
path: ${{ github.workspace }}/obs-websocket
|
||||
submodules: 'recursive'
|
||||
- name: 'Checkout OBS Studio'
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: obsproject/obs-studio
|
||||
path: ${{ github.workspace }}/obs-studio
|
||||
submodules: 'recursive'
|
||||
- name: 'Get OBS Studio Git Info'
|
||||
shell: bash
|
||||
working-directory: ${{ github.workspace }}/obs-studio
|
||||
run: |
|
||||
git fetch --prune --unshallow
|
||||
echo "OBS_GIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
|
||||
echo "OBS_GIT_TAG=27.2.4" >> $GITHUB_ENV
|
||||
# echo "OBS_GIT_TAG=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV
|
||||
- name: 'Checkout last OBS Studio release (${{ env.OBS_GIT_TAG }})'
|
||||
shell: bash
|
||||
working-directory: ${{ github.workspace }}/obs-studio
|
||||
run: |
|
||||
git checkout ${{ env.OBS_GIT_TAG }}
|
||||
git submodule update
|
||||
- name: 'Get obs-websocket Git Info'
|
||||
shell: bash
|
||||
working-directory: ${{ github.workspace }}/obs-websocket
|
||||
run: |
|
||||
git fetch --prune --unshallow
|
||||
GIT_HASH=$(git rev-parse --short HEAD)
|
||||
echo "GIT_HASH=$GIT_HASH" >> $GITHUB_ENV
|
||||
GIT_TAG=$(git describe --exact-match --tags --abbrev=0) || GIT_TAG=""
|
||||
echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV
|
||||
if [ "$GIT_TAG" ] ; then \
|
||||
VERSION="$GIT_TAG" \
|
||||
VERSION_SUFFIX=$(echo "$GIT_TAG" | cut -c6-20) ; \
|
||||
else \
|
||||
VERSION="$GIT_HASH-git" \
|
||||
VERSION_SUFFIX="-$GIT_HASH-git" ; \
|
||||
fi
|
||||
echo "PACKAGE_VERSION=$VERSION" >> $GITHUB_ENV
|
||||
echo "CMAKE_VERSION_SUFFIX=$VERSION_SUFFIX" >> $GITHUB_ENV
|
||||
- name: 'Restore Cached Qt'
|
||||
id: qtcache
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: Qt_${{ env.QT_VERSION }}.7z
|
||||
key: 'qtdep-${{ env.QT_CACHE_VERSION }} | ${{ runner.os }}'
|
||||
- name: 'Download Prerequisite: Qt'
|
||||
if: steps.qtcache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
curl -kLO https://tt2468.net/dl/Qt_${{ env.QT_VERSION }}.7z -f --retry 5 -C -
|
||||
- name: 'Extract Prerequisite: Qt'
|
||||
run: |
|
||||
7z x Qt_${{ env.QT_VERSION }}.7z -o"${{ github.workspace }}\cmbuild\QT"
|
||||
- name: 'Restore Cached OBS Studio Dependencies'
|
||||
id: obscache
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ${{ github.workspace }}\cmbuild\deps\**
|
||||
key: 'obsdep-${{ env.WINDOWS_DEPS_CACHE_VERSION }} | ${{ runner.os }}'
|
||||
- name: 'Install Prerequisite: Pre-built OBS Studio dependencies'
|
||||
if: steps.obscache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
curl -kLO https://cdn-fastly.obsproject.com/downloads/dependencies${{ env.WINDOWS_DEPS_VERSION }}.zip -f --retry 5 -C -
|
||||
7z x dependencies${{ env.WINDOWS_DEPS_VERSION }}.zip -o"${{ github.workspace }}\cmbuild\deps"
|
||||
- name: 'Restore OBS Studio 32-bit Build v${{ env.OBS_GIT_TAG }} from Cache'
|
||||
id: build-cache-obs-32
|
||||
uses: actions/cache@v2
|
||||
env:
|
||||
CACHE_NAME: 'build-cache-obs-32'
|
||||
with:
|
||||
path: ${{ github.workspace }}/obs-studio/build32
|
||||
key: ${{ runner.os }}-${{ env.CACHE_NAME }}-${{ env.OBS_GIT_TAG }}
|
||||
- name: 'Configure OBS Studio 32-bit'
|
||||
if: steps.build-cache-obs-32.outputs.cache-hit != 'true'
|
||||
working-directory: ${{ github.workspace }}/obs-studio
|
||||
run: |
|
||||
if(!(Test-Path -Path ".\build32")){New-Item -ItemType directory -Path .\build32}
|
||||
cd .\build32
|
||||
cmake -G "${{ env.CMAKE_GENERATOR }}" -A Win32 -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DQTDIR="${{ github.workspace }}\cmbuild\QT\${{ env.QT_VERSION }}\msvc2019" -DDepsPath="${{ github.workspace }}\cmbuild\deps\win32" -DCOPIED_DEPENDENCIES=NO -DCOPY_DEPENDENCIES=YES -DBUILD_BROWSER=OFF -DBUILD_VST=OFF ..
|
||||
- name: 'Build OBS Studio 32-bit'
|
||||
if: steps.build-cache-obs-32.outputs.cache-hit != 'true'
|
||||
working-directory: ${{ github.workspace }}/obs-studio
|
||||
run: |
|
||||
msbuild /m /p:Configuration=RelWithDebInfo .\build32\libobs\libobs.vcxproj
|
||||
msbuild /m /p:Configuration=RelWithDebInfo .\build32\UI\obs-frontend-api\obs-frontend-api.vcxproj
|
||||
- name: 'Restore OBS Studio 64-bit Build v${{ env.OBS_GIT_TAG }} from Cache'
|
||||
id: build-cache-obs-64
|
||||
uses: actions/cache@v1
|
||||
env:
|
||||
CACHE_NAME: 'build-cache-obs-64'
|
||||
with:
|
||||
path: ${{ github.workspace }}/obs-studio/build64
|
||||
key: ${{ runner.os }}-${{ env.CACHE_NAME }}-${{ env.OBS_GIT_TAG }}
|
||||
- name: 'Configure OBS Studio 64-bit'
|
||||
if: steps.build-cache-obs-64.outputs.cache-hit != 'true'
|
||||
working-directory: ${{ github.workspace }}/obs-studio
|
||||
run: |
|
||||
if(!(Test-Path -Path ".\build64")){New-Item -ItemType directory -Path .\build64}
|
||||
cd .\build64
|
||||
cmake -G "${{ env.CMAKE_GENERATOR }}" -A x64 -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DQTDIR="${{ github.workspace }}\cmbuild\QT\${{ env.QT_VERSION }}\msvc2019_64" -DDepsPath="${{ github.workspace }}\cmbuild\deps\win64" -DCOPIED_DEPENDENCIES=NO -DCOPY_DEPENDENCIES=YES -DBUILD_BROWSER=OFF -DBUILD_VST=OFF ..
|
||||
- name: 'Build OBS Studio 64-bit'
|
||||
if: steps.build-cache-obs-64.outputs.cache-hit != 'true'
|
||||
working-directory: ${{ github.workspace }}/obs-studio
|
||||
run: |
|
||||
msbuild /m /p:Configuration=RelWithDebInfo .\build64\libobs\libobs.vcxproj
|
||||
msbuild /m /p:Configuration=RelWithDebInfo .\build64\UI\obs-frontend-api\obs-frontend-api.vcxproj
|
||||
- name: 'Configure obs-websocket 32-bit'
|
||||
working-directory: ${{ github.workspace }}/obs-websocket
|
||||
run: |
|
||||
mkdir .\build32
|
||||
cd .\build32
|
||||
cmake -G "${{ env.CMAKE_GENERATOR }}" -A Win32 -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DQTDIR="${{ github.workspace }}\cmbuild\QT\${{ env.QT_VERSION }}\msvc2019" -DLibObs_DIR="${{ github.workspace }}\obs-studio\build32\libobs" -DLIBOBS_INCLUDE_DIR="${{ github.workspace }}\obs-studio\libobs" -DLIBOBS_LIB="${{ github.workspace }}\obs-studio\build32\libobs\RelWithDebInfo\obs.lib" -DOBS_FRONTEND_LIB="${{ github.workspace }}\obs-studio\build32\UI\obs-frontend-api\RelWithDebInfo\obs-frontend-api.lib" -DOBS_WEBSOCKET_VERSION_SUFFIX="${{ env.CMAKE_VERSION_SUFFIX }}" ..
|
||||
- name: 'Configure obs-websocket 64-bit'
|
||||
working-directory: ${{ github.workspace }}/obs-websocket
|
||||
run: |
|
||||
mkdir .\build64
|
||||
cd .\build64
|
||||
cmake -G "${{ env.CMAKE_GENERATOR }}" -A x64 -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DQTDIR="${{ github.workspace }}\cmbuild\QT\${{ env.QT_VERSION }}\msvc2019_64" -DLibObs_DIR="${{ github.workspace }}\obs-studio\build64\libobs" -DLIBOBS_INCLUDE_DIR="${{ github.workspace }}\obs-studio\libobs" -DLIBOBS_LIB="${{ github.workspace }}\obs-studio\build64\libobs\RelWithDebInfo\obs.lib" -DOBS_FRONTEND_LIB="${{ github.workspace }}\obs-studio\build64\UI\obs-frontend-api\RelWithDebInfo\obs-frontend-api.lib" -DOBS_WEBSOCKET_VERSION_SUFFIX="${{ env.CMAKE_VERSION_SUFFIX }}" ..
|
||||
- name: 'Build obs-websocket 32-bit'
|
||||
working-directory: ${{ github.workspace }}/obs-websocket
|
||||
run: msbuild /m /p:Configuration=RelWithDebInfo .\build32\obs-websocket.sln
|
||||
- name: 'Build obs-websocket 64-bit'
|
||||
working-directory: ${{ github.workspace }}/obs-websocket
|
||||
run: msbuild /m /p:Configuration=RelWithDebInfo .\build64\obs-websocket.sln
|
||||
- name: 'Set PR Artifact Filename'
|
||||
shell: bash
|
||||
run: |
|
||||
echo "WIN_FILENAME=obs-websocket-${{ env.PACKAGE_VERSION }}-Windows" >> $GITHUB_ENV
|
||||
- name: 'Package obs-websocket'
|
||||
working-directory: ${{ github.workspace }}/obs-websocket
|
||||
run: |
|
||||
mkdir package
|
||||
cd package
|
||||
7z a "${{ env.WIN_FILENAME }}.zip" "..\release\*"
|
||||
iscc ..\installer\installer-windows.generated.iss /O. /F"${{ env.WIN_FILENAME }}-Installer"
|
||||
- name: 'Publish ${{ env.WIN_FILENAME }}.zip'
|
||||
if: success()
|
||||
uses: actions/upload-artifact@v2-preview
|
||||
with:
|
||||
name: 'obs-websocket-${{ env.PACKAGE_VERSION }}-Windows'
|
||||
path: ${{ github.workspace }}/obs-websocket/package/*.zip
|
||||
- name: 'Publish ${{ env.WIN_FILENAME }}-Installer.exe'
|
||||
if: success()
|
||||
uses: actions/upload-artifact@v2-preview
|
||||
with:
|
||||
name: 'obs-websocket-${{ env.PACKAGE_VERSION }}-Windows-Installer'
|
||||
path: ${{ github.workspace }}/obs-websocket/package/*.exe
|
||||
ubuntu64:
|
||||
name: 'Linux/Ubuntu 64-bit'
|
||||
runs-on: [ubuntu-latest]
|
||||
if: contains(github.event.head_commit.message, '[skip ci]') != true
|
||||
steps:
|
||||
- name: 'Checkout obs-websocket'
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
path: ${{ github.workspace }}/obs-websocket
|
||||
submodules: 'recursive'
|
||||
- name: 'Checkout OBS Studio'
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: obsproject/obs-studio
|
||||
path: ${{ github.workspace }}/obs-studio
|
||||
submodules: 'recursive'
|
||||
- name: 'Get OBS Studio Git Info'
|
||||
shell: bash
|
||||
working-directory: ${{ github.workspace }}/obs-studio
|
||||
run: |
|
||||
git fetch --prune --unshallow
|
||||
echo "OBS_GIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
|
||||
echo "OBS_GIT_TAG=27.2.4" >> $GITHUB_ENV
|
||||
# echo "OBS_GIT_TAG=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV
|
||||
- name: 'Checkout last OBS Studio release (${{ env.OBS_GIT_TAG }})'
|
||||
shell: bash
|
||||
working-directory: ${{ github.workspace }}/obs-studio
|
||||
run: |
|
||||
git checkout ${{ env.OBS_GIT_TAG }}
|
||||
git submodule update
|
||||
- name: 'Get obs-websocket git info'
|
||||
working-directory: ${{ github.workspace }}/obs-websocket
|
||||
run: |
|
||||
git fetch --prune --unshallow
|
||||
GIT_HASH=$(git rev-parse --short HEAD)
|
||||
echo "GIT_HASH=$GIT_HASH" >> $GITHUB_ENV
|
||||
GIT_TAG=$(git describe --exact-match --tags --abbrev=0) || GIT_TAG=""
|
||||
echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV
|
||||
if [ "$GIT_TAG" ] ; then \
|
||||
VERSION="$GIT_TAG" \
|
||||
VERSION_SUFFIX=$(echo "$GIT_TAG" | cut -c6-20) ; \
|
||||
else \
|
||||
VERSION="$GIT_HASH-git" \
|
||||
VERSION_SUFFIX="-$GIT_HASH-git" ; \
|
||||
fi
|
||||
echo "PACKAGE_VERSION=$VERSION" >> $GITHUB_ENV
|
||||
echo "CMAKE_VERSION_SUFFIX=$VERSION_SUFFIX" >> $GITHUB_ENV
|
||||
- name: 'Install prerequisites (Apt)'
|
||||
shell: bash
|
||||
run: |
|
||||
sudo dpkg --add-architecture amd64
|
||||
sudo apt-get -qq update
|
||||
sudo apt-get install -y \
|
||||
build-essential \
|
||||
checkinstall \
|
||||
cmake \
|
||||
libasound2-dev \
|
||||
libavcodec-dev \
|
||||
libavdevice-dev \
|
||||
libavfilter-dev \
|
||||
libavformat-dev \
|
||||
libavutil-dev \
|
||||
libcurl4-openssl-dev \
|
||||
libfdk-aac-dev \
|
||||
libfontconfig-dev \
|
||||
libfreetype6-dev \
|
||||
libgl1-mesa-dev \
|
||||
libjack-jackd2-dev \
|
||||
libjansson-dev \
|
||||
libluajit-5.1-dev \
|
||||
libpulse-dev \
|
||||
libqt5x11extras5-dev \
|
||||
libspeexdsp-dev \
|
||||
libswresample-dev \
|
||||
libswscale-dev \
|
||||
libudev-dev \
|
||||
libv4l-dev \
|
||||
libva-dev \
|
||||
libvlc-dev \
|
||||
libx11-dev \
|
||||
libx264-dev \
|
||||
libxcb-randr0-dev \
|
||||
libxcb-shm0-dev \
|
||||
libxcb-xinerama0-dev \
|
||||
libxcomposite-dev \
|
||||
libxinerama-dev \
|
||||
libmbedtls-dev \
|
||||
pkg-config \
|
||||
python3-dev \
|
||||
qtbase5-dev \
|
||||
qtbase5-private-dev \
|
||||
libqt5svg5-dev \
|
||||
swig \
|
||||
libxcb-randr0-dev \
|
||||
libxcb-xfixes0-dev \
|
||||
libx11-xcb-dev \
|
||||
libxcb1-dev \
|
||||
libxss-dev \
|
||||
- name: 'Configure OBS Studio'
|
||||
working-directory: ${{ github.workspace }}/obs-studio
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir ./build
|
||||
cd ./build
|
||||
cmake -DDISABLE_PLUGINS=YES -DENABLE_SCRIPTING=NO -DUNIX_STRUCTURE=YES -DCMAKE_INSTALL_PREFIX=/usr ..
|
||||
- name: 'Build OBS Studio'
|
||||
working-directory: ${{ github.workspace }}/obs-studio
|
||||
shell: bash
|
||||
run: |
|
||||
set -e
|
||||
cd ./build
|
||||
make -j4 libobs obs-frontend-api
|
||||
- name: 'Install OBS Studio'
|
||||
working-directory: ${{ github.workspace }}/obs-studio
|
||||
shell: bash
|
||||
run: |
|
||||
cd ./build
|
||||
sudo cp ./libobs/libobs.so /usr/lib
|
||||
sudo cp ./UI/obs-frontend-api/libobs-frontend-api.so /usr/lib
|
||||
sudo mkdir -p /usr/include/obs
|
||||
sudo cp ../UI/obs-frontend-api/obs-frontend-api.h /usr/include/obs/obs-frontend-api.h
|
||||
- name: 'Configure obs-websocket'
|
||||
working-directory: ${{ github.workspace }}/obs-websocket
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir ./build
|
||||
cd ./build
|
||||
if [ "${{ env.GIT_TAG }}" ] ; then \
|
||||
cmake -DLIBOBS_INCLUDE_DIR=${{ github.workspace }}/obs-studio/libobs -DCMAKE_INSTALL_PREFIX=/usr -DUSE_UBUNTU_FIX=TRUE -DOBS_WEBSOCKET_VERSION_SUFFIX="${{ env.CMAKE_VERSION_SUFFIX }}" -DCMAKE_BUILD_TYPE=Release .. ; \
|
||||
else \
|
||||
cmake -DLIBOBS_INCLUDE_DIR=${{ github.workspace }}/obs-studio/libobs -DCMAKE_INSTALL_PREFIX=/usr -DUSE_UBUNTU_FIX=TRUE -DOBS_WEBSOCKET_VERSION_SUFFIX="${{ env.CMAKE_VERSION_SUFFIX }}" -DPLUGIN_TESTS=TRUE .. ; \
|
||||
fi
|
||||
- name: 'Build obs-websocket'
|
||||
working-directory: ${{ github.workspace }}/obs-websocket
|
||||
shell: bash
|
||||
run: |
|
||||
set -e
|
||||
cd ./build
|
||||
make -j4
|
||||
- name: 'Set PR Artifact Filename'
|
||||
shell: bash
|
||||
run: |
|
||||
echo "LINUX_FILENAME=obs-websocket-${{ env.PACKAGE_VERSION }}-Ubuntu64.deb" >> $GITHUB_ENV
|
||||
- name: 'Package ${{ env.LINUX_FILENAME }}'
|
||||
if: success()
|
||||
working-directory: ${{ github.workspace }}/obs-websocket
|
||||
shell: bash
|
||||
run: |
|
||||
if [ "${{ env.GIT_TAG }}" ] ; then \
|
||||
CHECKINSTALL_VERSION="${{ env.PACKAGE_VERSION }}" ; \
|
||||
else \
|
||||
CHECKINSTALL_VERSION="1-${{ env.PACKAGE_VERSION }}" ; \
|
||||
fi
|
||||
cd ./build
|
||||
sudo checkinstall -y --type=debian --fstrans=no -nodoc \
|
||||
--backup=no --deldoc=yes --install=no --pkgname=obs-websocket --pkgversion="$CHECKINSTALL_VERSION" \
|
||||
--pkglicense="GPLv2.0" --maintainer="tt2468@irltoolkit.com" --pkggroup="video" \
|
||||
--pkgsource="${{ github.event.repository.html_url }}" \
|
||||
--requires="obs-studio,libqt5network5,qt5-image-formats-plugins" \
|
||||
--pakdir="../package"
|
||||
sudo chmod ao+r ../package/*
|
||||
sudo mv ../package/* ../package/${{ env.LINUX_FILENAME }}
|
||||
cd -
|
||||
- name: 'Publish ${{ env.LINUX_FILENAME }}'
|
||||
if: success()
|
||||
uses: actions/upload-artifact@v2-preview
|
||||
with:
|
||||
name: 'obs-websocket-${{ env.PACKAGE_VERSION }}-Ubuntu64'
|
||||
path: '${{ github.workspace }}/obs-websocket/package/*.deb'
|
||||
macOS:
|
||||
name: 'macOS 64-bit'
|
||||
runs-on: [macos-latest]
|
||||
if: contains(github.event.head_commit.message, '[skip ci]') != true
|
||||
env:
|
||||
MACOS_DEPS_VERSION: '2022-01-01'
|
||||
MACOS_DEPS_CACHE_VERSION: '2' # Change whenever updating dependencies version, in order to force a cache reset
|
||||
steps:
|
||||
- name: 'Checkout obs-websocket'
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
path: ${{ github.workspace }}/obs-websocket
|
||||
submodules: 'recursive'
|
||||
- name: 'Checkout OBS Studio'
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: obsproject/obs-studio
|
||||
path: ${{ github.workspace }}/obs-studio
|
||||
submodules: 'recursive'
|
||||
- name: 'Install Prerequisite: Binary Signing Certificate'
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: apple-actions/import-codesign-certs@v1
|
||||
with:
|
||||
p12-file-base64: ${{ secrets.MACOS_SIGNING_CERT }}
|
||||
p12-password: ${{ secrets.MACOS_SIGNING_CERT_PASSWORD }}
|
||||
create-keychain: true
|
||||
keychain-password: ${{ secrets.MACOS_TEMP_CI_KEYCHAIN_PASSWORD }}
|
||||
- name: 'Install Prerequisite: Installer Signing Certificate'
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: apple-actions/import-codesign-certs@v1
|
||||
with:
|
||||
p12-file-base64: ${{ secrets.MACOS_INSTALLER_CERT }}
|
||||
p12-password: ${{ secrets.MACOS_INSTALLER_CERT_PASSWORD }}
|
||||
create-keychain: false
|
||||
keychain-password: ${{ secrets.MACOS_TEMP_CI_KEYCHAIN_PASSWORD }}
|
||||
- name: 'Get OBS Studio Git Info'
|
||||
shell: bash
|
||||
working-directory: ${{ github.workspace }}/obs-studio
|
||||
run: |
|
||||
git fetch --prune --unshallow
|
||||
echo "OBS_GIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
|
||||
echo "OBS_GIT_TAG=27.2.4" >> $GITHUB_ENV
|
||||
# echo "OBS_GIT_TAG=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV
|
||||
- name: 'Checkout last OBS Studio release (${{ env.OBS_GIT_TAG }})'
|
||||
shell: bash
|
||||
working-directory: ${{ github.workspace }}/obs-studio
|
||||
run: |
|
||||
git checkout ${{ env.OBS_GIT_TAG }}
|
||||
git submodule update
|
||||
- name: 'Get obs-websocket git info'
|
||||
shell: bash
|
||||
working-directory: ${{ github.workspace }}/obs-websocket
|
||||
run: |
|
||||
git fetch --prune --unshallow
|
||||
GIT_HASH=$(git rev-parse --short HEAD)
|
||||
echo "GIT_HASH=$GIT_HASH" >> $GITHUB_ENV
|
||||
GIT_TAG=$(git describe --exact-match --tags --abbrev=0) || GIT_TAG=""
|
||||
echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV
|
||||
if [ "$GIT_TAG" ] ; then \
|
||||
VERSION="$GIT_TAG" \
|
||||
VERSION_SUFFIX=$(echo "$GIT_TAG" | cut -c6-20) ; \
|
||||
else \
|
||||
VERSION="$GIT_HASH-git" \
|
||||
VERSION_SUFFIX="-$GIT_HASH-git" ; \
|
||||
fi
|
||||
echo "PACKAGE_VERSION=$VERSION" >> $GITHUB_ENV
|
||||
echo "CMAKE_VERSION_SUFFIX=$VERSION_SUFFIX" >> $GITHUB_ENV
|
||||
- name: 'Install Packages'
|
||||
shell: bash
|
||||
run: |
|
||||
curl -L -O http://s.sudre.free.fr/Software/files/Packages.dmg
|
||||
sudo hdiutil attach ./Packages.dmg
|
||||
sudo installer -pkg /Volumes/Packages\ 1.2.10/Install\ Packages.pkg -target /
|
||||
- name: 'Restore Cached Qt & OBS Studio dependencies'
|
||||
id: deps-cache
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ${{ github.workspace }}/obsdeps/**
|
||||
key: 'deps-cache-${{ env.MACOS_DEPS_CACHE_VERSION }} | ${{ runner.os }}'
|
||||
- name: 'Install Prerequisite: Qt + OBS Studio dependencies'
|
||||
if: steps.deps-cache.outputs.cache-hit != 'true'
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p obsdeps
|
||||
curl -L -O https://github.com/obsproject/obs-deps/releases/download/${{ env.MACOS_DEPS_VERSION }}/macos-deps-qt-${{ env.MACOS_DEPS_VERSION }}-universal.tar.xz
|
||||
tar -xf macos-deps-qt-${{ env.MACOS_DEPS_VERSION }}-universal.tar.xz -C "./obsdeps"
|
||||
curl -L -O https://github.com/obsproject/obs-deps/releases/download/${{ env.MACOS_DEPS_VERSION }}/macos-deps-${{ env.MACOS_DEPS_VERSION }}-universal.tar.xz
|
||||
tar -xf macos-deps-${{ env.MACOS_DEPS_VERSION }}-universal.tar.xz -C "./obsdeps"
|
||||
- run: xattr -r -d com.apple.quarantine ./obsdeps
|
||||
shell: bash
|
||||
- name: 'Configue OBS Studio'
|
||||
if: steps.cache-obs-build.outputs.cache-hit != 'true'
|
||||
working-directory: ${{ github.workspace }}/obs-studio
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p ./build
|
||||
cd ./build
|
||||
cmake .. \
|
||||
-DQTDIR=${{ github.workspace }}/obsdeps \
|
||||
-DDepsPath=${{ github.workspace }}/obsdeps \
|
||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 \
|
||||
-DDISABLE_PLUGINS=true \
|
||||
-DENABLE_SCRIPTING=0 \
|
||||
-DCMAKE_PREFIX_PATH=${{ github.workspace }}/obsdeps/lib/cmake
|
||||
- name: 'Build OBS Studio'
|
||||
if: steps.cache-obs-build.outputs.cache-hit != 'true'
|
||||
working-directory: ${{ github.workspace }}/obs-studio/build
|
||||
shell: bash
|
||||
run: |
|
||||
set -e
|
||||
make -j4 libobs obs-frontend-api
|
||||
- name: 'Configure obs-websocket'
|
||||
working-directory: ${{ github.workspace }}/obs-websocket
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake .. \
|
||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 \
|
||||
-DQTDIR=${{ github.workspace }}/obsdeps \
|
||||
-DLIBOBS_INCLUDE_DIR=${{ github.workspace }}/obs-studio/libobs \
|
||||
-DLIBOBS_LIB=${{ github.workspace }}/obs-studio/libobs \
|
||||
-DOBS_FRONTEND_LIB="${{ github.workspace }}/obs-studio/build/UI/obs-frontend-api/libobs-frontend-api.dylib" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DOBS_WEBSOCKET_VERSION_SUFFIX="${{ env.CMAKE_VERSION_SUFFIX }}"
|
||||
- name: 'Build obs-websocket'
|
||||
working-directory: ${{ github.workspace }}/obs-websocket/build
|
||||
shell: bash
|
||||
run: |
|
||||
set -e
|
||||
make -j4
|
||||
- name: 'Relink Qt'
|
||||
shell: bash
|
||||
working-directory: ${{ github.workspace }}/obs-websocket/build
|
||||
run: |
|
||||
install_name_tool \
|
||||
-change /tmp/obsdeps/lib/QtWidgets.framework/Versions/5/QtWidgets \
|
||||
@executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets \
|
||||
-change /tmp/obsdeps/lib/QtGui.framework/Versions/5/QtGui \
|
||||
@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui \
|
||||
-change /tmp/obsdeps/lib/QtCore.framework/Versions/5/QtCore \
|
||||
@executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore \
|
||||
-change /tmp/obsdeps/lib/QtNetwork.framework/Versions/5/QtNetwork \
|
||||
@executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork \
|
||||
-change /tmp/obsdeps/lib/QtSvg.framework/Versions/5/QtSvg \
|
||||
@executable_path/../Frameworks/QtSvg.framework/Versions/5/QtSvg \
|
||||
./obs-websocket.so
|
||||
- name: 'Sign plugin binary'
|
||||
if: github.event_name != 'pull_request'
|
||||
shell: bash
|
||||
working-directory: ${{ github.workspace }}/obs-websocket/build
|
||||
run: |
|
||||
codesign --sign "${{ secrets.MACOS_SIGNING_IDENTITY }}" ./obs-websocket.so
|
||||
- name: 'Set PR Artifact Filename'
|
||||
shell: bash
|
||||
run: |
|
||||
echo "MACOS_FILENAME=obs-websocket-${{ env.PACKAGE_VERSION }}-macOS.pkg" >> $GITHUB_ENV
|
||||
echo "MACOS_FILENAME_UNSIGNED=obs-websocket-${{ env.PACKAGE_VERSION }}-macOS-Unsigned.pkg" >> $GITHUB_ENV
|
||||
- name: 'Package ${{ env.MACOS_FILENAME_UNSIGNED }}'
|
||||
if: success()
|
||||
working-directory: ${{ github.workspace }}/obs-websocket
|
||||
shell: bash
|
||||
run: |
|
||||
packagesbuild ./CI/macos/obs-websocket.pkgproj
|
||||
mv ./release/obs-websocket.pkg ./release/${{ env.MACOS_FILENAME_UNSIGNED }}
|
||||
- name: 'Sign plugin package'
|
||||
if: ${{ env.GIT_TAG != '' }}
|
||||
shell: bash
|
||||
working-directory: ${{ github.workspace }}/obs-websocket
|
||||
run: |
|
||||
productsign \
|
||||
--sign "${{ secrets.MACOS_INSTALLER_IDENTITY }}" \
|
||||
./release/${{ env.MACOS_FILENAME_UNSIGNED }} \
|
||||
./release/${{ env.MACOS_FILENAME }}
|
||||
rm ./release/${{ env.MACOS_FILENAME_UNSIGNED }}
|
||||
- name: 'Notarize package'
|
||||
if: ${{ env.GIT_TAG != '' }}
|
||||
shell: bash
|
||||
working-directory: ${{ github.workspace }}/obs-websocket
|
||||
run: |
|
||||
zip -r ./release/${{ env.MACOS_FILENAME }}.zip ./release/${{ env.MACOS_FILENAME }}
|
||||
UPLOAD_RESULT=$(xcrun altool --notarize-app \
|
||||
--primary-bundle-id "com.obsproject.obs-websocket" \
|
||||
--username "${{ secrets.MACOS_NOTARIZATION_USERNAME }}" \
|
||||
--password "${{ secrets.MACOS_NOTARIZATION_PASSWORD }}" \
|
||||
--asc-provider "${{ secrets.ASC_PROVIDER_SHORTNAME }}" \
|
||||
--file "./release/${{ env.MACOS_FILENAME }}.zip")
|
||||
|
||||
rm ./release/${{ env.MACOS_FILENAME }}.zip
|
||||
|
||||
REQUEST_UUID=$(echo $UPLOAD_RESULT | awk -F ' = ' '/RequestUUID/ {print $2}')
|
||||
|
||||
# Pieces of code borrowed from rednoah/notarized-app
|
||||
while sleep 30 && date; do
|
||||
CHECK_RESULT=$(xcrun altool \
|
||||
--notarization-info "$REQUEST_UUID" \
|
||||
--username "${{ secrets.MACOS_NOTARIZATION_USERNAME }}" \
|
||||
--password "${{ secrets.MACOS_NOTARIZATION_PASSWORD }}" \
|
||||
--asc-provider "${{ secrets.ASC_PROVIDER_SHORTNAME }}")
|
||||
|
||||
if ! grep -q "Status: in progress" <<< "$CHECK_RESULT"; then
|
||||
xcrun stapler staple ./release/${{ env.MACOS_FILENAME }}
|
||||
break
|
||||
fi
|
||||
done
|
||||
- name: 'Publish Packages'
|
||||
if: success()
|
||||
uses: actions/upload-artifact@v2-preview
|
||||
with:
|
||||
name: 'obs-websocket-${{ env.PACKAGE_VERSION }}-macOS'
|
||||
path: '${{ github.workspace }}/obs-websocket/release/*.pkg'
|
6
.gitignore
vendored
6
.gitignore
vendored
@ -1,14 +1,12 @@
|
||||
*~
|
||||
.DS_Store
|
||||
.idea
|
||||
.vscode
|
||||
/build/
|
||||
/build32/
|
||||
/build64/
|
||||
/release/
|
||||
/package/
|
||||
/installer/Output/
|
||||
.idea
|
||||
.vscode
|
||||
/docs/node_modules/
|
||||
/src/plugin-macros.generated.h
|
||||
/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
|
||||
|
@ -1,57 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Original source https://github.com/Project-OSRM/osrm-backend/blob/master/scripts/format.sh
|
||||
|
||||
set -o errexit
|
||||
set -o pipefail
|
||||
set -o nounset
|
||||
|
||||
if [ ${#} -eq 1 ]; then
|
||||
VERBOSITY="--verbose"
|
||||
else
|
||||
VERBOSITY=""
|
||||
fi
|
||||
|
||||
# Runs the Clang Formatter in parallel on the code base.
|
||||
# Return codes:
|
||||
# - 1 there are files to be formatted
|
||||
# - 0 everything looks fine
|
||||
|
||||
# Get CPU count
|
||||
OS=$(uname)
|
||||
NPROC=1
|
||||
if [[ ${OS} = "Linux" ]] ; then
|
||||
NPROC=$(nproc)
|
||||
elif [[ ${OS} = "Darwin" ]] ; then
|
||||
NPROC=$(sysctl -n hw.physicalcpu)
|
||||
fi
|
||||
|
||||
# Discover clang-format
|
||||
if type clang-format-12 2> /dev/null ; then
|
||||
CLANG_FORMAT=clang-format-12
|
||||
elif type clang-format 2> /dev/null ; then
|
||||
# Clang format found, but need to check version
|
||||
CLANG_FORMAT=clang-format
|
||||
V=$(clang-format --version)
|
||||
if [[ $V != *"version 12.0"* ]]; then
|
||||
echo "clang-format is not 12.0 (returned ${V})"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "No appropriate clang-format found (expected clang-format-12.0.0, or clang-format)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
find . -type d \( \
|
||||
-path ./\*build\* -o \
|
||||
-path ./deps/websocketpp -o \
|
||||
-path ./deps/asio -o \
|
||||
-path ./deps/json -o \
|
||||
-path ./deps/qr \
|
||||
\) -prune -false -type f -o \
|
||||
-name '*.h' -or \
|
||||
-name '*.hpp' -or \
|
||||
-name '*.m' -or \
|
||||
-name '*.m,' -or \
|
||||
-name '*.c' -or \
|
||||
-name '*.cpp' \
|
||||
| xargs -L100 -P ${NPROC} ${CLANG_FORMAT} ${VERBOSITY} -i -style=file -fallback-style=none
|
@ -1,726 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>PROJECT</key>
|
||||
<dict>
|
||||
<key>PACKAGE_FILES</key>
|
||||
<dict>
|
||||
<key>DEFAULT_INSTALL_LOCATION</key>
|
||||
<string>/</string>
|
||||
<key>HIERARCHY</key>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>80</integer>
|
||||
<key>PATH</key>
|
||||
<string>../../build/obs-websocket.so</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>3</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>GID</key>
|
||||
<integer>80</integer>
|
||||
<key>PATH</key>
|
||||
<string>bin</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>2</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>80</integer>
|
||||
<key>PATH</key>
|
||||
<string>../../data</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>3</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>GID</key>
|
||||
<integer>80</integer>
|
||||
<key>PATH</key>
|
||||
<string>obs-websocket</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>2</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>GID</key>
|
||||
<integer>80</integer>
|
||||
<key>PATH</key>
|
||||
<string>plugins</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>2</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>GID</key>
|
||||
<integer>80</integer>
|
||||
<key>PATH</key>
|
||||
<string>obs-studio</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>2</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>GID</key>
|
||||
<integer>80</integer>
|
||||
<key>PATH</key>
|
||||
<string>Application Support</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>Automator</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>Documentation</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>Extensions</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>Filesystems</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>Frameworks</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>Input Methods</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>Internet Plug-Ins</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>LaunchAgents</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>LaunchDaemons</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>PreferencePanes</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>Preferences</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>80</integer>
|
||||
<key>PATH</key>
|
||||
<string>Printers</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>PrivilegedHelperTools</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>QuickLook</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>QuickTime</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>Screen Savers</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>Scripts</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>Services</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>Widgets</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>Library</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CHILDREN</key>
|
||||
<array/>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>Shared</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>1023</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>GID</key>
|
||||
<integer>80</integer>
|
||||
<key>PATH</key>
|
||||
<string>Users</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>GID</key>
|
||||
<integer>0</integer>
|
||||
<key>PATH</key>
|
||||
<string>/</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>PERMISSIONS</key>
|
||||
<integer>493</integer>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>UID</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<key>PAYLOAD_TYPE</key>
|
||||
<integer>0</integer>
|
||||
<key>VERSION</key>
|
||||
<integer>4</integer>
|
||||
</dict>
|
||||
<key>PACKAGE_SCRIPTS</key>
|
||||
<dict>
|
||||
<key>RESOURCES</key>
|
||||
<array/>
|
||||
</dict>
|
||||
<key>PACKAGE_SETTINGS</key>
|
||||
<dict>
|
||||
<key>AUTHENTICATION</key>
|
||||
<integer>1</integer>
|
||||
<key>CONCLUSION_ACTION</key>
|
||||
<integer>0</integer>
|
||||
<key>IDENTIFIER</key>
|
||||
<string>com.obsproject.obs-websocket</string>
|
||||
<key>OVERWRITE_PERMISSIONS</key>
|
||||
<false/>
|
||||
<key>VERSION</key>
|
||||
<string>5.0.0</string>
|
||||
</dict>
|
||||
<key>PROJECT_COMMENTS</key>
|
||||
<dict>
|
||||
<key>NOTES</key>
|
||||
<data>
|
||||
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1M
|
||||
IDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQv
|
||||
c3RyaWN0LmR0ZCI+CjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1l
|
||||
cXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
|
||||
IGNoYXJzZXQ9VVRGLTgiPgo8bWV0YSBodHRwLWVxdWl2PSJDb250
|
||||
ZW50LVN0eWxlLVR5cGUiIGNvbnRlbnQ9InRleHQvY3NzIj4KPHRp
|
||||
dGxlPjwvdGl0bGU+CjxtZXRhIG5hbWU9IkdlbmVyYXRvciIgY29u
|
||||
dGVudD0iQ29jb2EgSFRNTCBXcml0ZXIiPgo8bWV0YSBuYW1lPSJD
|
||||
b2NvYVZlcnNpb24iIGNvbnRlbnQ9IjE0MDQuMTMiPgo8c3R5bGUg
|
||||
dHlwZT0idGV4dC9jc3MiPgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5
|
||||
Pgo8L2JvZHk+CjwvaHRtbD4K
|
||||
</data>
|
||||
</dict>
|
||||
<key>PROJECT_SETTINGS</key>
|
||||
<dict>
|
||||
<key>BUILD_PATH</key>
|
||||
<dict>
|
||||
<key>PATH</key>
|
||||
<string>../../release</string>
|
||||
<key>PATH_TYPE</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<key>EXCLUDED_FILES</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>PATTERNS_ARRAY</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>REGULAR_EXPRESSION</key>
|
||||
<false/>
|
||||
<key>STRING</key>
|
||||
<string>.DS_Store</string>
|
||||
<key>TYPE</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>PROTECTED</key>
|
||||
<true/>
|
||||
<key>PROXY_NAME</key>
|
||||
<string>Remove .DS_Store files</string>
|
||||
<key>PROXY_TOOLTIP</key>
|
||||
<string>Remove ".DS_Store" files created by the Finder.</string>
|
||||
<key>STATE</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>PATTERNS_ARRAY</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>REGULAR_EXPRESSION</key>
|
||||
<false/>
|
||||
<key>STRING</key>
|
||||
<string>.pbdevelopment</string>
|
||||
<key>TYPE</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>PROTECTED</key>
|
||||
<true/>
|
||||
<key>PROXY_NAME</key>
|
||||
<string>Remove .pbdevelopment files</string>
|
||||
<key>PROXY_TOOLTIP</key>
|
||||
<string>Remove ".pbdevelopment" files created by ProjectBuilder or Xcode.</string>
|
||||
<key>STATE</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>PATTERNS_ARRAY</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>REGULAR_EXPRESSION</key>
|
||||
<false/>
|
||||
<key>STRING</key>
|
||||
<string>CVS</string>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>REGULAR_EXPRESSION</key>
|
||||
<false/>
|
||||
<key>STRING</key>
|
||||
<string>.cvsignore</string>
|
||||
<key>TYPE</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>REGULAR_EXPRESSION</key>
|
||||
<false/>
|
||||
<key>STRING</key>
|
||||
<string>.cvspass</string>
|
||||
<key>TYPE</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>REGULAR_EXPRESSION</key>
|
||||
<false/>
|
||||
<key>STRING</key>
|
||||
<string>.svn</string>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>REGULAR_EXPRESSION</key>
|
||||
<false/>
|
||||
<key>STRING</key>
|
||||
<string>.git</string>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>REGULAR_EXPRESSION</key>
|
||||
<false/>
|
||||
<key>STRING</key>
|
||||
<string>.gitignore</string>
|
||||
<key>TYPE</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>PROTECTED</key>
|
||||
<true/>
|
||||
<key>PROXY_NAME</key>
|
||||
<string>Remove SCM metadata</string>
|
||||
<key>PROXY_TOOLTIP</key>
|
||||
<string>Remove helper files and folders used by the CVS, SVN or Git Source Code Management systems.</string>
|
||||
<key>STATE</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>PATTERNS_ARRAY</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>REGULAR_EXPRESSION</key>
|
||||
<false/>
|
||||
<key>STRING</key>
|
||||
<string>classes.nib</string>
|
||||
<key>TYPE</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>REGULAR_EXPRESSION</key>
|
||||
<false/>
|
||||
<key>STRING</key>
|
||||
<string>designable.db</string>
|
||||
<key>TYPE</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>REGULAR_EXPRESSION</key>
|
||||
<false/>
|
||||
<key>STRING</key>
|
||||
<string>info.nib</string>
|
||||
<key>TYPE</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>PROTECTED</key>
|
||||
<true/>
|
||||
<key>PROXY_NAME</key>
|
||||
<string>Optimize nib files</string>
|
||||
<key>PROXY_TOOLTIP</key>
|
||||
<string>Remove "classes.nib", "info.nib" and "designable.nib" files within .nib bundles.</string>
|
||||
<key>STATE</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>PATTERNS_ARRAY</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>REGULAR_EXPRESSION</key>
|
||||
<false/>
|
||||
<key>STRING</key>
|
||||
<string>Resources Disabled</string>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</array>
|
||||
<key>PROTECTED</key>
|
||||
<true/>
|
||||
<key>PROXY_NAME</key>
|
||||
<string>Remove Resources Disabled folders</string>
|
||||
<key>PROXY_TOOLTIP</key>
|
||||
<string>Remove "Resources Disabled" folders.</string>
|
||||
<key>STATE</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>SEPARATOR</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</array>
|
||||
<key>NAME</key>
|
||||
<string>obs-websocket</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>TYPE</key>
|
||||
<integer>1</integer>
|
||||
<key>VERSION</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
</plist>
|
502
CMakeLists.txt
502
CMakeLists.txt
@ -1,339 +1,181 @@
|
||||
cmake_minimum_required(VERSION 3.16...3.20)
|
||||
cmake_minimum_required(VERSION 3.16...3.25)
|
||||
|
||||
# Version variables
|
||||
project(obs-websocket VERSION 5.0.1)
|
||||
legacy_check()
|
||||
|
||||
set(obs-websocket_VERSION 5.3.5)
|
||||
set(OBS_WEBSOCKET_RPC_VERSION 1)
|
||||
|
||||
|
||||
# Set correct version string
|
||||
if(DEFINED OBS_WEBSOCKET_VERSION_SUFFIX AND NOT OBS_WEBSOCKET_VERSION_SUFFIX STREQUAL "")
|
||||
set(OBS_WEBSOCKET_VERSION "${CMAKE_PROJECT_VERSION}${OBS_WEBSOCKET_VERSION_SUFFIX}")
|
||||
message(WARNING "-----------------------------------\nVersion Suffix provided. OBS_WEBSOCKET_VERSION is now ${OBS_WEBSOCKET_VERSION}\n-----------------------------------")
|
||||
else()
|
||||
set(OBS_WEBSOCKET_VERSION "${CMAKE_PROJECT_VERSION}")
|
||||
option(ENABLE_WEBSOCKET "Enable building OBS with websocket plugin" ON)
|
||||
if(NOT ENABLE_WEBSOCKET)
|
||||
target_disable(obs-websocket)
|
||||
return()
|
||||
endif()
|
||||
|
||||
# Find Qt
|
||||
find_package(Qt6 REQUIRED Core Widgets Svg Network)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
# 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)
|
||||
|
||||
# Prohibit in-source builds
|
||||
file(TO_CMAKE_PATH "${PROJECT_BINARY_DIR}/CMakeLists.txt" _LOC_PATH)
|
||||
if(EXISTS "${LOC_PATH}")
|
||||
message(FATAL_ERROR "obs-websocket: You cannot build in a source directory (or any directory with "
|
||||
"CMakeLists.txt file). Please make a build subdirectory. Feel free to "
|
||||
"remove CMakeCache.txt and CMakeFiles.")
|
||||
endif()
|
||||
unset(_LOC_PATH)
|
||||
|
||||
|
||||
# Allow selection of common build types via UI
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING
|
||||
"OBS build type [Release, RelWithDebInfo, Debug, MinSizeRel]" FORCE)
|
||||
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Release RelWithDebInfo Debug MinSizeRel)
|
||||
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
|
||||
|
||||
# Tell websocketpp not to use system boost
|
||||
add_definitions(-DASIO_STANDALONE)
|
||||
|
||||
|
||||
# Arm build fixes
|
||||
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
|
||||
set(CMAKE_CXX_FLAGS "-mfpu=neon")
|
||||
endif()
|
||||
|
||||
|
||||
# Find libobs
|
||||
if (WIN32 OR APPLE)
|
||||
include(cmake/FindLibObs.cmake)
|
||||
endif()
|
||||
find_package(LibObs REQUIRED)
|
||||
|
||||
|
||||
# Find Qt5
|
||||
find_package(Qt5 REQUIRED COMPONENTS Core Widgets Svg Network)
|
||||
|
||||
|
||||
# Find nlohmann
|
||||
set(JSON_BuildTests OFF CACHE INTERNAL "")
|
||||
add_subdirectory(deps/json)
|
||||
|
||||
|
||||
# Configure files
|
||||
configure_file(
|
||||
src/plugin-macros.h.in
|
||||
../src/plugin-macros.generated.h
|
||||
)
|
||||
configure_file(
|
||||
installer/installer-windows.iss.in
|
||||
../installer/installer-windows.generated.iss
|
||||
)
|
||||
|
||||
|
||||
# Include sources
|
||||
set(obs-websocket_SOURCES
|
||||
src/obs-websocket.cpp
|
||||
src/Config.cpp
|
||||
src/WebSocketApi.cpp
|
||||
src/websocketserver/WebSocketServer.cpp
|
||||
src/websocketserver/WebSocketServer_Protocol.cpp
|
||||
src/websocketserver/rpc/WebSocketSession.cpp
|
||||
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/requesthandler/RequestHandler.cpp
|
||||
src/requesthandler/RequestBatchHandler.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/rpc/Request.cpp
|
||||
src/requesthandler/rpc/RequestBatchRequest.cpp
|
||||
src/requesthandler/rpc/RequestResult.cpp
|
||||
src/forms/SettingsDialog.cpp
|
||||
src/forms/ConnectInfo.cpp
|
||||
src/forms/resources.qrc
|
||||
src/utils/Crypto.cpp
|
||||
src/utils/Json.cpp
|
||||
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_VolumeMeter.cpp
|
||||
src/utils/Platform.cpp
|
||||
src/utils/Compat.cpp
|
||||
deps/qr/cpp/QrCode.cpp)
|
||||
|
||||
set(obs-websocket_HEADERS
|
||||
src/obs-websocket.h
|
||||
src/Config.h
|
||||
src/WebSocketApi.h
|
||||
src/websocketserver/WebSocketServer.h
|
||||
src/websocketserver/types/WebSocketCloseCode.h
|
||||
src/websocketserver/types/WebSocketOpCode.h
|
||||
src/websocketserver/rpc/WebSocketSession.h
|
||||
src/eventhandler/EventHandler.h
|
||||
src/eventhandler/types/EventSubscription.h
|
||||
src/requesthandler/RequestHandler.h
|
||||
src/requesthandler/RequestBatchHandler.h
|
||||
src/requesthandler/types/RequestStatus.h
|
||||
src/requesthandler/types/RequestBatchExecutionType.h
|
||||
src/requesthandler/rpc/Request.h
|
||||
src/requesthandler/rpc/RequestBatchRequest.h
|
||||
src/requesthandler/rpc/RequestResult.h
|
||||
src/forms/SettingsDialog.h
|
||||
src/forms/ConnectInfo.h
|
||||
src/utils/Crypto.h
|
||||
src/utils/Json.h
|
||||
src/utils/Obs.h
|
||||
src/utils/Obs_VolumeMeter.h
|
||||
src/utils/Obs_VolumeMeter_Helpers.h
|
||||
src/utils/Platform.h
|
||||
src/utils/Compat.h
|
||||
src/utils/Utils.h
|
||||
lib/obs-websocket-api.h
|
||||
deps/qr/cpp/QrCode.hpp)
|
||||
|
||||
|
||||
# Platform-independent build settings
|
||||
add_library(obs-websocket MODULE
|
||||
${obs-websocket_SOURCES}
|
||||
${obs-websocket_HEADERS})
|
||||
|
||||
include_directories(
|
||||
"${LIBOBS_INCLUDE_DIR}/../UI/obs-frontend-api"
|
||||
${Qt5Core_INCLUDES}
|
||||
${Qt5Widgets_INCLUDES}
|
||||
${Qt5Svg_INCLUDES}
|
||||
${Qt5Network_INCLUDES}
|
||||
"${CMAKE_SOURCE_DIR}/deps/asio/asio/include"
|
||||
"${CMAKE_SOURCE_DIR}/deps/websocketpp")
|
||||
|
||||
target_link_libraries(obs-websocket
|
||||
libobs
|
||||
Qt5::Core
|
||||
Qt5::Widgets
|
||||
Qt5::Svg
|
||||
Qt5::Network
|
||||
nlohmann_json::nlohmann_json)
|
||||
|
||||
if(PLUGIN_TESTS)
|
||||
target_compile_definitions(obs-websocket PRIVATE PLUGIN_TESTS)
|
||||
endif()
|
||||
|
||||
|
||||
# Windows-specific build settings and tasks
|
||||
if(WIN32)
|
||||
if(NOT DEFINED OBS_FRONTEND_LIB)
|
||||
set(OBS_FRONTEND_LIB "OBS_FRONTEND_LIB-NOTFOUND" CACHE FILEPATH "OBS frontend library")
|
||||
message(FATAL_ERROR "Could not find OBS Frontend API's library!")
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
# Enable Multicore Builds and disable FH4 (to not depend on VCRUNTIME140_1.DLL)
|
||||
add_definitions(/MP /d2FH4-)
|
||||
endif()
|
||||
|
||||
add_definitions(-D_WEBSOCKETPP_CPP11_STL_)
|
||||
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(ARCH_NAME "64bit")
|
||||
set(OBS_BUILDDIR_ARCH "build64")
|
||||
else()
|
||||
set(ARCH_NAME "32bit")
|
||||
set(OBS_BUILDDIR_ARCH "build32")
|
||||
endif()
|
||||
|
||||
include_directories(
|
||||
"${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/UI"
|
||||
)
|
||||
|
||||
target_link_libraries(obs-websocket
|
||||
"${OBS_FRONTEND_LIB}")
|
||||
|
||||
# Release package helper
|
||||
# The "release" folder has a structure similar OBS' one on Windows
|
||||
set(RELEASE_DIR "${PROJECT_SOURCE_DIR}/release")
|
||||
|
||||
add_custom_command(TARGET obs-websocket POST_BUILD
|
||||
# If config is Release or RelWithDebInfo, package release files
|
||||
COMMAND if $<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>>==1 (
|
||||
"${CMAKE_COMMAND}" -E make_directory
|
||||
"${RELEASE_DIR}/obs-plugins/${ARCH_NAME}"
|
||||
)
|
||||
|
||||
COMMAND if $<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>>==1 (
|
||||
"${CMAKE_COMMAND}" -E copy_directory
|
||||
"${PROJECT_SOURCE_DIR}/data"
|
||||
"${RELEASE_DIR}/data/obs-plugins/obs-websocket"
|
||||
)
|
||||
|
||||
COMMAND if $<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>>==1 (
|
||||
"${CMAKE_COMMAND}" -E copy
|
||||
"$<TARGET_FILE:obs-websocket>"
|
||||
"${RELEASE_DIR}/obs-plugins/${ARCH_NAME}"
|
||||
)
|
||||
|
||||
# In Release or RelWithDebInfo mode, copy Qt image format plugins
|
||||
COMMAND if $<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>>==1 (
|
||||
"${CMAKE_COMMAND}" -E make_directory
|
||||
"${RELEASE_DIR}/bin/${ARCH_NAME}/imageformats"
|
||||
)
|
||||
COMMAND if $<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>>==1 (
|
||||
"${CMAKE_COMMAND}" -E copy
|
||||
"${QTDIR}/plugins/imageformats/qicns.dll"
|
||||
"${QTDIR}/plugins/imageformats/qico.dll"
|
||||
"${QTDIR}/plugins/imageformats/qjpeg.dll"
|
||||
"${QTDIR}/plugins/imageformats/qtiff.dll"
|
||||
"${QTDIR}/plugins/imageformats/qwbmp.dll"
|
||||
"${QTDIR}/plugins/imageformats/qwebp.dll"
|
||||
"${RELEASE_DIR}/bin/${ARCH_NAME}/imageformats"
|
||||
)
|
||||
|
||||
# If config is RelWithDebInfo, package PDB file for target
|
||||
COMMAND if $<CONFIG:RelWithDebInfo>==1 (
|
||||
"${CMAKE_COMMAND}" -E copy
|
||||
"$<TARGET_PDB_FILE:obs-websocket>"
|
||||
"${RELEASE_DIR}/obs-plugins/${ARCH_NAME}"
|
||||
)
|
||||
|
||||
# In the Debug configuration, copy to obs-studio dev environment for immediate testing
|
||||
COMMAND if $<CONFIG:Debug>==1 (
|
||||
"${CMAKE_COMMAND}" -E copy
|
||||
"$<TARGET_FILE:obs-websocket>"
|
||||
"${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/obs-plugins/${ARCH_NAME}"
|
||||
)
|
||||
|
||||
COMMAND if $<CONFIG:Debug>==1 (
|
||||
"${CMAKE_COMMAND}" -E copy
|
||||
"$<TARGET_PDB_FILE:obs-websocket>"
|
||||
"${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/obs-plugins/${ARCH_NAME}"
|
||||
)
|
||||
|
||||
COMMAND if $<CONFIG:Debug>==1 (
|
||||
"${CMAKE_COMMAND}" -E make_directory
|
||||
"${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/data/obs-plugins/obs-websocket"
|
||||
)
|
||||
|
||||
COMMAND if $<CONFIG:Debug>==1 (
|
||||
"${CMAKE_COMMAND}" -E copy_directory
|
||||
"${PROJECT_SOURCE_DIR}/data"
|
||||
"${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/data/obs-plugins/obs-websocket"
|
||||
)
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
# Linux-specific build settings and tasks
|
||||
if(UNIX AND NOT APPLE)
|
||||
include(GNUInstallDirs)
|
||||
|
||||
target_compile_options(obs-websocket PRIVATE -Wall -Wextra -Wpedantic -Werror -Wno-missing-field-initializers)
|
||||
|
||||
set_target_properties(obs-websocket PROPERTIES PREFIX "")
|
||||
target_link_libraries(obs-websocket obs-frontend-api)
|
||||
|
||||
# Manually set permissions for locales
|
||||
file(GLOB locale_files data/locale/*.ini)
|
||||
set(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS
|
||||
OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|
||||
|
||||
# Manually set file permissions for binary
|
||||
install(TARGETS obs-websocket LIBRARY
|
||||
DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/obs-plugins"
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
|
||||
|
||||
# OBS on Ubuntu installs into a different directory than most linux distros
|
||||
if(${USE_UBUNTU_FIX})
|
||||
install(TARGETS obs-websocket LIBRARY
|
||||
DESTINATION "/usr/lib/obs-plugins"
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
|
||||
endif()
|
||||
|
||||
install(FILES ${locale_files}
|
||||
DESTINATION "${CMAKE_INSTALL_FULL_DATAROOTDIR}/obs/obs-plugins/obs-websocket/locale")
|
||||
endif()
|
||||
|
||||
# MacOS-specific build settings and tasks
|
||||
if(APPLE)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -fvisibility=default")
|
||||
|
||||
set(CMAKE_SKIP_RPATH TRUE)
|
||||
set_target_properties(obs-websocket PROPERTIES PREFIX "")
|
||||
target_link_libraries(obs-websocket "${OBS_FRONTEND_LIB}")
|
||||
# Find WebSocket++
|
||||
find_package(Websocketpp 0.8 REQUIRED)
|
||||
|
||||
# Find Asio
|
||||
find_package(Asio 1.12.1 REQUIRED)
|
||||
|
||||
add_library(obs-websocket MODULE)
|
||||
add_library(OBS::websocket ALIAS obs-websocket)
|
||||
|
||||
target_sources(
|
||||
obs-websocket
|
||||
PRIVATE # cmake-format: sortable
|
||||
lib/obs-websocket-api.h
|
||||
src/Config.cpp
|
||||
src/Config.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)
|
||||
|
||||
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.h
|
||||
src/eventhandler/EventHandler_Config.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_Scenes.cpp
|
||||
src/eventhandler/EventHandler_Transitions.cpp
|
||||
src/eventhandler/EventHandler_Ui.cpp
|
||||
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/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.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_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/Utils.h)
|
||||
|
||||
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 $<$<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
|
||||
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_link_options(obs-websocket PRIVATE $<$<PLATFORM_ID:Windows>:/IGNORE:4099>)
|
||||
|
||||
set_target_properties_obs(
|
||||
obs-websocket
|
||||
PROPERTIES FOLDER plugins
|
||||
PREFIX ""
|
||||
AUTOMOC ON
|
||||
AUTOUIC ON
|
||||
AUTORCC ON)
|
||||
|
||||
if(OS_WINDOWS)
|
||||
set_property(
|
||||
TARGET obs-websocket
|
||||
APPEND
|
||||
PROPERTY AUTORCC_OPTIONS --format-version 1)
|
||||
endif()
|
||||
|
29
README.md
29
README.md
@ -13,11 +13,13 @@ WebSocket API for OBS Studio.
|
||||
|
||||
## Downloads
|
||||
|
||||
Binaries for Windows, MacOS, and Linux are available in the [Releases](https://github.com/obsproject/obs-websocket/releases) section.
|
||||
**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.
|
||||
|
||||
## Using obs-websocket
|
||||
|
||||
It is **highly recommended** to protect obs-websocket with a password against unauthorized control. To do this, open the "Websocket server settings" dialog under OBS' "Tools" menu. In the settings dialogs, you can enable or disable authentication and set a password for it.
|
||||
It is **highly recommended** to keep obs-websocket protected with a password against unauthorized control. obs-websocket generates a password for you automatically when you load it for the first time. To change this, open the "obs-websocket Settings" dialog under OBS' "Tools" menu. In the settings dialog, you can enable or disable authentication and set a password for it.
|
||||
|
||||
(Psst. You can use `--websocket_port`(value), `--websocket_password`(value), `--websocket_debug`(flag) and `--websocket_ipv4_only`(flag) on the command line to override the configured values.)
|
||||
|
||||
@ -29,16 +31,30 @@ It is **highly recommended** to protect obs-websocket with a password against un
|
||||
|
||||
### Client software
|
||||
|
||||
- (No known clients supporting 5.0.0 at the moment. Ping us in the Discord if you have one!)
|
||||
- [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
|
||||
- Rust: [obws](https://github.com/dnaka91/obws/tree/v5-api) by dnaka91
|
||||
- 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).
|
||||
@ -49,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
|
||||
|
||||
|
@ -1,107 +0,0 @@
|
||||
# This module can be copied and used by external plugins for OBS
|
||||
#
|
||||
# Once done these will be defined:
|
||||
#
|
||||
# LIBOBS_FOUND
|
||||
# LIBOBS_INCLUDE_DIRS
|
||||
# LIBOBS_LIBRARIES
|
||||
|
||||
find_package(PkgConfig QUIET)
|
||||
if (PKG_CONFIG_FOUND)
|
||||
pkg_check_modules(_OBS QUIET obs libobs)
|
||||
endif()
|
||||
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(_lib_suffix 64)
|
||||
else()
|
||||
set(_lib_suffix 32)
|
||||
endif()
|
||||
|
||||
if(DEFINED CMAKE_BUILD_TYPE)
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(_build_type_base "debug")
|
||||
else()
|
||||
set(_build_type_base "release")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_path(LIBOBS_INCLUDE_DIR
|
||||
NAMES obs.h
|
||||
HINTS
|
||||
ENV obsPath${_lib_suffix}
|
||||
ENV obsPath
|
||||
${obsPath}
|
||||
PATHS
|
||||
/usr/include /usr/local/include /opt/local/include /sw/include
|
||||
PATH_SUFFIXES
|
||||
libobs
|
||||
)
|
||||
|
||||
function(find_obs_lib base_name repo_build_path lib_name)
|
||||
string(TOUPPER "${base_name}" base_name_u)
|
||||
|
||||
if(DEFINED _build_type_base)
|
||||
set(_build_type_${repo_build_path} "${_build_type_base}/${repo_build_path}")
|
||||
set(_build_type_${repo_build_path}${_lib_suffix} "${_build_type_base}${_lib_suffix}/${repo_build_path}")
|
||||
endif()
|
||||
|
||||
find_library(${base_name_u}_LIB
|
||||
NAMES ${_${base_name_u}_LIBRARIES} ${lib_name} lib${lib_name}
|
||||
HINTS
|
||||
ENV obsPath${_lib_suffix}
|
||||
ENV obsPath
|
||||
${obsPath}
|
||||
${_${base_name_u}_LIBRARY_DIRS}
|
||||
PATHS
|
||||
/usr/lib /usr/local/lib /opt/local/lib /sw/lib
|
||||
PATH_SUFFIXES
|
||||
lib${_lib_suffix} lib
|
||||
libs${_lib_suffix} libs
|
||||
bin${_lib_suffix} bin
|
||||
../lib${_lib_suffix} ../lib
|
||||
../libs${_lib_suffix} ../libs
|
||||
../bin${_lib_suffix} ../bin
|
||||
# base repo non-msvc-specific search paths
|
||||
${_build_type_${repo_build_path}}
|
||||
${_build_type_${repo_build_path}${_lib_suffix}}
|
||||
build/${repo_build_path}
|
||||
build${_lib_suffix}/${repo_build_path}
|
||||
# base repo msvc-specific search paths on windows
|
||||
build${_lib_suffix}/${repo_build_path}/Debug
|
||||
build${_lib_suffix}/${repo_build_path}/RelWithDebInfo
|
||||
build/${repo_build_path}/Debug
|
||||
build/${repo_build_path}/RelWithDebInfo
|
||||
)
|
||||
endfunction()
|
||||
|
||||
find_obs_lib(LIBOBS libobs obs)
|
||||
|
||||
if(MSVC)
|
||||
find_obs_lib(W32_PTHREADS deps/w32-pthreads w32-pthreads)
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Libobs DEFAULT_MSG LIBOBS_LIB LIBOBS_INCLUDE_DIR)
|
||||
mark_as_advanced(LIBOBS_INCLUDE_DIR LIBOBS_LIB)
|
||||
|
||||
if(LIBOBS_FOUND)
|
||||
if(MSVC)
|
||||
if (NOT DEFINED W32_PTHREADS_LIB)
|
||||
message(FATAL_ERROR "Could not find the w32-pthreads library" )
|
||||
endif()
|
||||
|
||||
set(W32_PTHREADS_INCLUDE_DIR ${LIBOBS_INCLUDE_DIR}/../deps/w32-pthreads)
|
||||
endif()
|
||||
|
||||
set(LIBOBS_INCLUDE_DIRS ${LIBOBS_INCLUDE_DIR} ${W32_PTHREADS_INCLUDE_DIR})
|
||||
set(LIBOBS_LIBRARIES ${LIBOBS_LIB} ${W32_PTHREADS_LIB})
|
||||
include(${LIBOBS_INCLUDE_DIR}/../cmake/external/ObsPluginHelpers.cmake)
|
||||
|
||||
# allows external plugins to easily use/share common dependencies that are often included with libobs (such as FFmpeg)
|
||||
if(NOT DEFINED INCLUDED_LIBOBS_CMAKE_MODULES)
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${LIBOBS_INCLUDE_DIR}/../cmake/Modules/")
|
||||
set(INCLUDED_LIBOBS_CMAKE_MODULES true)
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "Could not find the libobs library" )
|
||||
endif()
|
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."
|
41
data/locale/ar-SA.ini
Normal file
41
data/locale/ar-SA.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="التحكم عن بعد في استوديو 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.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 قطع الاتصال."
|
41
data/locale/ca-ES.ini
Normal file
41
data/locale/ca-ES.ini
Normal file
@ -0,0 +1,41 @@
|
||||
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 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. 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"
|
||||
OBSWebSocket.Settings.GeneratePassword="Genera una contrasenya"
|
||||
OBSWebSocket.Settings.ServerPort="Port del servidor"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Mostra la informació de connexió"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Atenció: Actualment en directe"
|
||||
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="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 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="Expulsar?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Expulsa"
|
||||
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 WebSocket"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Client %1 identificat."
|
||||
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 WebSocket"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Client %1 desconnectat."
|
41
data/locale/cs-CZ.ini
Normal file
41
data/locale/cs-CZ.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="Vzdálené ovládání OBS Studia přes 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ě"
|
||||
OBSWebSocket.Settings.DebugEnable="Povolit podrobné protokolování"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Zapne podrobné protokolování pro aktuální instanci OBS. Nastavení není zachováno mezi spuštěními.\nPoužijte --websocket_debug pro povlení při spuštění."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Nastavení serveru"
|
||||
OBSWebSocket.Settings.AuthRequired="Povolit přihlašování"
|
||||
OBSWebSocket.Settings.Password="Heslo serveru"
|
||||
OBSWebSocket.Settings.GeneratePassword="Vygenerovat heslo"
|
||||
OBSWebSocket.Settings.ServerPort="Port serveru"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Zobrazit info o připojení"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Varování: Aktuálně vysíláte"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Vypadá to, že výstup (vysílání, nahrávání etc.) je právě aktivní."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Opravdu si přejete zobrazit údaje k připojení?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Varování: Potencionální bezpečnostní problém"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket ukládá heslo jako prostý text. Důrazně doporučujeme použití hesla generovaného pomocí obs-websocket."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Opravdu si přejete použít vaše vlastní heslo?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Chyba: Neplatná konfigurace"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Musíte použít heslo o délce nejméně 6 znaků."
|
||||
OBSWebSocket.SessionTable.Title="Připojené relace WebSocketu"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Vzdálená adresa"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Délka relace"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Zprávy do/z"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Identifikované"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Vykopnout?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Vykopnout"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Připojení k WebSocket serveru"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Kopírovat"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="IP adresa serveru (nejlepší odhad)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Port serveru"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Heslo serveru"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Přihlášení zakázáno]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="QR pro připojení"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Nové WebSocket připojení"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Klient %1 identifikován."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Chyba přihlášení k WebSocketu"
|
||||
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."
|
40
data/locale/da-DK.ini
Normal file
40
data/locale/da-DK.ini
Normal file
@ -0,0 +1,40 @@
|
||||
OBSWebSocket.Plugin.Description="Fjernstyring af OBS Studio via WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Plugin-indstillinger"
|
||||
OBSWebSocket.Settings.ServerEnable="Aktivér WebSocket-server"
|
||||
OBSWebSocket.Settings.AlertsEnable="Aktivér Systembakke Alarmer"
|
||||
OBSWebSocket.Settings.DebugEnable="Aktivér Fejlfindingslogning"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Aktivér fejlfindingslogning for den aktuelle forekomst af OBS. Vedvarer ikke ved indlæsning.\nBrug --websocket_debug til at aktivere ved indlæsning."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Serverindstillinger"
|
||||
OBSWebSocket.Settings.AuthRequired="Aktivér godkendelse"
|
||||
OBSWebSocket.Settings.Password="Serveradgangskode"
|
||||
OBSWebSocket.Settings.GeneratePassword="Generér adgangskode"
|
||||
OBSWebSocket.Settings.ServerPort="Serverport"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Vis forbindelsesinfo"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Advarsel: Live i øjeblikket"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Det ser ud til, at et output (stream, optagelse mv.) pt. er aktiv."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Sikker på, at din forbindelsesinfo skal vises?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Advarsel: Potentielt sikkerhedsproblem"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket gemmer serverens adgangskode som alm. tekst. Det anbefales kraftigt at bruge en adgangskode genereret af obs-websocket."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Sikker på, at din egen adgangskoder skal bruges?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Fejl: Ugyldig opsætning"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="En adgangskode på mindst 6 tegn skal bruges."
|
||||
OBSWebSocket.SessionTable.Title="Forbundne WebSocket-sessioner"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Fjernadresse"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Sessionsvarighed"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Beskeder Ind/Ud"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Identificeret"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Fjern?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Fjern"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="WebSocket-forbindelsesinfo"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Kopiér"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="Server-IP (bedste gæt)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Serverport"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Serveradgangskode"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Godk. deaktiveret]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="Forbindelses-QR"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Ny WebSocket-forbindelse"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Klient %1 identificeret."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket godkendelsesfejl"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Klienten %1 kunne ikke godkendes."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket-klient frakoblet"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Klient %1 frakoblet."
|
41
data/locale/de-DE.ini
Normal file
41
data/locale/de-DE.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="OBS Studio per WebSocket fernsteuern"
|
||||
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 Starten aktiviert wird."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Servereinstellungen"
|
||||
OBSWebSocket.Settings.AuthRequired="Authentifizierung aktivieren"
|
||||
OBSWebSocket.Settings.Password="Serverpasswort"
|
||||
OBSWebSocket.Settings.GeneratePassword="Passwort generieren"
|
||||
OBSWebSocket.Settings.ServerPort="Serverport"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Verbindungsinformationen anzeigen"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Achtung: Zurzeit live"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Derzeit ist eine Ausgabe (Stream, Aufnahme, etc.) aktiv."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Möchten Sie wirklich Ihre Verbindungsinformationen anzeigen?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Achtung: Mögliches Sicherheitsproblem"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket speichert das Serverpasswort unverschlüsselt, daher ist ein von obs-websocket generiertes Passwort sehr zu empfehlen."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Möchten Sie wirklich ein eigenes Passwort verwenden?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Fehler: Ungültige Konfiguration"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Sie müssen ein Passwort mit mindestens 6 Zeichen verwenden."
|
||||
OBSWebSocket.SessionTable.Title="Verbundene WebSocket-Sitzungen"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Remote-Adresse"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Sitzungsdauer"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Nachrichten rein/raus"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Identifiziert"
|
||||
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.ServerPort="Serverport"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Serverpasswort"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="Authentifizierung deaktiviert"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="QR-Code zum Verbinden"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Neue WebSocket-Verbindung"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Client %1 identifiziert."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket-Authentifizierungsfehler"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Client %1 konnte sich nicht authentifizieren."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket-Client getrennt"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Client %1 getrennt."
|
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"
|
||||
|
41
data/locale/es-ES.ini
Normal file
41
data/locale/es-ES.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="Control remoto de OBS Studio a través de 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"
|
||||
OBSWebSocket.Settings.DebugEnable="Habilitar registro de depuración"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Habilita el registro de depuración para la instancia actual de OBS. No persiste al cargar.\nUse --websocket_debug para activar al cargar."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Ajustes del servidor"
|
||||
OBSWebSocket.Settings.AuthRequired="Habilitar autenticación"
|
||||
OBSWebSocket.Settings.Password="Contraseña del servidor"
|
||||
OBSWebSocket.Settings.GeneratePassword="Generar contraseña"
|
||||
OBSWebSocket.Settings.ServerPort="Puerto del servidor"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Mostrar información de conexión"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Advertencia: Actualmente en directo"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Parece que una salida (emisión, grabación, etc.) está activa."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="¿Estás seguro de que quieres mostrar tu información de conexión?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Advertencia: Problema potencial de seguridad"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket almacena la contraseña del servidor como texto plano. El uso de una contraseña generada por obs-websocket es altamente recomendable."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="¿Está seguro de que desea utilizar su propia contraseña?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Error: Configuración no válida"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Debe utilizar una contraseña de 6 o más caracteres."
|
||||
OBSWebSocket.SessionTable.Title="Sesiones conectadas de WebSocket"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Dirección remota"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Duración de la sesión"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Entrada/Salida de mensajes"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Identificado"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="¿Expulsar?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Expulsar"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Información de conexión de WebSocket"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Copiar"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="IP del servidor (mejor propuesta)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Puerto del servidor"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Contraseña del servidor"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Autenticación desactivada]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="QR de conexión"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Nueva conexión WebSocket"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Cliente %1 identificado."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Fallo de autenticación WebSocket"
|
||||
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."
|
41
data/locale/et-EE.ini
Normal file
41
data/locale/et-EE.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="OBS Studio kaugjuhtimine WebSocketi kaudu"
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket serveri seaded"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Plugina seaded"
|
||||
OBSWebSocket.Settings.ServerEnable="Luba WebSocket server"
|
||||
OBSWebSocket.Settings.AlertsEnable="Luba hoiatused tegumireal"
|
||||
OBSWebSocket.Settings.DebugEnable="Luba silumislogimine"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Lubab OBS-i praeguse eksemplari silumislogimise. Ei püsi laadimisel.\nLaadimisel lubamiseks kasutage --websocket_debug."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Serveri seaded"
|
||||
OBSWebSocket.Settings.AuthRequired="Luba autentimine"
|
||||
OBSWebSocket.Settings.Password="Serveri salasõna"
|
||||
OBSWebSocket.Settings.GeneratePassword="Loo salasõna"
|
||||
OBSWebSocket.Settings.ServerPort="Serveri port"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Näita ühenduse infot"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Hoiatus: hetkel otseülekandes"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Näib, et väljund (voogedastus, salvestus jne) on hetkel aktiivne."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Kas oled kindel, et soovid oma ühenduse teavet näidata?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Hoiatus: võimalik turvaprobleem"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket salvestab serveri salasõna lihtsa tekstina. obs-websocket'i poolt loodud salasõna kasutamine on väga soovitatav."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Kas oled kindel, et soovid kasutada oma salasõna?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Viga: vigane konfiguratsioon"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Pead kasutama salasõna, mis koosneb 6 või enamast tähemärgist."
|
||||
OBSWebSocket.SessionTable.Title="Ühendatud WebSocket'i seansid"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Kaugjuhtimise aadress"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Seansi kestvus"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Sõnumid sisse/välja"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Tuvastatud"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Eemalda?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Eemalda"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="WebSocket'i ühenduse info"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Kopeeri"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="Serveri IP (parim oletus)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Sreveri port"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Serveri salasõna"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Autentimine keelatud]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="Ühenda QR"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Uus WebSocket'i ühendus"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Klient %1 tuvastatud."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket autentimise tõrge"
|
||||
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."
|
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."
|
41
data/locale/fa-IR.ini
Normal file
41
data/locale/fa-IR.ini
Normal file
@ -0,0 +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 قطع شد."
|
41
data/locale/fi-FI.ini
Normal file
41
data/locale/fi-FI.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="OBS Studion etähallinta WebSocketin kautta"
|
||||
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"
|
||||
OBSWebSocket.Settings.DebugEnable="Ota vianjäljityslokitus käyttöön"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Ottaa käyttöön OBS:n virheenkorjauksen lokin. Ei kuormituksen aikana.\nKäytä --websocket_debug ottaaksesi latauksen käyttöön."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Palvelimen asetukset"
|
||||
OBSWebSocket.Settings.AuthRequired="Ota tunnistautuminen käyttöön"
|
||||
OBSWebSocket.Settings.Password="Palvelimen salasana"
|
||||
OBSWebSocket.Settings.GeneratePassword="Luo salasana"
|
||||
OBSWebSocket.Settings.ServerPort="Palvelimen portti"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Näytä yhteyden tiedot"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Varoitus: Suora lähetys"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Näyttää siltä, että jokin lähetys (suoratoisto, tallennus jne.) on tällä hetkellä aktiivinen."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Oletko varma, että haluat näyttää sinun yhteyden tiedot?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Varoitus: Mahdollinen tietoturvaongelma"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket tallentaa palvelimen salasanan pelkkänä tekstinä. Obs-websocketin luoman salasanan käyttäminen on erittäin suositeltavaa."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Haluatko varmasti käyttää omaa salasanaasi?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Virhe: Virheellinen määritys"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Sinun täytyy käyttää salasanaa, jossa on vähintään 6 merkkiä."
|
||||
OBSWebSocket.SessionTable.Title="Yhdistetyt WebSocket-istunnot"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Etäosoite"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Istunnon kesto"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Viestejä sisään/ulos"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Tunnistettu"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Potki?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Potki"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="WebSocket-yhteystiedot"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Kopioi"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="Palvelimen IP (paras arvaus)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Palvelimen portti"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Palvelimen salasana"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Todennus poistettu]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="Yhdistä QR"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Uusi WebSocket-yhteys"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Asiakas %1 tunnistettu."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket-tunnistusvirhe"
|
||||
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."
|
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."
|
41
data/locale/fr-FR.ini
Normal file
41
data/locale/fr-FR.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="Contrôle à distance d'OBS Studio via WebSocket"
|
||||
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"
|
||||
OBSWebSocket.Settings.DebugEnable="Activer les journaux de débogage"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Active la journalisation du débogage pour l'instance actuelle d'OBS. Ne persiste pas au chargement.\nUtilisez --websocket_debug pour l'activer lors du chargement."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Paramètres du serveur"
|
||||
OBSWebSocket.Settings.AuthRequired="Utiliser l'authentification"
|
||||
OBSWebSocket.Settings.Password="Mot de passe du serveur"
|
||||
OBSWebSocket.Settings.GeneratePassword="Générer un mot de passe"
|
||||
OBSWebSocket.Settings.ServerPort="Port du serveur"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Afficher les informations de connexion"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Avertissement : Actuellement en direct"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Il semble qu'une sortie (stream, enregistrement, etc.) soit actuellement active."
|
||||
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(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 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"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Messages entrant/sortant"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Identifié"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Expulser ?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Expulser"
|
||||
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 du serveur"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Authentification désactivée]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="QR code de connexion"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Nouvelle connexion WebSocket"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Client %1 identifié."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Échec de l'authentification WebSocket"
|
||||
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é."
|
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."
|
41
data/locale/he-IL.ini
Normal file
41
data/locale/he-IL.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="הפעלת התראות במגש המערכת"
|
||||
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 התנתק."
|
41
data/locale/hi-IN.ini
Normal file
41
data/locale/hi-IN.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="WebSocket के माध्यम से OBS स्टूडियो का रिमोट-कंट्रोल"
|
||||
OBSWebSocket.Settings.DialogTitle="वेबसॉकेट सर्वर सेटिंग्स"
|
||||
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.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="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="वेबसॉकेट क्लाइंट डिस्कनेक्ट हो गया"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="क्लाइंट %1 डिस्कनेक्ट हो गया."
|
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"
|
41
data/locale/hu-HU.ini
Normal file
41
data/locale/hu-HU.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="Az OBS Studio távvezérlése WebSocketen keresztül"
|
||||
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"
|
||||
OBSWebSocket.Settings.DebugEnable="Hibakeresési naplózás bekapcsolása"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Bekapcsolja a hibakeresési naplózást a jelenlegi OBS-példánynál. Betöltéskor nem marad meg.\nA betöltéskor történő bekapcsoláshoz használja a --websocket_debug kapcsolót."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Kiszolgálóbeállítások"
|
||||
OBSWebSocket.Settings.AuthRequired="Hitelesítés bekapcsolása"
|
||||
OBSWebSocket.Settings.Password="Kiszolgáló jelszava"
|
||||
OBSWebSocket.Settings.GeneratePassword="Jelszó előállítása"
|
||||
OBSWebSocket.Settings.ServerPort="Kiszolgáló portja"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Kapcsolódási információ megjelenítése"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Figyelmeztetés: Élő adásban van"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Úgy néz ki, hogy egy kimenet (közvetítés, felvétel, stb.) jelenleg aktív."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Biztos, hogy megjeleníti a kapcsolódási információkat?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Figyelmeztetés: lehetséges biztonsági probléma"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="Az obs-websocket titkosítatlan szövegként tárolja a kiszolgáló jelszavát. Ajánlatos egy az obs-websocket általelőállított jelsztó használni."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Biztos, hogy a saját jelszavát használja?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Hiba: Érvénytelen konfiguráció"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Legalább 6 karakterből álló jelszót kell használnia."
|
||||
OBSWebSocket.SessionTable.Title="Kapcsolódott WebSocket munkamenetek"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Távoli cím"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Munkamenet hossza"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Bejövő és kimenő üzenetek"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Azonosított"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Kirúgás?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Kirúgás"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="WebSocket kapcsolati információk"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Másolás"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="Kiszolgáló IP (legjobb tipp)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Kiszolgáló portja"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Kiszolgáló jelszava"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Hitelesítés kikapcsolva]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="Kapcsolódási QR-kód"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Új WebSocket-kapcsolat"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="A(z) %1 kliens azonosítva."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket hitelesítési hiba"
|
||||
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"
|
41
data/locale/hy-AM.ini
Normal file
41
data/locale/hy-AM.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="Միացնել սկուտեղի ծանուցումները"
|
||||
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-websock-ի կողմից ստեղծված գաղտնաբառը:"
|
||||
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="Սերվերի ԻԱ (լավագույն ենթադրություն)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Սերվերի պորտ"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Սերվերի գաղտնաբառը"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Թույլտվությունն անջատված է]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="Միացման ԱԱ կոդը"
|
||||
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 հաճախորդն անջատվել է:"
|
41
data/locale/id-ID.ini
Normal file
41
data/locale/id-ID.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="Kendali jarak jauh OBS Studio melalui 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"
|
||||
OBSWebSocket.Settings.DebugEnable="Aktifkan Pencatatan Awakutu"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Aktifkan pencatatan awakutu untuk permintaan OBS saat ini. Tidak terus aktif saat memuat.\nGunakan --websocket_debug agar diaktifkan saat memuat."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Pengaturan Server"
|
||||
OBSWebSocket.Settings.AuthRequired="Aktifkan Autentikasi"
|
||||
OBSWebSocket.Settings.Password="Kata Sandi Server"
|
||||
OBSWebSocket.Settings.GeneratePassword="Ciptakan Kata Sandi"
|
||||
OBSWebSocket.Settings.ServerPort="Port Server"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Tampilkan Informasi Koneksi"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Peringatan: Saat Ini Siaran Langsung"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Sepertinya sebuah output (stream, rekaman, dll.) sedang aktif."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Anda yakin ingin melihat informasi koneksi Anda?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Peringatan: Potensi Masalah Keamanan"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket menyimpan kata sandi server sebagai teks biasa. Sangat disarankan untuk menggunakan kata sandi yang diciptakan oleh obs-websocket."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Anda yakin ingin menggunakan kata sandi Anda sendiri?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Galat: Konfigurasi Tidak Berlaku"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Anda harus menggunakan kata sandi yang minimal 6 karakter atau lebih."
|
||||
OBSWebSocket.SessionTable.Title="Sesi WebSocket yang Terhubung"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Alamat Kendali"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Durasi Sesi"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Pesan Masuk/Keluar"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Teridentifikasi"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Putuskan?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Putuskan"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Informasi Koneksi WebSocket"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Salin"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="IP Server (Tebakan Terbaik)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Port Server"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Kata Sandi Server"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Autentikasi Dinonaktifkan]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="Hubungkan QR"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Koneksi WebSocket Baru"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Klien %1 teridentifikasi."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Autentikasi WebSocket Gagal"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Klien %1 gagal mengautentikasi."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Klien WebSocket Terputus"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Klien %1 terputus."
|
41
data/locale/it-IT.ini
Normal file
41
data/locale/it-IT.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="Controllo remoto di OBS Studio tramite 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"
|
||||
OBSWebSocket.Settings.DebugEnable="Abilita registrazione debug"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Abilita la registrazione debug per l'istanza attuale di OBS.\nNon rimane attiva per il prossimo caricamento.\nUsa --websocket_debug per abilitarla al caricamento."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Impostazioni server"
|
||||
OBSWebSocket.Settings.AuthRequired="Abilita autenticazione"
|
||||
OBSWebSocket.Settings.Password="Password server"
|
||||
OBSWebSocket.Settings.GeneratePassword="Genera password"
|
||||
OBSWebSocket.Settings.ServerPort="Porta server"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Visualizza informazioni di connessione"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Attenzione: attualmente in diretta"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Sembra che sia attualmente attivo un output (stream, registrazione, ecc.)."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Sei sicuro di voler visualizzare le tue informazioni di connessione?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Avvertimento: potenziale problema di sicurezza"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket memorizza la password del server come testo normale.\nTi consigliamo vivamente di usare una password generata da obs-websocket."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Sei sicuro di voler usare la tua password?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Errore: configurazione non valida"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="È necessario usare una password di 6 o più caratteri."
|
||||
OBSWebSocket.SessionTable.Title="Sessioni WebSocket connesse"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Indirizzo remoto"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Durata sessione"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Messaggi in entrata/uscita"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Identificato"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Chiudere?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Chiudi"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Informazioni sulla connessione WebSocket"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Copia"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="IP server (miglior ipotesi)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Porta server"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Password server"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Autorizzazione disabilitata]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="QR connessione"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Nuova connessione WebSocket"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Identificato client %1."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Errore di autenticazione WebSocket"
|
||||
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."
|
41
data/locale/ja-JP.ini
Normal file
41
data/locale/ja-JP.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="WebSocketを介したOBS Studioのリモートコントロール"
|
||||
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.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="メッセージ In/Out"
|
||||
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 が切断されました。"
|
41
data/locale/ka-GE.ini
Normal file
41
data/locale/ka-GE.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="სისტემური არეში ცნობების ჩართვა"
|
||||
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 გამოთიშეულია."
|
41
data/locale/kmr-TR.ini
Normal file
41
data/locale/kmr-TR.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="Rêveberina ji dûr ve ya OBS Studio bi riya 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"
|
||||
OBSWebSocket.Settings.DebugEnable="Têketinê serrastkirinê çalak bike"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Têketinê serrastkirinê çalak bike ji bo danişîna heyî ya OBS. Li ser barkirinê nadomîne.\nBikaranîna --websocket_debug rê dide bo çalakkirina barkirinê."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Sazkariyên rajekar"
|
||||
OBSWebSocket.Settings.AuthRequired="Rastandinê çalak bike"
|
||||
OBSWebSocket.Settings.Password="Borînpeyva rajekar"
|
||||
OBSWebSocket.Settings.GeneratePassword="Borînpeyvê çê bike"
|
||||
OBSWebSocket.Settings.ServerPort="Dergeha rajekar"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Zanyariyên girêdanê nîşan bide"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Hişyarî: Weşan zindî ye"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Xuye dike ku deraneke (weşan, tomarkirin, hwd.) niha çalak e."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Ma tu bi rastî dixwazî zanyariya girêdana xwe nîşan bidî?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Hişyarî: Pirsgirêka ewlekariya potansiyel"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket borînpeyva rajekarê wekî nivîsek sade hiltîne. Bikaranîna borînpeyva ku ji hêla obs-websocket ve hatî çêkirin pir tê pêşniyar kirin."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Ma tu dixwazî ku borînpeyva xwe bi kar bînî?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Çewtî: Pevsazkirin ne derbasdar e"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Divê tu borînpeyvekê bi kar bînî ku ji 6 an jî bêtir tîpan be."
|
||||
OBSWebSocket.SessionTable.Title="Danişînên WebSocket ên girêdayî"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Navnîşana ji dûr ve"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Dirêjahiya danişînê"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Peyamên Çûyî/Hatî"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Naskirî"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Derxîne?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Derxîne"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Zanyariyên girêdanê WebSocket"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Jê bigire"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="IP ya rajekar (Çêtirîn texmîn)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Dergeha rajekar"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Borînpeyva rajekar"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Rastandin neçalak e]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="QR girê bide"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Girêdana bû ya WebSocket"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Rajegir %1 hate naskirin."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Rastandina WebSocket têk çû"
|
||||
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û."
|
41
data/locale/ko-KR.ini
Normal file
41
data/locale/ko-KR.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="WebSocket으로 OBS Studio를 원격 제어"
|
||||
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.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 연결 해제됨."
|
41
data/locale/ms-MY.ini
Normal file
41
data/locale/ms-MY.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="Kawalan-jauh OBS Studio melalui 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"
|
||||
OBSWebSocket.Settings.DebugEnable="Benarkan Pegelogan Nyahpepijat"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Membenarkan pengelogan nyahpepijat bagi kejadian OBS semasa. Tidak ditetapkan ketika muat.\nGuna --websocket_debug untuk didayakan ketika muat."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Tetapan Pelayan"
|
||||
OBSWebSocket.Settings.AuthRequired="Benarkan Pengesahihan"
|
||||
OBSWebSocket.Settings.Password="Kata Laluan Pelayan"
|
||||
OBSWebSocket.Settings.GeneratePassword="Jana Kata Lauan"
|
||||
OBSWebSocket.Settings.ServerPort="Port Pelayan"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Tunjuk Maklumat Sambungan"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Amaran: Sedang Berlangsung"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Nampaknya ada output (strim, rakaman, dll.) masih aktif."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Anda pasti mahu menunjukkan maklumat sambungan anda?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Amaran: Isu Keselamatan Mungkin Ada"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket menyimpan kata laluan pelayan dalam bentuk teks biasa. Menggunakan kata laluan yang dijana oleh obs-websocket iadalah sangat disarankan."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Adakah anda pasti mahu menggunakan kata laluan anda sendiri?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Ralat: Konfigurasi Tidak Sah"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Anda mesti guna satu kata laluan yang terdiri daripada 6 atau lebih aksara."
|
||||
OBSWebSocket.SessionTable.Title="Sesi WebSocket Bersambung"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Alamat Jauh"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Tempoh Sesi"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Mesej Masuk/Keluar"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Dikenal Pasti"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Tendang?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Tendang"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Maklumat Sambungan WebSocket"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Salin"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="IP Pelayan (Tekaan Terbaik)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Port Pelayan"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Kata Laluan Pelayan"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Izin Dilumpuh]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="QR Sambungan"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Sambungan WebSocket Baharu"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Klien %1 dikenal past."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Kegagalan Pengesahihan WebSocket"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Klien %1 gagal disahihkan."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Klien WebSocket Terputus"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Klien %1 terputus."
|
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."
|
41
data/locale/nl-NL.ini
Normal file
41
data/locale/nl-NL.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="Op afstand bediening van OBS Studio via WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket Server Instellingen"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Plugin instellingen"
|
||||
OBSWebSocket.Settings.ServerEnable="WebSocket server inschakelen"
|
||||
OBSWebSocket.Settings.AlertsEnable="Systeemtray meldingen inschakelen"
|
||||
OBSWebSocket.Settings.DebugEnable="Activeer debug logging"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Schakelt debug logboekregistratie in voor de huidige instantie van OBS. Blijft niet meer te laden.\nGebruik --websocket_debug om bij laden in te schakelen."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Serverinstellingen"
|
||||
OBSWebSocket.Settings.AuthRequired="Authenticatie inschakelen"
|
||||
OBSWebSocket.Settings.Password="Server wachtwoord"
|
||||
OBSWebSocket.Settings.GeneratePassword="Wachtwoord genereren"
|
||||
OBSWebSocket.Settings.ServerPort="Serverpoort"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Toon verbindingsinformatie"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Waarschuwing: Op dit moment live"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Het lijkt erop dat een output (stream, opname, etc.) momenteel actief is."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Weet je zeker dat je je verbindingsinformatie wilt laten zien?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Waarschuwing: potentieel beveiligingsprobleem"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket slaat het serverwachtwoord op als platte tekst. Het gebruik van een wachtwoord dat wordt gegenereerd door een obs-websocket wordt sterk aanbevolen."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Weet u zeker dat u uw eigen wachtwoord wilt gebruiken?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Fout: ongeldige configuratie"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="U moet een wachtwoord gebruiken van 6 of meer tekens."
|
||||
OBSWebSocket.SessionTable.Title="Verbonden WebSocket Sessies"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Extern adres"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Sessie duur"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Berichten In/Uit"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Geïdentificeerd"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Verwijderen?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Verwijderen"
|
||||
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"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Client %1 geïdentificeerd."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket Authenticatie Fout"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Authenticatie van client %1 mislukt."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket Client losgekoppeld"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Client %1 ontkoppeld."
|
41
data/locale/pl-PL.ini
Normal file
41
data/locale/pl-PL.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="Zdalna kontrola OBS Studio przez 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"
|
||||
OBSWebSocket.Settings.DebugEnable="Włącz logowanie debugowania"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Włącza logowanie debugowania dla bieżącej instancji OBS. Opcja nie jest włączana przy ładowaniu aplikacji.\nUżyj --websocket_debug, aby włączyć logowanie debugowania przy ładowaniu aplikacji."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Ustawienia serwera"
|
||||
OBSWebSocket.Settings.AuthRequired="Włącz uwierzytelnianie"
|
||||
OBSWebSocket.Settings.Password="Hasło serwera"
|
||||
OBSWebSocket.Settings.GeneratePassword="Wygeneruj hasło"
|
||||
OBSWebSocket.Settings.ServerPort="Port serwera"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Pokaż informacje połączenia"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Ostrzeżenie: Trwa transmisja lub nagranie"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Wygląda na to, że trwa transmisja lub nagrywanie."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Czy na pewno chcesz pokazać informacje połączenia?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Ostrzeżenie: Potencjalny problem bezpieczeństwa"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket przechowuje hasło serwera jako zwykły tekst. Wysoce zalecane jest użycie hasła generowanego przez obs-websocket."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Czy na pewno chcesz użyć własnego hasła?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Błąd: Nieprawidłowa konfiguracja"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Musisz użyć hasła, które ma 6 lub więcej znaków."
|
||||
OBSWebSocket.SessionTable.Title="Podłączone sesje WebSocket"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Adres zdalny"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Czas trwania sesji"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Wiadomości przychodzące/wychodzące"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Zidentyfikowany"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Odłączyć?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Odłącz"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Informacje o połączeniu WebSocket"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Kopiuj"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="IP serwera (ustalone w miarę możliwości)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Port serwera"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Hasło serwera"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Autoryzacja wyłączona]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="Kod QR połączenia"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Nowe połączenie WebSocket"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Klient %1 zidentyfikowany."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Błąd uwierzytelniania WebSocket"
|
||||
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."
|
41
data/locale/pt-BR.ini
Normal file
41
data/locale/pt-BR.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="Controle remoto do OBS Studio através de 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"
|
||||
OBSWebSocket.Settings.DebugEnable="Habilitar log de depuração"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Ativa o registro de depuração para a instância atual do OBS. Não persiste ao carregar.\nUse --websocket_debug para ativar no carregamento."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Configurações de Servidor"
|
||||
OBSWebSocket.Settings.AuthRequired="Habilitar Autenticação"
|
||||
OBSWebSocket.Settings.Password="Senha de Servidor"
|
||||
OBSWebSocket.Settings.GeneratePassword="Gerar Senha"
|
||||
OBSWebSocket.Settings.ServerPort="Porta de Servidor"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Mostrar Informações de Conexão"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Aviso: Atualmente Ao Vivo"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Parece que uma saída (stream, gravação, etc.) está atualmente ativa."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Tem certeza de que deseja mostrar suas informações de conexão?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Aviso: Problema de Segurança Potencial"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket armazena a senha do servidor como texto sem formatação. Usar uma senha gerada pela obs-websocket é altamente recomendada."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Tem certeza de que deseja usar a sua própria senha?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Erro: Configuração Inválida"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Você deve usar uma senha que tenha 6 ou mais caracteres."
|
||||
OBSWebSocket.SessionTable.Title="Sessões WebSocket Conectadas"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Endereço Remoto"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Duração de Sessão"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Mensagens"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Identificada"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Expulsar?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Expulsar"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Informação de Conexão WebSocket"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Copiar"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="IP do servidor (Melhor Chute)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Porta de Servidor"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Senha de Servidor"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Autenticação Desativada]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="QR da conexão"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Nova Conexão de WebSocket"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Cliente %1 identificado."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Falha na Autenticação de WebSocket"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Cliente %1 falhou na autenticação."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Cliente WebSocket Desconectado"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Cliente %1 desconectado."
|
41
data/locale/pt-PT.ini
Normal file
41
data/locale/pt-PT.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="Controlo remoto do OBS Studio através de 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"
|
||||
OBSWebSocket.Settings.DebugEnable="Ativar registo de depuração"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Ativa o registro de depuração para a instância atual do OBS. Não persiste no arranque.\nUse --websocket_debug para ativar no arranque."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Configurações do servidor"
|
||||
OBSWebSocket.Settings.AuthRequired="Ativar autenticação"
|
||||
OBSWebSocket.Settings.Password="Senha do servidor"
|
||||
OBSWebSocket.Settings.GeneratePassword="Gerar senha"
|
||||
OBSWebSocket.Settings.ServerPort="Porta do servidor"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Mostrar informações de conexão"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Aviso: Atualmente ao vivo"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Parece que uma saída (transmissão, gravação, etc.) está atualmente ativa."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Tem certeza de que deseja mostrar as suas informações de ligação?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Aviso: Possível problema de segurança"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="O obs-websocket armazena a senha do servidor como texto sem formatação. É altamente recomendado usar uma senha gerada pelo obs-websocket ."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Tem a certeza de que deseja usar as suas próprias senhas?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Erro: Configuração inválida"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Deve usar uma senha que tenha 6 ou mais caracteres."
|
||||
OBSWebSocket.SessionTable.Title="Sessões WebSocket ligadas"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Endereço remoto"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Duração da sessão"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Entrada/Saída de mensagens"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Identificado"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Expulsar?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Expulsar"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Informação de ligação WebSocket"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Copiar"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="IP do servidor (melhor cálculo)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Porta do servidor"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Senha do servidor"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Autenticação desativada]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="Código QR de ligação"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Nova conexão de WebSocket"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Cliente %1 identificado."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Falha na autenticação de WebSocket"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Cliente %1 falhou na autenticação."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="Cliente WebSocket desligado"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Cliente %1 desligado."
|
41
data/locale/ro-RO.ini
Normal file
41
data/locale/ro-RO.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="Control de la distanță pentru OBS Studio prin WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="Setări pentru serverul WebSocket"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Setări pentru plugin"
|
||||
OBSWebSocket.Settings.ServerEnable="Activează serverul WebSocket"
|
||||
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 conexiunii"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Avertisment: În prezent în direct"
|
||||
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="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"
|
||||
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ături?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Înlătură"
|
||||
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="QR de conectare"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="O nouă conexiune WebSocket"
|
||||
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."
|
41
data/locale/ru-RU.ini
Normal file
41
data/locale/ru-RU.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="Включить оповещения в трее"
|
||||
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-websock."
|
||||
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 отключился."
|
22
data/locale/si-LK.ini
Normal file
22
data/locale/si-LK.ini
Normal file
@ -0,0 +1,22 @@
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="පේනුවේ සැකසුම්"
|
||||
OBSWebSocket.Settings.DebugEnable="නිදොස්කරණ සටහන් තැබීම සබල කරන්න"
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="සේවාදායකයේ සැකසුම්"
|
||||
OBSWebSocket.Settings.AuthRequired="සත්යාපනය සබල කරන්න"
|
||||
OBSWebSocket.Settings.Password="සේවාදායකයේ මුරපදය"
|
||||
OBSWebSocket.Settings.GeneratePassword="මුරපදය උත්පාදනය"
|
||||
OBSWebSocket.Settings.ServerPort="සේවාදායකයේ තොට"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="සබඳතාවේ තොරතුරු පෙන්වන්න"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="අවවාදයයි: දැනට සජීවයි"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="දුරස්ථ ලිපිනය"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="වාරයේ පරාසය"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="පණිවිඩ එන/යන"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="හඳුනා ගැනිණි"
|
||||
OBSWebSocket.ConnectInfo.CopyText="පිටපතක්"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="සේවාදායකයේ අ.ජා.කෙ. (අනුමානය)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="සේවාදායකයේ තොට"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="සේවාදායකයේ මුරපදය"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[සත්යාපනය අබලයි]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="සබැඳුමට QR"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="දැන් %1 අනුග්රාහකය හඳුනයි."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="%1 අනුග්රාහකය සත්යාපනයට අසමත්!"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="%1 අනුග්රාහකය විසන්ධියි."
|
41
data/locale/sk-SK.ini
Normal file
41
data/locale/sk-SK.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="Vzdialené ovládanie OBS Štúdia cez 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"
|
||||
OBSWebSocket.Settings.DebugEnable="Zapnúť debug logovanie"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Zapne debug logovanie pre momentálnu inštanciu OBS. Nezotrvá po načítaní.\nPoužite --websocket_debug pre zapnutie pri načítaní."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Nastavenia servera"
|
||||
OBSWebSocket.Settings.AuthRequired="Zapnúť autentifikáciu"
|
||||
OBSWebSocket.Settings.Password="Serverové heslo"
|
||||
OBSWebSocket.Settings.GeneratePassword="Vygenerovať heslo"
|
||||
OBSWebSocket.Settings.ServerPort="Serverový port"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Zobraziť info pripojenia"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Varovanie: Momentálne naživo"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Zdá sa, že nejaký výstup (stream, nahrávanie, atď.) je momentálne aktívny."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Ste si istí, že chcete zobraziť info vašeho pripojenia?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Varovanie: Potenciálny bezpečnostný problém"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket ukladá serverové heslo ako obyčajný text. Použitie vygenerovaného hesla pre obs-websocket je vysoko odporúčané."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Ste si istí, že chcete použiť svoje vlastné heslo?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Chyba: Neplatná konfigurácia"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Musíte zadať heslo, ktoré má 6 alebo viac znakov."
|
||||
OBSWebSocket.SessionTable.Title="Pripojené WebSocket relácie"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Vzdialená adresa"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Travnie relácie"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Správy dnu/von"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Identifikovaný"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Vyhodiť?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Vyhodiť"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Info WebSocket pripojenia"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Kopírovať"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="IP servera (najlepší odhad)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Serverový port"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Serverové heslo"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Autentifikácia vypnutá]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="QR kód pripojenia"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Nové WebSocket pripojenie"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Klient %1 identifikovaný."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Zlyhanie WebSocket autentifikácie"
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Klientovi %1 sa nepodarilo autentifikovať."
|
||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket klient odpojený"
|
||||
OBSWebSocket.TrayNotification.Disconnected.Body="Klient %1 odpojený."
|
41
data/locale/sl-SI.ini
Normal file
41
data/locale/sl-SI.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="Oddaljeni nadzor OBS Studia prek WebSocketa"
|
||||
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"
|
||||
OBSWebSocket.Settings.DebugEnable="Omogoči beleženje napak"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Omogoči beleženje dogodkov za potrebe razhroščevanja v trenutno zagnani inačici OBS. Ne vztraja ob nalaganju.\nUporabbite --websocket_debug, da to možnost omogočite ob nalaganju."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Nastavitve strežnika"
|
||||
OBSWebSocket.Settings.AuthRequired="Omogoči overjanje"
|
||||
OBSWebSocket.Settings.Password="Geslo strežnika"
|
||||
OBSWebSocket.Settings.GeneratePassword="Tvori geslo"
|
||||
OBSWebSocket.Settings.ServerPort="Vrata strežnika"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Pokaži podatke o povezavi"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Opozorilo: trenutno v živo"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Kaže, da je izhod (tok, posnetek itn.) trenutno dejaven."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Ali ste prepričani, da želite pokazati svoje podatke za povezavo?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Opozorilo: potencialna varnostna težava"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket hrani geslo strežnika kot navadno besedilo. Uporaba gesla, ki ga ustvari obs-websocket je zato zelo priporočena."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Ali ste prepričani, da želite uporabiti lastno geslo?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Napaka: neveljavna prilagoditev"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Uporabiti morate geslo z vsaj 6 znaki."
|
||||
OBSWebSocket.SessionTable.Title="Povezane seje WebSocket"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Oddaljen naslov"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Trajanje seje"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Sporočila V/I"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Identificirano"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Odvrzi?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Odvrzi"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Podatki o povezavi WebSocket"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Kopiraj"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="IP strežnika (naj-domneva)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Vrata strežnika"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Geslo strežnika"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Overjanje onemog.]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="Koda QR za povezavo"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Nova povezava WebSocket"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Odjemalec %1 identificiran."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Spodletelo ovetjanje WebSocket"
|
||||
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."
|
41
data/locale/sv-SE.ini
Normal file
41
data/locale/sv-SE.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="Fjärrkontroll av OBS Studio via WebSocket"
|
||||
OBSWebSocket.Settings.DialogTitle="WebSocket-serverinställningar"
|
||||
OBSWebSocket.Settings.PluginSettingsTitle="Insticksmodulsinställningar"
|
||||
OBSWebSocket.Settings.ServerEnable="Aktivera WebSocket-server"
|
||||
OBSWebSocket.Settings.AlertsEnable="Aktivera systemfältsmeddelanden"
|
||||
OBSWebSocket.Settings.DebugEnable="Aktivera felsökningsloggning"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="Aktiverar felsökningsloggning för den aktuella instansen av OBS. Stannar inte igång vid inläsning.\nAnvänd --websocket_debug för att aktivera vid inläsning."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Serverinställningar"
|
||||
OBSWebSocket.Settings.AuthRequired="Aktivera autentisering"
|
||||
OBSWebSocket.Settings.Password="Serverlösenord"
|
||||
OBSWebSocket.Settings.GeneratePassword="Generera lösenord"
|
||||
OBSWebSocket.Settings.ServerPort="Serverport"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Visa anslutningsinformation"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Varning: Sänder för närvarande"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Det verkar som om en utmatning (ström, inspelning, etc.) är för närvarande aktiv."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Är du säker på att du vill visa din anslutningsinformation?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Varning: Potentiellt säkerhetsproblem"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket lagrar serverns lösenord som vanlig text. Det kommenderas starkt att använda ett lösenord som genereras av obs-websocket."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Är du säker på att du vill använda ditt eget lösenord?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Fel: Ogiltig konfiguration"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Du måste använda ett lösenord som har 6 eller fler tecken."
|
||||
OBSWebSocket.SessionTable.Title="Anslutna WebSocket-sessioner"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Fjärradress"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Sessionens varaktighet"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Meddelanden in/ut"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Identifierad"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Sparka ut?"
|
||||
OBSWebSocket.SessionTable.KickButtonText="Sparka ut"
|
||||
OBSWebSocket.ConnectInfo.DialogTitle="Anslutningsinfo för WebSocket"
|
||||
OBSWebSocket.ConnectInfo.CopyText="Kopiera"
|
||||
OBSWebSocket.ConnectInfo.ServerIp="Server-IP (uppskattad)"
|
||||
OBSWebSocket.ConnectInfo.ServerPort="Serverport"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Serverlösenord"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Autentisering inaktiverad]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="QR för anslutning"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Ny WebSocket-anslutning"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="Klient %1 har identifierats."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="Autentisering av WebSocket misslyckades"
|
||||
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."
|
41
data/locale/tr-TR.ini
Normal file
41
data/locale/tr-TR.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="WebSocket aracılığıyla uzaktan OBS Studio"
|
||||
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"
|
||||
OBSWebSocket.Settings.DebugEnable="Hata Ayıklama Günlüğünü Etkinleştir"
|
||||
OBSWebSocket.Settings.DebugEnableHoverText="OBS'in geçerli örneği için hata ayıklama günlüğünü etkinleştirir. Yüklemede kalıcı değildir.\nYüklemede etkinleştirmek için -- websocket_debug kullanın."
|
||||
OBSWebSocket.Settings.ServerSettingsTitle="Sunucu Ayarları"
|
||||
OBSWebSocket.Settings.AuthRequired="Kimlik Doğrulamasını Etkinleştir"
|
||||
OBSWebSocket.Settings.Password="Sunucu Parolası"
|
||||
OBSWebSocket.Settings.GeneratePassword="Parola oluştur"
|
||||
OBSWebSocket.Settings.ServerPort="Sunucu Portu"
|
||||
OBSWebSocket.Settings.ShowConnectInfo="Bağlanma Bilgilerini Göster"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningTitle="Uyarı: Şu Anda Canlı"
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningMessage="Şu anda bir çıkış (yayın, kayıt, vb.) aktif görünüyor."
|
||||
OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Bağlanma bilgilerinizi göstermek istediğinizden emin misiniz?"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Uyarı: Olası Güvenlik Sorunu"
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket sunucu parolasını düz metin olarak saklar. Obs-websocket tarafından oluşturulan bir parola kullanılması şiddetle tavsiye edilir."
|
||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Kendi parolanızı kullanmak istediğinizden emin misiniz?"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Hata: Geçersiz Yapılandırma"
|
||||
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="6 veya daha fazla karakterden oluşan bir şifre kullanmalısınız."
|
||||
OBSWebSocket.SessionTable.Title="Bağlı WebSocket Oturumları"
|
||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Uzaktaki Adres"
|
||||
OBSWebSocket.SessionTable.SessionDurationColumnTitle="Oturum Süresi"
|
||||
OBSWebSocket.SessionTable.MessagesInOutColumnTitle="Gelen/Giden Mesajlar"
|
||||
OBSWebSocket.SessionTable.IdentifiedTitle="Tanımlandı"
|
||||
OBSWebSocket.SessionTable.KickButtonColumnTitle="Çıkarılsın mı?"
|
||||
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 Portu"
|
||||
OBSWebSocket.ConnectInfo.ServerPassword="Sunucu Parolası"
|
||||
OBSWebSocket.ConnectInfo.ServerPasswordPlaceholderText="[Doğrulama Devre Dışı]"
|
||||
OBSWebSocket.ConnectInfo.QrTitle="Kare Kod ile Bağlan"
|
||||
OBSWebSocket.TrayNotification.Identified.Title="Yeni WebSocket Bağlantısı"
|
||||
OBSWebSocket.TrayNotification.Identified.Body="%1 istemcisi tanımlandı."
|
||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket Kimlik Doğrulama Hatası"
|
||||
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."
|
41
data/locale/uk-UA.ini
Normal file
41
data/locale/uk-UA.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="Увімкнути сповіщення у системному лотку"
|
||||
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 від'єднаний."
|
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."
|
41
data/locale/zh-CN.ini
Normal file
41
data/locale/zh-CN.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="通过 WebSocket 远程控制 OBS Studio"
|
||||
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.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 客户端已断开。"
|
41
data/locale/zh-TW.ini
Normal file
41
data/locale/zh-TW.ini
Normal file
@ -0,0 +1,41 @@
|
||||
OBSWebSocket.Plugin.Description="透過 WebSocket 遠端控制 OBS Studio"
|
||||
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.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
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
|
||||
}
|
||||
}
|
||||
@ -306,7 +309,7 @@ Authentication is not required
|
||||
{
|
||||
"op": 6,
|
||||
"d": {
|
||||
"requestType": "SetCurrentScene",
|
||||
"requestType": "SetCurrentProgramScene",
|
||||
"requestId": "f819dcf0-89cc-11eb-8f0e-382c4ac93b9c",
|
||||
"requestData": {
|
||||
"sceneName": "Scene 12"
|
||||
@ -357,7 +360,7 @@ Successful Response
|
||||
{
|
||||
"op": 7,
|
||||
"d": {
|
||||
"requestType": "SetCurrentScene",
|
||||
"requestType": "SetCurrentProgramScene",
|
||||
"requestId": "f819dcf0-89cc-11eb-8f0e-382c4ac93b9c",
|
||||
"requestStatus": {
|
||||
"result": true,
|
||||
@ -373,7 +376,7 @@ Failure Response
|
||||
{
|
||||
"op": 7,
|
||||
"d": {
|
||||
"requestType": "SetCurrentScene",
|
||||
"requestType": "SetCurrentProgramScene",
|
||||
"requestId": "f819dcf0-89cc-11eb-8f0e-382c4ac93b9c",
|
||||
"requestStatus": {
|
||||
"result": false,
|
||||
|
@ -105,7 +105,7 @@
|
||||
"rpcVersion": "1",
|
||||
"deprecated": false,
|
||||
"initialVersion": "5.0.0",
|
||||
"enumValue": "(General | Config | Scenes | Inputs | Transitions | Filters | Outputs | SceneItems | MediaInputs | Vendors)"
|
||||
"enumValue": "(General | Config | Scenes | Inputs | Transitions | Filters | Outputs | SceneItems | MediaInputs | Vendors | Ui)"
|
||||
},
|
||||
{
|
||||
"description": "Subscription value to receive the `InputVolumeMeters` high-volume event.",
|
||||
@ -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,11 +1225,11 @@
|
||||
{
|
||||
"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",
|
||||
"category": "rconfig",
|
||||
"category": "config",
|
||||
"requestFields": [],
|
||||
"responseFields": [
|
||||
{
|
||||
@ -1154,6 +1239,26 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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 of a source's filters.",
|
||||
"requestType": "GetSourceFilterList",
|
||||
@ -1648,6 +1753,16 @@
|
||||
}
|
||||
],
|
||||
"responseFields": [
|
||||
{
|
||||
"valueName": "vendorName",
|
||||
"valueType": "String",
|
||||
"valueDescription": "Echoed of `vendorName`"
|
||||
},
|
||||
{
|
||||
"valueName": "requestType",
|
||||
"valueType": "String",
|
||||
"valueDescription": "Echoed of `requestType`"
|
||||
},
|
||||
{
|
||||
"valueName": "responseData",
|
||||
"valueType": "Object",
|
||||
@ -1766,16 +1881,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": []
|
||||
@ -2471,7 +2586,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",
|
||||
@ -2758,6 +2873,204 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "Gets the list of available outputs.",
|
||||
"requestType": "GetOutputList",
|
||||
"complexity": 4,
|
||||
"rpcVersion": "1",
|
||||
"deprecated": false,
|
||||
"initialVersion": "5.0.0",
|
||||
"category": "outputs",
|
||||
"requestFields": [],
|
||||
"responseFields": [
|
||||
{
|
||||
"valueName": "outputs",
|
||||
"valueType": "Array<Object>",
|
||||
"valueDescription": "Array of outputs"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "Gets the status of an output.",
|
||||
"requestType": "GetOutputStatus",
|
||||
"complexity": 4,
|
||||
"rpcVersion": "1",
|
||||
"deprecated": false,
|
||||
"initialVersion": "5.0.0",
|
||||
"category": "outputs",
|
||||
"requestFields": [
|
||||
{
|
||||
"valueName": "outputName",
|
||||
"valueType": "String",
|
||||
"valueDescription": "Output name",
|
||||
"valueRestrictions": null,
|
||||
"valueOptional": false,
|
||||
"valueOptionalBehavior": null
|
||||
}
|
||||
],
|
||||
"responseFields": [
|
||||
{
|
||||
"valueName": "outputActive",
|
||||
"valueType": "Boolean",
|
||||
"valueDescription": "Whether the output is active"
|
||||
},
|
||||
{
|
||||
"valueName": "outputReconnecting",
|
||||
"valueType": "Boolean",
|
||||
"valueDescription": "Whether the output is reconnecting"
|
||||
},
|
||||
{
|
||||
"valueName": "outputTimecode",
|
||||
"valueType": "String",
|
||||
"valueDescription": "Current formatted timecode string for the output"
|
||||
},
|
||||
{
|
||||
"valueName": "outputDuration",
|
||||
"valueType": "Number",
|
||||
"valueDescription": "Current duration in milliseconds for the output"
|
||||
},
|
||||
{
|
||||
"valueName": "outputCongestion",
|
||||
"valueType": "Number",
|
||||
"valueDescription": "Congestion of the output"
|
||||
},
|
||||
{
|
||||
"valueName": "outputBytes",
|
||||
"valueType": "Number",
|
||||
"valueDescription": "Number of bytes sent by the output"
|
||||
},
|
||||
{
|
||||
"valueName": "outputSkippedFrames",
|
||||
"valueType": "Number",
|
||||
"valueDescription": "Number of frames skipped by the output's process"
|
||||
},
|
||||
{
|
||||
"valueName": "outputTotalFrames",
|
||||
"valueType": "Number",
|
||||
"valueDescription": "Total number of frames delivered by the output's process"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "Toggles the status of an output.",
|
||||
"requestType": "ToggleOutput",
|
||||
"complexity": 4,
|
||||
"rpcVersion": "1",
|
||||
"deprecated": false,
|
||||
"initialVersion": "5.0.0",
|
||||
"category": "outputs",
|
||||
"requestFields": [
|
||||
{
|
||||
"valueName": "outputName",
|
||||
"valueType": "String",
|
||||
"valueDescription": "Output name",
|
||||
"valueRestrictions": null,
|
||||
"valueOptional": false,
|
||||
"valueOptionalBehavior": null
|
||||
}
|
||||
],
|
||||
"responseFields": [
|
||||
{
|
||||
"valueName": "outputActive",
|
||||
"valueType": "Boolean",
|
||||
"valueDescription": "Whether the output is active"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "Starts an output.",
|
||||
"requestType": "StartOutput",
|
||||
"complexity": 4,
|
||||
"rpcVersion": "1",
|
||||
"deprecated": false,
|
||||
"initialVersion": "5.0.0",
|
||||
"category": "outputs",
|
||||
"requestFields": [
|
||||
{
|
||||
"valueName": "outputName",
|
||||
"valueType": "String",
|
||||
"valueDescription": "Output name",
|
||||
"valueRestrictions": null,
|
||||
"valueOptional": false,
|
||||
"valueOptionalBehavior": null
|
||||
}
|
||||
],
|
||||
"responseFields": []
|
||||
},
|
||||
{
|
||||
"description": "Stops an output.",
|
||||
"requestType": "StopOutput",
|
||||
"complexity": 4,
|
||||
"rpcVersion": "1",
|
||||
"deprecated": false,
|
||||
"initialVersion": "5.0.0",
|
||||
"category": "outputs",
|
||||
"requestFields": [
|
||||
{
|
||||
"valueName": "outputName",
|
||||
"valueType": "String",
|
||||
"valueDescription": "Output name",
|
||||
"valueRestrictions": null,
|
||||
"valueOptional": false,
|
||||
"valueOptionalBehavior": null
|
||||
}
|
||||
],
|
||||
"responseFields": []
|
||||
},
|
||||
{
|
||||
"description": "Gets the settings of an output.",
|
||||
"requestType": "GetOutputSettings",
|
||||
"complexity": 4,
|
||||
"rpcVersion": "1",
|
||||
"deprecated": false,
|
||||
"initialVersion": "5.0.0",
|
||||
"category": "outputs",
|
||||
"requestFields": [
|
||||
{
|
||||
"valueName": "outputName",
|
||||
"valueType": "String",
|
||||
"valueDescription": "Output name",
|
||||
"valueRestrictions": null,
|
||||
"valueOptional": false,
|
||||
"valueOptionalBehavior": null
|
||||
}
|
||||
],
|
||||
"responseFields": [
|
||||
{
|
||||
"valueName": "outputSettings",
|
||||
"valueType": "Object",
|
||||
"valueDescription": "Output settings"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "Sets the settings of an output.",
|
||||
"requestType": "SetOutputSettings",
|
||||
"complexity": 4,
|
||||
"rpcVersion": "1",
|
||||
"deprecated": false,
|
||||
"initialVersion": "5.0.0",
|
||||
"category": "outputs",
|
||||
"requestFields": [
|
||||
{
|
||||
"valueName": "outputName",
|
||||
"valueType": "String",
|
||||
"valueDescription": "Output name",
|
||||
"valueRestrictions": null,
|
||||
"valueOptional": false,
|
||||
"valueOptionalBehavior": null
|
||||
},
|
||||
{
|
||||
"valueName": "outputSettings",
|
||||
"valueType": "Object",
|
||||
"valueDescription": "Output settings",
|
||||
"valueRestrictions": null,
|
||||
"valueOptional": false,
|
||||
"valueOptionalBehavior": null
|
||||
}
|
||||
],
|
||||
"responseFields": []
|
||||
},
|
||||
{
|
||||
"description": "Gets the status of the record output.",
|
||||
"requestType": "GetRecordStatus",
|
||||
@ -2774,7 +3087,7 @@
|
||||
"valueDescription": "Whether the output is active"
|
||||
},
|
||||
{
|
||||
"valueName": "ouputPaused",
|
||||
"valueName": "outputPaused",
|
||||
"valueType": "Boolean",
|
||||
"valueDescription": "Whether the output is paused"
|
||||
},
|
||||
@ -2826,7 +3139,13 @@
|
||||
"initialVersion": "5.0.0",
|
||||
"category": "record",
|
||||
"requestFields": [],
|
||||
"responseFields": []
|
||||
"responseFields": [
|
||||
{
|
||||
"valueName": "outputPath",
|
||||
"valueType": "String",
|
||||
"valueDescription": "File name for the saved recording"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "Toggles pause on the record output.",
|
||||
@ -2888,8 +3207,8 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"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",
|
||||
"requestType": "GetGroupItemList",
|
||||
"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",
|
||||
"deprecated": false,
|
||||
@ -3635,7 +3954,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",
|
||||
@ -3855,6 +4174,11 @@
|
||||
"valueType": "Number",
|
||||
"valueDescription": "Current duration in milliseconds for the output"
|
||||
},
|
||||
{
|
||||
"valueName": "outputCongestion",
|
||||
"valueType": "Number",
|
||||
"valueDescription": "Congestion of the output"
|
||||
},
|
||||
{
|
||||
"valueName": "outputBytes",
|
||||
"valueType": "Number",
|
||||
@ -4254,6 +4578,78 @@
|
||||
"valueDescription": "a list of detected monitors with some information"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "Opens a projector for a specific output video mix.\n\nMix types:\n\n- `OBS_WEBSOCKET_VIDEO_MIX_TYPE_PREVIEW`\n- `OBS_WEBSOCKET_VIDEO_MIX_TYPE_PROGRAM`\n- `OBS_WEBSOCKET_VIDEO_MIX_TYPE_MULTIVIEW`\n\nNote: This request serves to provide feature parity with 4.x. It is very likely to be changed/deprecated in a future release.",
|
||||
"requestType": "OpenVideoMixProjector",
|
||||
"complexity": 3,
|
||||
"rpcVersion": "1",
|
||||
"deprecated": false,
|
||||
"initialVersion": "5.0.0",
|
||||
"category": "ui",
|
||||
"requestFields": [
|
||||
{
|
||||
"valueName": "videoMixType",
|
||||
"valueType": "String",
|
||||
"valueDescription": "Type of mix to open",
|
||||
"valueRestrictions": null,
|
||||
"valueOptional": false,
|
||||
"valueOptionalBehavior": null
|
||||
},
|
||||
{
|
||||
"valueName": "monitorIndex",
|
||||
"valueType": "Number",
|
||||
"valueDescription": "Monitor index, use `GetMonitorList` to obtain index",
|
||||
"valueRestrictions": null,
|
||||
"valueOptional": true,
|
||||
"valueOptionalBehavior": "-1: Opens projector in windowed mode"
|
||||
},
|
||||
{
|
||||
"valueName": "projectorGeometry",
|
||||
"valueType": "String",
|
||||
"valueDescription": "Size/Position data for a windowed projector, in Qt Base64 encoded format. Mutually exclusive with `monitorIndex`",
|
||||
"valueRestrictions": null,
|
||||
"valueOptional": true,
|
||||
"valueOptionalBehavior": "N/A"
|
||||
}
|
||||
],
|
||||
"responseFields": []
|
||||
},
|
||||
{
|
||||
"description": "Opens a projector for a source.\n\nNote: This request serves to provide feature parity with 4.x. It is very likely to be changed/deprecated in a future release.",
|
||||
"requestType": "OpenSourceProjector",
|
||||
"complexity": 3,
|
||||
"rpcVersion": "1",
|
||||
"deprecated": false,
|
||||
"initialVersion": "5.0.0",
|
||||
"category": "ui",
|
||||
"requestFields": [
|
||||
{
|
||||
"valueName": "sourceName",
|
||||
"valueType": "String",
|
||||
"valueDescription": "Name of the source to open a projector for",
|
||||
"valueRestrictions": null,
|
||||
"valueOptional": false,
|
||||
"valueOptionalBehavior": null
|
||||
},
|
||||
{
|
||||
"valueName": "monitorIndex",
|
||||
"valueType": "Number",
|
||||
"valueDescription": "Monitor index, use `GetMonitorList` to obtain index",
|
||||
"valueRestrictions": null,
|
||||
"valueOptional": true,
|
||||
"valueOptionalBehavior": "-1: Opens projector in windowed mode"
|
||||
},
|
||||
{
|
||||
"valueName": "projectorGeometry",
|
||||
"valueType": "String",
|
||||
"valueDescription": "Size/Position data for a windowed projector, in Qt Base64 encoded format. Mutually exclusive with `monitorIndex`",
|
||||
"valueRestrictions": null,
|
||||
"valueOptional": true,
|
||||
"valueOptionalBehavior": "N/A"
|
||||
}
|
||||
],
|
||||
"responseFields": []
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
@ -4670,7 +5066,7 @@
|
||||
{
|
||||
"valueName": "inputVolumeMul",
|
||||
"valueType": "Number",
|
||||
"valueDescription": "New volume level in multimap"
|
||||
"valueDescription": "New volume level multiplier"
|
||||
},
|
||||
{
|
||||
"valueName": "inputVolumeDb",
|
||||
@ -4881,6 +5277,11 @@
|
||||
"valueName": "outputState",
|
||||
"valueType": "String",
|
||||
"valueDescription": "The specific state of the output"
|
||||
},
|
||||
{
|
||||
"valueName": "outputPath",
|
||||
"valueType": "String",
|
||||
"valueDescription": "File name for the saved recording, if record stopped. `null` otherwise"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -5348,6 +5749,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",
|
||||
@ -5374,6 +5792,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.0 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.0",
|
||||
"obsWebSocketVersion": "5.1.0",
|
||||
"rpcVersion": 1,
|
||||
"authentication": {
|
||||
"challenge": "+IxH4CnCiqpX1rM9scsNynZzbOe4KhDeYcTNS3PDaeY=",
|
||||
@ -161,7 +164,7 @@ Authentication is not required
|
||||
{
|
||||
"op": 0,
|
||||
"d": {
|
||||
"obsWebSocketVersion": "5.0.0",
|
||||
"obsWebSocketVersion": "5.1.0",
|
||||
"rpcVersion": 1
|
||||
}
|
||||
}
|
||||
@ -308,7 +311,7 @@ Authentication is not required
|
||||
{
|
||||
"op": 6,
|
||||
"d": {
|
||||
"requestType": "SetCurrentScene",
|
||||
"requestType": "SetCurrentProgramScene",
|
||||
"requestId": "f819dcf0-89cc-11eb-8f0e-382c4ac93b9c",
|
||||
"requestData": {
|
||||
"sceneName": "Scene 12"
|
||||
@ -359,7 +362,7 @@ Successful Response
|
||||
{
|
||||
"op": 7,
|
||||
"d": {
|
||||
"requestType": "SetCurrentScene",
|
||||
"requestType": "SetCurrentProgramScene",
|
||||
"requestId": "f819dcf0-89cc-11eb-8f0e-382c4ac93b9c",
|
||||
"requestStatus": {
|
||||
"result": true,
|
||||
@ -375,7 +378,7 @@ Failure Response
|
||||
{
|
||||
"op": 7,
|
||||
"d": {
|
||||
"requestType": "SetCurrentScene",
|
||||
"requestType": "SetCurrentProgramScene",
|
||||
"requestId": "f819dcf0-89cc-11eb-8f0e-382c4ac93b9c",
|
||||
"requestStatus": {
|
||||
"result": false,
|
||||
@ -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.
|
||||
@ -1250,7 +1284,7 @@ Subscription value to receive events in the `Ui` category.
|
||||
|
||||
Helper to receive all non-high-volume events.
|
||||
|
||||
- Identifier Value: `(General | Config | Scenes | Inputs | Transitions | Filters | Outputs | SceneItems | MediaInputs | Vendors)`
|
||||
- Identifier Value: `(General | Config | Scenes | Inputs | Transitions | Filters | Outputs | SceneItems | MediaInputs | Vendors | Ui)`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.0.0
|
||||
|
||||
@ -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 |
|
||||
|
||||
---
|
||||
@ -2148,6 +2376,7 @@ The state of the record output has changed.
|
||||
| ---- | :---: | ----------- |
|
||||
| outputActive | Boolean | Whether the output is active |
|
||||
| outputState | String | The specific state of the output |
|
||||
| outputPath | String | File name for the saved recording, if record stopped. `null` otherwise |
|
||||
|
||||
---
|
||||
|
||||
@ -2264,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
|
||||
@ -2293,6 +2542,8 @@ Studio mode has been enabled or disabled.
|
||||
- [SetVideoSettings](#setvideosettings)
|
||||
- [GetStreamServiceSettings](#getstreamservicesettings)
|
||||
- [SetStreamServiceSettings](#setstreamservicesettings)
|
||||
- [GetRecordDirectory](#getrecorddirectory)
|
||||
- [SetRecordDirectory](#setrecorddirectory)
|
||||
- [Sources Requests](#sources-requests)
|
||||
- [GetSourceActive](#getsourceactive)
|
||||
- [GetSourceScreenshot](#getsourcescreenshot)
|
||||
@ -2356,7 +2607,7 @@ Studio mode has been enabled or disabled.
|
||||
- [SetSourceFilterEnabled](#setsourcefilterenabled)
|
||||
- [Scene Items Requests](#scene-items-1-requests)
|
||||
- [GetSceneItemList](#getsceneitemlist)
|
||||
- [GetGroupItemList](#getgroupitemlist)
|
||||
- [GetGroupSceneItemList](#getgroupsceneitemlist)
|
||||
- [GetSceneItemId](#getsceneitemid)
|
||||
- [CreateSceneItem](#createsceneitem)
|
||||
- [RemoveSceneItem](#removesceneitem)
|
||||
@ -2382,6 +2633,13 @@ Studio mode has been enabled or disabled.
|
||||
- [StopReplayBuffer](#stopreplaybuffer)
|
||||
- [SaveReplayBuffer](#savereplaybuffer)
|
||||
- [GetLastReplayBufferReplay](#getlastreplaybufferreplay)
|
||||
- [GetOutputList](#getoutputlist)
|
||||
- [GetOutputStatus](#getoutputstatus)
|
||||
- [ToggleOutput](#toggleoutput)
|
||||
- [StartOutput](#startoutput)
|
||||
- [StopOutput](#stopoutput)
|
||||
- [GetOutputSettings](#getoutputsettings)
|
||||
- [SetOutputSettings](#setoutputsettings)
|
||||
- [Stream Requests](#stream-requests)
|
||||
- [GetStreamStatus](#getstreamstatus)
|
||||
- [ToggleStream](#togglestream)
|
||||
@ -2408,6 +2666,8 @@ Studio mode has been enabled or disabled.
|
||||
- [OpenInputFiltersDialog](#openinputfiltersdialog)
|
||||
- [OpenInputInteractDialog](#openinputinteractdialog)
|
||||
- [GetMonitorList](#getmonitorlist)
|
||||
- [OpenVideoMixProjector](#openvideomixprojector)
|
||||
- [OpenSourceProjector](#opensourceprojector)
|
||||
|
||||
## General Requests
|
||||
|
||||
@ -2498,6 +2758,8 @@ If a plugin or script implements vendor requests or events, documentation is exp
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | :---: | ----------- |
|
||||
| vendorName | String | Echoed of `vendorName` |
|
||||
| requestType | String | Echoed of `requestType` |
|
||||
| responseData | Object | Object containing appropriate response data. {} if request does not provide any response data |
|
||||
|
||||
---
|
||||
@ -2567,8 +2829,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
|
||||
|
||||
@ -2853,6 +3115,38 @@ Note: Simple RTMP settings can be set with type `rtmp_custom` and the settings f
|
||||
| streamServiceType | String | Type of stream service to apply. Example: `rtmp_common` or `rtmp_custom` | None | N/A |
|
||||
| streamServiceSettings | Object | Settings to apply to the service | None | N/A |
|
||||
|
||||
---
|
||||
|
||||
### GetRecordDirectory
|
||||
|
||||
Gets the current directory that the record output is set to.
|
||||
|
||||
- Complexity Rating: `2/5`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.0.0
|
||||
|
||||
**Response Fields:**
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | :---: | ----------- |
|
||||
| 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
|
||||
@ -3121,7 +3415,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`
|
||||
@ -3623,6 +3917,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`
|
||||
@ -3996,11 +4294,11 @@ Scenes only
|
||||
|
||||
---
|
||||
|
||||
### GetGroupItemList
|
||||
### GetGroupSceneItemList
|
||||
|
||||
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
|
||||
|
||||
@ -4482,6 +4780,144 @@ Gets the filename of the last replay buffer save file.
|
||||
| ---- | :---: | ----------- |
|
||||
| savedReplayPath | String | File path |
|
||||
|
||||
---
|
||||
|
||||
### GetOutputList
|
||||
|
||||
Gets the list of available outputs.
|
||||
|
||||
- Complexity Rating: `4/5`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.0.0
|
||||
|
||||
**Response Fields:**
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | :---: | ----------- |
|
||||
| outputs | Array<Object> | Array of outputs |
|
||||
|
||||
---
|
||||
|
||||
### GetOutputStatus
|
||||
|
||||
Gets the status of an output.
|
||||
|
||||
- Complexity Rating: `4/5`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.0.0
|
||||
|
||||
**Request Fields:**
|
||||
|
||||
| Name | Type | Description | Value Restrictions | ?Default Behavior |
|
||||
| ---- | :---: | ----------- | :----------------: | ----------------- |
|
||||
| outputName | String | Output name | None | N/A |
|
||||
|
||||
**Response Fields:**
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | :---: | ----------- |
|
||||
| outputActive | Boolean | Whether the output is active |
|
||||
| outputReconnecting | Boolean | Whether the output is reconnecting |
|
||||
| outputTimecode | String | Current formatted timecode string for the output |
|
||||
| outputDuration | Number | Current duration in milliseconds for the output |
|
||||
| outputCongestion | Number | Congestion of the output |
|
||||
| outputBytes | Number | Number of bytes sent by the output |
|
||||
| outputSkippedFrames | Number | Number of frames skipped by the output's process |
|
||||
| outputTotalFrames | Number | Total number of frames delivered by the output's process |
|
||||
|
||||
---
|
||||
|
||||
### ToggleOutput
|
||||
|
||||
Toggles the status of an output.
|
||||
|
||||
- Complexity Rating: `4/5`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.0.0
|
||||
|
||||
**Request Fields:**
|
||||
|
||||
| Name | Type | Description | Value Restrictions | ?Default Behavior |
|
||||
| ---- | :---: | ----------- | :----------------: | ----------------- |
|
||||
| outputName | String | Output name | None | N/A |
|
||||
|
||||
**Response Fields:**
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | :---: | ----------- |
|
||||
| outputActive | Boolean | Whether the output is active |
|
||||
|
||||
---
|
||||
|
||||
### StartOutput
|
||||
|
||||
Starts an output.
|
||||
|
||||
- Complexity Rating: `4/5`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.0.0
|
||||
|
||||
**Request Fields:**
|
||||
|
||||
| Name | Type | Description | Value Restrictions | ?Default Behavior |
|
||||
| ---- | :---: | ----------- | :----------------: | ----------------- |
|
||||
| outputName | String | Output name | None | N/A |
|
||||
|
||||
---
|
||||
|
||||
### StopOutput
|
||||
|
||||
Stops an output.
|
||||
|
||||
- Complexity Rating: `4/5`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.0.0
|
||||
|
||||
**Request Fields:**
|
||||
|
||||
| Name | Type | Description | Value Restrictions | ?Default Behavior |
|
||||
| ---- | :---: | ----------- | :----------------: | ----------------- |
|
||||
| outputName | String | Output name | None | N/A |
|
||||
|
||||
---
|
||||
|
||||
### GetOutputSettings
|
||||
|
||||
Gets the settings of an output.
|
||||
|
||||
- Complexity Rating: `4/5`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.0.0
|
||||
|
||||
**Request Fields:**
|
||||
|
||||
| Name | Type | Description | Value Restrictions | ?Default Behavior |
|
||||
| ---- | :---: | ----------- | :----------------: | ----------------- |
|
||||
| outputName | String | Output name | None | N/A |
|
||||
|
||||
**Response Fields:**
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | :---: | ----------- |
|
||||
| outputSettings | Object | Output settings |
|
||||
|
||||
---
|
||||
|
||||
### SetOutputSettings
|
||||
|
||||
Sets the settings of an output.
|
||||
|
||||
- Complexity Rating: `4/5`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.0.0
|
||||
|
||||
**Request Fields:**
|
||||
|
||||
| Name | Type | Description | Value Restrictions | ?Default Behavior |
|
||||
| ---- | :---: | ----------- | :----------------: | ----------------- |
|
||||
| outputName | String | Output name | None | N/A |
|
||||
| outputSettings | Object | Output settings | None | N/A |
|
||||
|
||||
## Stream Requests
|
||||
|
||||
### GetStreamStatus
|
||||
@ -4500,6 +4936,7 @@ Gets the status of the stream output.
|
||||
| outputReconnecting | Boolean | Whether the output is currently reconnecting |
|
||||
| outputTimecode | String | Current formatted timecode string for the output |
|
||||
| outputDuration | Number | Current duration in milliseconds for the output |
|
||||
| outputCongestion | Number | Congestion of the output |
|
||||
| outputBytes | Number | Number of bytes sent by the output |
|
||||
| outputSkippedFrames | Number | Number of frames skipped by the output's process |
|
||||
| outputTotalFrames | Number | Total number of frames delivered by the output's process |
|
||||
@ -4571,7 +5008,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 |
|
||||
@ -4606,6 +5043,12 @@ Stops the record output.
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.0.0
|
||||
|
||||
**Response Fields:**
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | :---: | ----------- |
|
||||
| outputPath | String | File name for the saved recording |
|
||||
|
||||
---
|
||||
|
||||
### ToggleRecordPause
|
||||
@ -4821,3 +5264,49 @@ Gets a list of connected monitors and information about them.
|
||||
| Name | Type | Description |
|
||||
| ---- | :---: | ----------- |
|
||||
| monitors | Array<Object> | a list of detected monitors with some information |
|
||||
|
||||
---
|
||||
|
||||
### OpenVideoMixProjector
|
||||
|
||||
Opens a projector for a specific output video mix.
|
||||
|
||||
Mix types:
|
||||
|
||||
- `OBS_WEBSOCKET_VIDEO_MIX_TYPE_PREVIEW`
|
||||
- `OBS_WEBSOCKET_VIDEO_MIX_TYPE_PROGRAM`
|
||||
- `OBS_WEBSOCKET_VIDEO_MIX_TYPE_MULTIVIEW`
|
||||
|
||||
Note: This request serves to provide feature parity with 4.x. It is very likely to be changed/deprecated in a future release.
|
||||
|
||||
- Complexity Rating: `3/5`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.0.0
|
||||
|
||||
**Request Fields:**
|
||||
|
||||
| Name | Type | Description | Value Restrictions | ?Default Behavior |
|
||||
| ---- | :---: | ----------- | :----------------: | ----------------- |
|
||||
| videoMixType | String | Type of mix to open | None | N/A |
|
||||
| ?monitorIndex | Number | Monitor index, use `GetMonitorList` to obtain index | None | -1: Opens projector in windowed mode |
|
||||
| ?projectorGeometry | String | Size/Position data for a windowed projector, in Qt Base64 encoded format. Mutually exclusive with `monitorIndex` | None | N/A |
|
||||
|
||||
---
|
||||
|
||||
### OpenSourceProjector
|
||||
|
||||
Opens a projector for a source.
|
||||
|
||||
Note: This request serves to provide feature parity with 4.x. It is very likely to be changed/deprecated in a future release.
|
||||
|
||||
- Complexity Rating: `3/5`
|
||||
- Latest Supported RPC Version: `1`
|
||||
- Added in v5.0.0
|
||||
|
||||
**Request Fields:**
|
||||
|
||||
| Name | Type | Description | Value Restrictions | ?Default Behavior |
|
||||
| ---- | :---: | ----------- | :----------------: | ----------------- |
|
||||
| sourceName | String | Name of the source to open a projector for | None | N/A |
|
||||
| ?monitorIndex | Number | Monitor index, use `GetMonitorList` to obtain index | None | -1: Opens projector in windowed mode |
|
||||
| ?projectorGeometry | String | Size/Position data for a windowed projector, in Qt Base64 encoded format. Mutually exclusive with `monitorIndex` | None | N/A |
|
||||
|
@ -1,74 +0,0 @@
|
||||
#define MyAppName "obs-websocket"
|
||||
#define MyAppVersion "@OBS_WEBSOCKET_VERSION@"
|
||||
#define MyAppPublisher "OBS Project"
|
||||
#define MyAppURL "http://github.com/obsproject/obs-websocket"
|
||||
|
||||
[Setup]
|
||||
; NOTE: The value of AppId uniquely identifies this application.
|
||||
; Do not use the same AppId value in installers for other applications.
|
||||
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
|
||||
AppId={{117EE44F-48E1-49E5-A381-CC8D9195CF35}
|
||||
AppName={#MyAppName}
|
||||
AppVersion={#MyAppVersion}
|
||||
AppPublisher={#MyAppPublisher}
|
||||
AppPublisherURL={#MyAppURL}
|
||||
AppSupportURL={#MyAppURL}
|
||||
AppUpdatesURL={#MyAppURL}
|
||||
DefaultDirName={code:GetDirName}
|
||||
DefaultGroupName={#MyAppName}
|
||||
OutputBaseFilename=obs-websocket-{#MyAppVersion}-Windows-Installer
|
||||
Compression=lzma
|
||||
SolidCompression=yes
|
||||
DirExistsWarning=no
|
||||
|
||||
[Languages]
|
||||
Name: "english"; MessagesFile: "compiler:Default.isl"
|
||||
|
||||
[Files]
|
||||
Source: "..\release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "..\LICENSE"; Flags: dontcopy
|
||||
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
|
||||
|
||||
[Icons]
|
||||
Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
|
||||
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
|
||||
|
||||
[Code]
|
||||
procedure InitializeWizard();
|
||||
var
|
||||
GPLText: AnsiString;
|
||||
Page: TOutputMsgMemoWizardPage;
|
||||
begin
|
||||
ExtractTemporaryFile('LICENSE');
|
||||
LoadStringFromFile(ExpandConstant('{tmp}\LICENSE'), GPLText);
|
||||
Page := CreateOutputMsgMemoPage(wpWelcome,
|
||||
'License Information', 'Please review the license terms before installing obs-websocket',
|
||||
'Press Page Down to see the rest of the agreement. Once you are aware of your rights, click Next to continue.',
|
||||
String(GPLText)
|
||||
);
|
||||
end;
|
||||
|
||||
// Validate that obs-studio is installed before installing the plugin
|
||||
function PrepareToInstall(var NeedsRestart: Boolean): String;
|
||||
begin
|
||||
Result := '';
|
||||
|
||||
if not DirExists(ExpandConstant('{app}\obs-plugins')) then
|
||||
begin
|
||||
Result := 'The selected install directory does not appear to be valid. Please install OBS Studio before installing {#MyAppName} or correct your install path.';
|
||||
end;
|
||||
end;
|
||||
|
||||
// credit where it's due :
|
||||
// following function come from https://github.com/Xaymar/obs-studio_amf-encoder-plugin/blob/master/%23Resources/Installer.in.iss#L45
|
||||
function GetDirName(Value: string): string;
|
||||
var
|
||||
InstallPath: string;
|
||||
begin
|
||||
// initialize default path, which will be returned when the following registry
|
||||
// key queries fail due to missing keys or for some different reason
|
||||
Result := '{commonpf}\obs-studio';
|
||||
// query the first registry value; if this succeeds, return the obtained value
|
||||
if RegQueryStringValue(HKLM32, 'SOFTWARE\OBS Studio', '', InstallPath) then
|
||||
Result := InstallPath
|
||||
end;
|
@ -96,7 +96,7 @@ static inline unsigned int obs_websocket_get_api_version(void)
|
||||
if (!proc_handler_call(_ph, "get_api_version", &cd))
|
||||
return 1; // API v1 does not include get_api_version
|
||||
|
||||
unsigned int ret = calldata_int(&cd, "version");
|
||||
unsigned int ret = (unsigned int)calldata_int(&cd, "version");
|
||||
|
||||
calldata_free(&cd);
|
||||
|
||||
|
@ -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(true),
|
||||
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...");
|
||||
|
||||
@ -59,6 +54,20 @@ EventHandler::~EventHandler()
|
||||
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 +76,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 +270,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 +289,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 +304,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 +353,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 +422,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 +523,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 +545,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 +565,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 +587,17 @@ void EventHandler::SourceRenamedMultiHandler(void *param, calldata_t *data)
|
||||
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,6 +62,8 @@ 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);
|
||||
@ -76,9 +79,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,30 +106,45 @@ 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
|
||||
static void HandleInputActiveStateChanged(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleInputShowStateChanged(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleInputMuteStateChanged(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleInputVolumeChanged(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleInputAudioBalanceChanged(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleInputAudioSyncOffsetChanged(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleInputAudioTracksChanged(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleInputAudioMonitorTypeChanged(void *param, calldata_t *data); // Direct callback
|
||||
void HandleInputVolumeMeters(std::vector<json> inputs); // AudioMeter::Handler callback
|
||||
static void HandleInputActiveStateChanged(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleInputShowStateChanged(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleInputMuteStateChanged(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleInputVolumeChanged(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleInputAudioBalanceChanged(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleInputAudioSyncOffsetChanged(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleInputAudioTracksChanged(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleInputAudioMonitorTypeChanged(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
|
||||
// Transitions
|
||||
void HandleCurrentSceneTransitionChanged();
|
||||
void HandleCurrentSceneTransitionDurationChanged();
|
||||
static void HandleSceneTransitionStarted(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleSceneTransitionEnded(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleSceneTransitionVideoEnded(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleSceneTransitionStarted(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleSceneTransitionEnded(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleSceneTransitionVideoEnded(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
|
||||
// Filters
|
||||
static void FilterAddMultiHandler(void *param, calldata_t *data); // Direct callback
|
||||
static void FilterRemoveMultiHandler(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleSourceFilterListReindexed(void *param, calldata_t *data); // Direct callback
|
||||
static void FilterAddMultiHandler(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void FilterRemoveMultiHandler(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleSourceFilterListReindexed(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
void HandleSourceFilterCreated(obs_source_t *source, obs_source_t *filter);
|
||||
void HandleSourceFilterRemoved(obs_source_t *source, obs_source_t *filter);
|
||||
static void HandleSourceFilterNameChanged(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleSourceFilterNameChanged(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleSourceFilterEnableStateChanged(void *param, calldata_t *data); // Direct callback
|
||||
|
||||
// Outputs
|
||||
@ -134,16 +155,29 @@ private:
|
||||
void HandleReplayBufferSaved();
|
||||
|
||||
// Scene Items
|
||||
static void HandleSceneItemCreated(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleSceneItemRemoved(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleSceneItemListReindexed(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleSceneItemEnableStateChanged(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleSceneItemLockStateChanged(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleSceneItemSelected(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleSceneItemTransformChanged(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleSceneItemCreated(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleSceneItemRemoved(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleSceneItemListReindexed(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleSceneItemEnableStateChanged(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleSceneItemLockStateChanged(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleSceneItemSelected(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
static void HandleSceneItemTransformChanged(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
|
||||
// Media Inputs
|
||||
static void HandleMediaInputPlaybackStarted(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleMediaInputPlaybackEnded(void *param, calldata_t *data); // Direct callback
|
||||
static void HandleMediaInputPlaybackStarted(void *param,
|
||||
calldata_t *data); // Direct callback
|
||||
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();
|
||||
};
|
||||
|
@ -200,7 +200,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
|
||||
@ -225,7 +225,7 @@ void EventHandler::HandleInputVolumeChanged(void *param, calldata_t *data)
|
||||
// Volume must be grabbed from the calldata. Running obs_source_get_volume() will return the previous value.
|
||||
double inputVolumeMul = calldata_float(data, "volume");
|
||||
|
||||
double inputVolumeDb = obs_mul_to_db(inputVolumeMul);
|
||||
double inputVolumeDb = obs_mul_to_db((float)inputVolumeMul);
|
||||
if (inputVolumeDb == -INFINITY)
|
||||
inputVolumeDb = -100;
|
||||
|
||||
|
@ -198,4 +198,4 @@ void EventHandler::HandleMediaInputActionTriggered(obs_source_t *source, ObsMedi
|
||||
eventData["inputName"] = obs_source_get_name(source);
|
||||
eventData["mediaAction"] = GetMediaInputActionString(action);
|
||||
BroadcastEvent(EventSubscription::MediaInputs, "MediaInputActionTriggered", eventData);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -165,7 +165,6 @@ namespace EventSubscription {
|
||||
*/
|
||||
All = (General | Config | Scenes | Inputs | Transitions | Filters | Outputs | SceneItems | MediaInputs | Vendors |
|
||||
Ui),
|
||||
|
||||
/**
|
||||
* Subscription value to receive the `InputVolumeMeters` high-volume event.
|
||||
*
|
||||
|
@ -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
|
||||
|
@ -24,7 +24,7 @@ with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
|
||||
#define blog_debug(msg, ...) if (IsDebugEnabled()) blog(LOG_INFO, "[debug] " msg, ##__VA_ARGS__)
|
||||
|
||||
#define OBS_WEBSOCKET_VERSION "@OBS_WEBSOCKET_VERSION@"
|
||||
#define OBS_WEBSOCKET_VERSION "@obs-websocket_VERSION@"
|
||||
|
||||
#define OBS_WEBSOCKET_RPC_VERSION @OBS_WEBSOCKET_RPC_VERSION@
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
@ -51,6 +51,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},
|
||||
@ -210,6 +211,7 @@ RequestResult RequestHandler::ProcessRequest(const Request &request)
|
||||
try {
|
||||
handler = _handlerMap.at(request.RequestType);
|
||||
} catch (const std::out_of_range &oor) {
|
||||
UNUSED_PARAMETER(oor);
|
||||
return RequestResult::Error(RequestStatus::UnknownRequestType, "Your request type is not valid.");
|
||||
}
|
||||
|
||||
@ -219,9 +221,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 &);
|
||||
@ -70,6 +70,7 @@ private:
|
||||
RequestResult GetStreamServiceSettings(const Request &);
|
||||
RequestResult SetStreamServiceSettings(const Request &);
|
||||
RequestResult GetRecordDirectory(const Request &);
|
||||
RequestResult SetRecordDirectory(const Request &);
|
||||
|
||||
// Sources
|
||||
RequestResult GetSourceActive(const Request &);
|
||||
|
@ -622,11 +622,11 @@ 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
|
||||
* @category rconfig
|
||||
* @category config
|
||||
*/
|
||||
RequestResult RequestHandler::GetRecordDirectory(const Request &)
|
||||
{
|
||||
@ -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();
|
||||
}
|
||||
|
@ -223,7 +223,8 @@ RequestResult RequestHandler::GetSourceFilter(const Request &request)
|
||||
json responseData;
|
||||
responseData["filterEnabled"] = obs_source_enabled(pair.filter);
|
||||
responseData["filterIndex"] = Utils::Obs::NumberHelper::GetSourceFilterIndex(
|
||||
pair.source, pair.filter); // Todo: Use `GetSourceFilterlist` to select this filter maybe
|
||||
pair.source,
|
||||
pair.filter); // Todo: Use `GetSourceFilterlist` to select this filter maybe
|
||||
responseData["filterKind"] = obs_source_get_id(pair.filter);
|
||||
|
||||
OBSDataAutoRelease filterSettings = obs_source_get_settings(pair.filter);
|
||||
|
@ -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"]);
|
||||
@ -311,8 +325,8 @@ 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`.
|
||||
*
|
||||
* @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
|
||||
* @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
|
||||
|
@ -106,7 +106,7 @@ RequestResult RequestHandler::GetSpecialInputs(const Request &)
|
||||
|
||||
std::vector<std::string> channels = {"desktop1", "desktop2", "mic1", "mic2", "mic3", "mic4"};
|
||||
|
||||
size_t channelId = 1;
|
||||
uint32_t channelId = 1;
|
||||
for (auto &channel : channels) {
|
||||
OBSSourceAutoRelease input = obs_get_output_source(channelId);
|
||||
if (!input)
|
||||
@ -820,9 +820,9 @@ RequestResult RequestHandler::SetInputAudioTracks(const Request &request)
|
||||
|
||||
json inputAudioTracks = request.RequestData["inputAudioTracks"];
|
||||
|
||||
long long mixers = obs_source_get_audio_mixers(input);
|
||||
uint32_t mixers = obs_source_get_audio_mixers(input);
|
||||
|
||||
for (long long i = 0; i < MAX_AUDIO_MIXES; i++) {
|
||||
for (uint32_t i = 0; i < MAX_AUDIO_MIXES; i++) {
|
||||
std::string track = std::to_string(i + 1);
|
||||
|
||||
if (!Utils::Json::Contains(inputAudioTracks, track))
|
||||
@ -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
|
||||
|
@ -278,6 +278,8 @@ RequestResult RequestHandler::GetLastReplayBufferReplay(const Request &)
|
||||
|
||||
/**
|
||||
* Gets the list of available outputs.
|
||||
*
|
||||
* @responseField outputs | Array<Object> | Array of outputs
|
||||
*
|
||||
* @requestType GetOutputList
|
||||
* @complexity 4
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
*
|
||||
@ -60,7 +60,7 @@ RequestResult RequestHandler::GetSceneItemList(const Request &request)
|
||||
*
|
||||
* @responseField sceneItems | Array<Object> | Array of scene items in the group
|
||||
*
|
||||
* @requestType GetGroupItemList
|
||||
* @requestType GetGroupSceneItemList
|
||||
* @complexity 3
|
||||
* @rpcVersion -1
|
||||
* @initialVersion 5.0.0
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user