mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Compare commits
516 Commits
5.0.0-alph
...
5.3.3
Author | SHA1 | Date | |
---|---|---|---|
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 | |||
dd4971b1cc | |||
749ecc976b | |||
d85c86e3a0 | |||
3303acfcca | |||
1cd12c1023 | |||
1da0214201 | |||
226c81ce78 | |||
ca34981aae | |||
828dbde75c | |||
ac102de1e8 | |||
20e654186c | |||
f42cd2177a | |||
2479501879 | |||
371c414281 | |||
3a5f0d89b9 | |||
9f68e0166b | |||
8b85658c61 | |||
a9c9363d4a | |||
95df4782f3 | |||
9d899376a5 | |||
d8c042fe4a | |||
c355c72f4b | |||
e6c48990d6 | |||
620f11e8a3 | |||
b02a32ce06 | |||
ce31ed177d | |||
71a32c981c | |||
4440327141 | |||
bbf9c283c0 | |||
9ac7c5890e | |||
a7698a732f | |||
e15b2edb4f | |||
7fade98407 | |||
df13ad30b7 | |||
2297432f90 | |||
be48d0bfe9 | |||
2027394d33 | |||
d7de347b37 | |||
e0057b05db | |||
aa13828cf5 | |||
db2ffa569a | |||
66c14dced5 | |||
29b2b1bd5d | |||
361547a96d | |||
b3a5c55bef | |||
f76de69b34 | |||
0b294734a2 | |||
7b52d7e015 | |||
9664f28483 | |||
d9070f9edb | |||
559212682a | |||
fa8a091a3e | |||
ab137ce8a4 | |||
5a3bed7d8b | |||
3362d3f998 | |||
7ca8140a34 | |||
341259e610 | |||
c64e360c2d | |||
7c35d6e738 | |||
b206321b05 | |||
403c69463a | |||
eeb7bac4b7 | |||
7113055218 | |||
ddf752fd03 | |||
e80bcad1e1 | |||
d2ddde3229 | |||
931a1630ce | |||
5cbc1019ff | |||
14227237d7 | |||
3e2984fd7a | |||
96a2fd8c25 | |||
38d78596ce | |||
13c7b83c34 | |||
1844f85e1f | |||
bc0b499944 | |||
ae906bb283 | |||
63dfed1cf9 | |||
873eadec05 | |||
dea0fcd561 | |||
9f7beb1c0d | |||
db9f4b24df | |||
6035294339 | |||
6a2d5968ad | |||
8f2d266dec | |||
fe64620731 | |||
24e43d0276 | |||
c0308d6ce1 | |||
506a9167c3 | |||
043444cad5 | |||
35c8a87def | |||
e451a8d6b0 | |||
02bcc0ac1b | |||
702f88cea8 | |||
6d216e0412 | |||
e6761cf286 | |||
00dd8d7821 | |||
e43ebde794 | |||
4a2654d095 | |||
6291cb1532 | |||
a90dafb971 | |||
3a96b585ce | |||
12c6527442 | |||
31997db509 | |||
85f65952bd | |||
9113ff9021 | |||
1ed095de48 | |||
a94ac24027 | |||
903b7d4171 | |||
a59ce69ba1 | |||
195c4a3ca9 | |||
3b2369ae97 | |||
af634b63fd | |||
444685c89d | |||
05aba45809 | |||
1f1a8926b1 | |||
0c5d4ba3fb | |||
947450ce4e | |||
63cc1f316d | |||
38157579a6 | |||
389cbd854c | |||
707ac3f7e3 | |||
732d5af50c | |||
0939273abf | |||
f8263caa03 | |||
5c16a11ba8 | |||
af217c05f1 | |||
e640ae1218 | |||
bb2c125601 | |||
e1cb858d2d | |||
1339202c02 | |||
4835abd9c2 | |||
964e91bbd7 | |||
9385a2449e | |||
ec79124b5f | |||
4d65c2adee | |||
851a6f8c5a | |||
e2f60b002e | |||
86506778ad | |||
0992f74fad | |||
430e61bef7 | |||
da83de7503 | |||
07249da400 | |||
899888eb6c | |||
14238027cc | |||
5cbf439f55 | |||
e05be47847 | |||
2302fdd25f | |||
1c6ec1dda2 | |||
ad347c4823 | |||
714b4db840 | |||
40ff3f6960 | |||
0f303504e1 | |||
91e3f5ee18 | |||
66f416236c | |||
b331f76d40 | |||
a898bacd79 | |||
527a008002 | |||
a0ad43c7d7 | |||
f566ccd76b | |||
2e8622e8d7 | |||
4a193d44a1 | |||
d29b87ffc1 | |||
1e6a60f545 | |||
5cd1af426a | |||
f66080a031 | |||
82ad3313e8 | |||
71bf9e9021 | |||
0c7fda28a0 | |||
e2804e2d85 | |||
b37305354d | |||
6f6fbf84d1 | |||
9749502e88 | |||
c3e6bc323a | |||
873ad1b167 | |||
9b879baf38 | |||
a40e79e987 | |||
84e649a6f7 | |||
c4ab69481b | |||
edf4e942fa | |||
b3ef9a861e | |||
54fd7af5ef | |||
2a33179588 | |||
947f261d17 | |||
906c6c4871 | |||
f7ab102c21 | |||
fdc8b5546f | |||
6f72da83ff | |||
0007987219 | |||
77f8c5be4d | |||
64c3b62360 | |||
c6afc8f981 | |||
2c2b584ecc | |||
edda844a34 | |||
d642654f49 | |||
69522024d2 | |||
24cd95bca7 | |||
0f6ee87f99 | |||
9c8f056d3e | |||
41a145c57c | |||
fab56d71ea | |||
b490e4409b | |||
8fbcbad9ec | |||
82d5468b73 | |||
2e7262fe11 | |||
5f261de143 | |||
539ee3f28f | |||
29a5cfe2fe | |||
612a50efbb | |||
20426924cd | |||
889062e44b | |||
eb8d69dca5 | |||
0ed3c9b367 | |||
e47de63786 | |||
84f90a9650 | |||
3ea8506619 | |||
d4353d4bf1 | |||
d7887b4c32 | |||
de1f843ce6 | |||
5ac813b897 | |||
43e2860709 | |||
c9c5da6837 | |||
b66d2284b3 | |||
fcbe11616d | |||
6cec018c8d | |||
6d684eb07f | |||
5704ea2970 | |||
d48ddef031 | |||
1ac6ac6c87 | |||
bc7b8d330a | |||
c95511eb5f | |||
2a4e86d8da | |||
4d8013b07e | |||
b1de9c8e79 | |||
8e9b3ef7bb | |||
2e079ad681 | |||
29a72f9af8 | |||
0a294a558e | |||
959347337f | |||
c8c6417d63 | |||
2005ced682 | |||
4ca259b790 | |||
c720df5938 | |||
32a9e12f62 | |||
60f12a16f3 | |||
99cbaaf34c | |||
bc1d5386a5 | |||
bd6c663775 | |||
18ed1589ae | |||
07a20b6458 | |||
6cb8eef96d | |||
5ab091a40b | |||
c60d09246c | |||
061c228ad5 | |||
4076c0baa9 | |||
01013c1b27 | |||
1dbb7a9686 | |||
061fb6f012 | |||
32e4ad74b7 | |||
0f17d3d6f8 | |||
08eb2defbc | |||
7403264d42 | |||
32be21886c | |||
d5a702b0e8 | |||
0671ded7d1 | |||
9197a48088 | |||
5faadc12de | |||
45f7661a5d | |||
aa46bb74a5 | |||
af52a26e68 | |||
69494d9c85 | |||
152faa5fe2 | |||
622e1c9aeb | |||
ee3216968d | |||
4e956d1ef4 | |||
42c78f1831 | |||
1b25e98dc2 | |||
3687086ce0 | |||
f0b207d021 | |||
16ea2c82e1 | |||
981538aa2a | |||
9f71e4af2c | |||
0fc813f48b | |||
df7af451a7 | |||
a8d27ede9e | |||
45854e2949 | |||
181003af89 | |||
2218b7956c | |||
0e8650dbd2 | |||
da4297ee88 | |||
5350c115bf | |||
d09571f0e3 | |||
d04d42240a | |||
9ca83e7570 | |||
aa0ba78e46 | |||
b91ad0f790 | |||
4e0b8c5f11 | |||
ea948766a5 | |||
c73a153c9a | |||
61973e75dc | |||
59e1083557 | |||
0c2e40263a | |||
78d02696d0 | |||
7a888c2f92 | |||
342164dfb5 | |||
a4e62acf25 | |||
d811c95e10 | |||
eebcc25115 | |||
c9fa09edc4 | |||
69ccc99921 | |||
a5a19b9952 | |||
66ff329da4 | |||
af0ac63f2c | |||
802cb38ff6 | |||
117dcb9567 | |||
d20c0d0da7 | |||
a9d86ce35c | |||
b9b8e38998 | |||
e89c0c2b05 | |||
7e1e1bc33c | |||
537595658d | |||
c43d829845 | |||
3d2fb65357 | |||
96dcc49adb | |||
25b3bd44ba | |||
bcdb8ee352 | |||
333737f400 | |||
82d8a3d7ce | |||
d7f96b6dea | |||
c16669c7b0 | |||
0269209d59 | |||
d2d2bdd730 | |||
9a8587d6df | |||
8a45560297 | |||
fb0656c31e | |||
26bef074ac | |||
e18aaff661 | |||
4271730dc2 | |||
b86107a699 | |||
6035f258d2 | |||
a40160e305 | |||
b58f6e8366 | |||
670fa7c249 | |||
d858118e28 | |||
bb71a4c77b | |||
3dfd091e71 | |||
a3d0ff5eea | |||
5988f0f97a | |||
eb6015df05 | |||
15188e3ebe | |||
1ecf2a4fdb | |||
292b2b0d3b | |||
b3676586e4 | |||
6d882ba94f | |||
d669db24ac | |||
fc8dce45ee | |||
ac78acd28c | |||
f37edbd71c | |||
78f9c93739 | |||
96c5818395 | |||
85fa41962d | |||
ccb42f1f0c |
107
.clang-format
Normal file
107
.clang-format
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
# please use clang-format version 8 or later
|
||||||
|
|
||||||
|
Standard: Cpp11
|
||||||
|
AccessModifierOffset: -8
|
||||||
|
AlignAfterOpenBracket: Align
|
||||||
|
AlignConsecutiveAssignments: false
|
||||||
|
AlignConsecutiveDeclarations: false
|
||||||
|
AlignEscapedNewlines: Left
|
||||||
|
AlignOperands: true
|
||||||
|
AlignTrailingComments: true
|
||||||
|
#AllowAllArgumentsOnNextLine: false # requires clang-format 9
|
||||||
|
#AllowAllConstructorInitializersOnNextLine: false # requires clang-format 9
|
||||||
|
AllowAllParametersOfDeclarationOnNextLine: false
|
||||||
|
AllowShortBlocksOnASingleLine: false
|
||||||
|
AllowShortCaseLabelsOnASingleLine: false
|
||||||
|
AllowShortFunctionsOnASingleLine: Inline
|
||||||
|
AllowShortIfStatementsOnASingleLine: false
|
||||||
|
#AllowShortLambdasOnASingleLine: Inline # requires clang-format 9
|
||||||
|
AllowShortLoopsOnASingleLine: false
|
||||||
|
AlwaysBreakAfterDefinitionReturnType: None
|
||||||
|
AlwaysBreakAfterReturnType: None
|
||||||
|
AlwaysBreakBeforeMultilineStrings: false
|
||||||
|
AlwaysBreakTemplateDeclarations: false
|
||||||
|
BinPackArguments: true
|
||||||
|
BinPackParameters: true
|
||||||
|
BraceWrapping:
|
||||||
|
AfterClass: false
|
||||||
|
AfterControlStatement: false
|
||||||
|
AfterEnum: false
|
||||||
|
AfterFunction: true
|
||||||
|
AfterNamespace: false
|
||||||
|
AfterObjCDeclaration: false
|
||||||
|
AfterStruct: false
|
||||||
|
AfterUnion: false
|
||||||
|
AfterExternBlock: false
|
||||||
|
BeforeCatch: false
|
||||||
|
BeforeElse: false
|
||||||
|
IndentBraces: false
|
||||||
|
SplitEmptyFunction: true
|
||||||
|
SplitEmptyRecord: true
|
||||||
|
SplitEmptyNamespace: true
|
||||||
|
BreakBeforeBinaryOperators: None
|
||||||
|
BreakBeforeBraces: Custom
|
||||||
|
BreakBeforeTernaryOperators: true
|
||||||
|
BreakConstructorInitializers: BeforeColon
|
||||||
|
BreakStringLiterals: false # apparently unpredictable
|
||||||
|
ColumnLimit: 132
|
||||||
|
CompactNamespaces: false
|
||||||
|
ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
||||||
|
ConstructorInitializerIndentWidth: 8
|
||||||
|
ContinuationIndentWidth: 8
|
||||||
|
Cpp11BracedListStyle: true
|
||||||
|
DerivePointerAlignment: false
|
||||||
|
DisableFormat: false
|
||||||
|
FixNamespaceComments: false
|
||||||
|
ForEachMacros:
|
||||||
|
- 'json_object_foreach'
|
||||||
|
- 'json_object_foreach_safe'
|
||||||
|
- 'json_array_foreach'
|
||||||
|
IncludeBlocks: Preserve
|
||||||
|
IndentCaseLabels: false
|
||||||
|
IndentPPDirectives: None
|
||||||
|
IndentWidth: 8
|
||||||
|
IndentWrappedFunctionNames: false
|
||||||
|
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||||
|
MaxEmptyLinesToKeep: 1
|
||||||
|
NamespaceIndentation: All
|
||||||
|
#ObjCBinPackProtocolList: Auto # requires clang-format 7
|
||||||
|
ObjCBlockIndentWidth: 8
|
||||||
|
ObjCSpaceAfterProperty: true
|
||||||
|
ObjCSpaceBeforeProtocolList: true
|
||||||
|
|
||||||
|
PenaltyBreakAssignment: 10
|
||||||
|
PenaltyBreakBeforeFirstCallParameter: 30
|
||||||
|
PenaltyBreakComment: 10
|
||||||
|
PenaltyBreakFirstLessLess: 0
|
||||||
|
PenaltyBreakString: 10
|
||||||
|
PenaltyExcessCharacter: 100
|
||||||
|
PenaltyReturnTypeOnItsOwnLine: 60
|
||||||
|
|
||||||
|
PointerAlignment: Right
|
||||||
|
ReflowComments: false
|
||||||
|
SortIncludes: false
|
||||||
|
SortUsingDeclarations: false
|
||||||
|
SpaceAfterCStyleCast: false
|
||||||
|
#SpaceAfterLogicalNot: false # requires clang-format 9
|
||||||
|
SpaceAfterTemplateKeyword: false
|
||||||
|
SpaceBeforeAssignmentOperators: true
|
||||||
|
#SpaceBeforeCtorInitializerColon: true # requires clang-format 7
|
||||||
|
#SpaceBeforeInheritanceColon: true # requires clang-format 7
|
||||||
|
SpaceBeforeParens: ControlStatements
|
||||||
|
#SpaceBeforeRangeBasedForLoopColon: true # requires clang-format 7
|
||||||
|
SpaceInEmptyParentheses: false
|
||||||
|
SpacesBeforeTrailingComments: 1
|
||||||
|
SpacesInAngles: false
|
||||||
|
SpacesInCStyleCastParentheses: false
|
||||||
|
SpacesInContainerLiterals: false
|
||||||
|
SpacesInParentheses: false
|
||||||
|
SpacesInSquareBrackets: false
|
||||||
|
#StatementMacros: # requires clang-format 8
|
||||||
|
# - 'Q_OBJECT'
|
||||||
|
TabWidth: 8
|
||||||
|
#TypenameMacros: # requires clang-format 9
|
||||||
|
# - 'DARRAY'
|
||||||
|
UseTab: ForContinuationAndIndentation
|
||||||
|
---
|
||||||
|
Language: ObjC
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,10 +1,25 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
[*]
|
[*]
|
||||||
|
end_of_line = lf
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
|
|
||||||
[*.{c,cpp,h,hpp}]
|
[*.{c,cpp,h,hpp}]
|
||||||
indent_style = tab
|
indent_style = tab
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
|
|
||||||
|
[CMakeLists.txt]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
[**/CMakeLists.txt]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
[cmake/**/*.cmake]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
[*.{yml,yaml}]
|
[*.{yml,yaml}]
|
||||||
indent_style = space
|
indent_style = space
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
4
.github/FUNDING.yml
vendored
4
.github/FUNDING.yml
vendored
@ -1,3 +1 @@
|
|||||||
open_collective: obs-websocket
|
open_collective: obs-websocket-dev
|
||||||
github: Palakis
|
|
||||||
custom: https://www.paypal.me/stephanelepin
|
|
||||||
|
20
.github/ISSUE_TEMPLATE.md
vendored
20
.github/ISSUE_TEMPLATE.md
vendored
@ -1,20 +0,0 @@
|
|||||||
##### Issue type
|
|
||||||
<!--- Uncomment one of the two options below. -->
|
|
||||||
|
|
||||||
<!--- - Bug report -->
|
|
||||||
<!--- - Feature request -->
|
|
||||||
|
|
||||||
##### Description
|
|
||||||
<!--- Describe the bug encountered or feature requested. -->
|
|
||||||
|
|
||||||
##### Steps to reproduce and other useful info
|
|
||||||
<!--- If it's a bug, please describe the steps to reproduce it and PLEASE include an OBS log file. Otherwise, remove this section. -->
|
|
||||||
|
|
||||||
##### Technical information
|
|
||||||
- **Operating System:**
|
|
||||||
- **OBS Studio version:**
|
|
||||||
- **obs-websocket version:**
|
|
||||||
|
|
||||||
##### Development Environment
|
|
||||||
<!--- If you're trying to compile obs-websocket, please describe your compiler type and version (e.g: GCC 4.7, VC2013, ...), and the CMake settings used. -->
|
|
||||||
<!--- Remove this section if it does not apply. -->
|
|
127
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
Normal file
127
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
name: Bug Report
|
||||||
|
description: Report a bug or crash
|
||||||
|
title: "Bug: "
|
||||||
|
labels: ["Issue: Bug - Unconfirmed"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
id: md_welcome
|
||||||
|
attributes:
|
||||||
|
value: This form is for reporting bugs for obs-websocket!
|
||||||
|
- type: dropdown
|
||||||
|
id: os_info
|
||||||
|
attributes:
|
||||||
|
label: Operating System Info
|
||||||
|
description: What Operating System are you running?
|
||||||
|
options:
|
||||||
|
- Windows 11
|
||||||
|
- Windows 10
|
||||||
|
- Windows 8.1
|
||||||
|
- macOS 12.0
|
||||||
|
- macOS 11.6
|
||||||
|
- macOS 11.5
|
||||||
|
- macOS 11.4
|
||||||
|
- macOS 11.3
|
||||||
|
- macOS 11.2
|
||||||
|
- macOS 11.1
|
||||||
|
- macOS 11.0
|
||||||
|
- macOS 10.15
|
||||||
|
- macOS 10.14
|
||||||
|
- macOS 10.13
|
||||||
|
- Ubuntu 22.04 LTS
|
||||||
|
- Ubuntu 20.10
|
||||||
|
- Ubuntu 20.04 LTS
|
||||||
|
- Other
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: os_info_other
|
||||||
|
attributes:
|
||||||
|
label: Other OS
|
||||||
|
description: "If \"Other\" was selected above, what OS are you using?"
|
||||||
|
placeholder: "e.g., Arch Linux, FreeBSD"
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: dropdown
|
||||||
|
id: obs_version
|
||||||
|
attributes:
|
||||||
|
label: OBS Studio Version
|
||||||
|
description: What version of OBS Studio are you using?
|
||||||
|
options:
|
||||||
|
- 29.0.x
|
||||||
|
- 28.1.x
|
||||||
|
- 28.0.x
|
||||||
|
- 27.2.4
|
||||||
|
- Git
|
||||||
|
- Other
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: obs_version_other
|
||||||
|
attributes:
|
||||||
|
label: OBS Studio Version (Other)
|
||||||
|
description: "If \"Other\" was selected above, what version of OBS Studio are you using?"
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: dropdown
|
||||||
|
id: obs_websocket_version
|
||||||
|
attributes:
|
||||||
|
label: obs-websocket Version
|
||||||
|
description: What version of obs-websocket are you using?
|
||||||
|
options:
|
||||||
|
- 5.1.0
|
||||||
|
- 5.0.1
|
||||||
|
- 5.0.0
|
||||||
|
- Git
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: obs_log_url
|
||||||
|
attributes:
|
||||||
|
label: OBS Studio Log URL
|
||||||
|
description: Please provide the obsproject.com URL (from Help menu > Log Files > Upload Current/Last Log File) to the OBS log file where this issue occurred.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: obs_crash_log_url
|
||||||
|
attributes:
|
||||||
|
label: OBS Studio Crash Log URL
|
||||||
|
description: If this is a crash report, please provide the obsproject.com URL to the OBS crash log file where this issue occurred.
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: textarea
|
||||||
|
id: expected_behavior
|
||||||
|
attributes:
|
||||||
|
label: Expected Behavior
|
||||||
|
description: "What did you expect to happen?"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: current_behavior
|
||||||
|
attributes:
|
||||||
|
label: Current Behavior
|
||||||
|
description: "What actually happened?"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: steps_to_reproduce
|
||||||
|
attributes:
|
||||||
|
label: Steps to Reproduce
|
||||||
|
description: "How do you trigger this bug? Please walk us through it step by step."
|
||||||
|
placeholder: |
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
...
|
||||||
|
value: |
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
...
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: additional_notes
|
||||||
|
attributes:
|
||||||
|
label: Anything else we should know?
|
||||||
|
validations:
|
||||||
|
required: false
|
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
blank_issues_enabled: false
|
||||||
|
contact_links:
|
||||||
|
- name: Help/Support
|
||||||
|
url: https://discord.gg/UjfPmYdRPZ
|
||||||
|
about: Development-related help for obs-websocket
|
42
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
Normal file
42
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
name: Feature Request
|
||||||
|
description: Request for a new feature (request/event) to be added to obs-websocket
|
||||||
|
title: "Feature Request: "
|
||||||
|
labels: ["Issue: Feature Request"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
id: md_welcome
|
||||||
|
attributes:
|
||||||
|
value: This form is for requesting features for obs-websocket!
|
||||||
|
- type: dropdown
|
||||||
|
id: feature_request_type
|
||||||
|
attributes:
|
||||||
|
label: Feature Request Type
|
||||||
|
description: What kind of feature would you like to see added to obs-websocket?
|
||||||
|
options:
|
||||||
|
- RPC Request
|
||||||
|
- RPC Event
|
||||||
|
- Settings Dialog
|
||||||
|
- Other
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: feature_request_type_other
|
||||||
|
attributes:
|
||||||
|
label: Feature Request Type (Other)
|
||||||
|
description: "If \"Other\" was selected above, what type of feature request do you have?"
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: textarea
|
||||||
|
id: requested_feature
|
||||||
|
attributes:
|
||||||
|
label: Requested Feature
|
||||||
|
description: "What feature would you like to see added?"
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: requested_feature_scenario
|
||||||
|
attributes:
|
||||||
|
label: Requested Feature Usage Scenario
|
||||||
|
description: "What is a use-case where this feature would be helpful?"
|
||||||
|
validations:
|
||||||
|
required: true
|
15
.github/pull_request_template.md
vendored
15
.github/pull_request_template.md
vendored
@ -1,6 +1,6 @@
|
|||||||
<!--- Please fill out the following template, which will help other contributors review your Pull Request. -->
|
<!--- Please fill out the following template, which will help other contributors review your Pull Request. -->
|
||||||
|
|
||||||
<!--- Make sure you’ve read the contribution guidelines here: https://github.com/Palakis/obs-websocket/blob/master/CONTRIBUTING.md -->
|
<!--- Make sure you’ve read the contribution guidelines here: https://github.com/obsproject/obs-websocket/wiki/Contributing-Guidelines -->
|
||||||
|
|
||||||
### Description
|
### Description
|
||||||
<!--- Describe your changes. -->
|
<!--- Describe your changes. -->
|
||||||
@ -18,18 +18,17 @@ Tested OS(s):
|
|||||||
<!--- What types of changes does your PR introduce? Uncomment all that apply -->
|
<!--- What types of changes does your PR introduce? Uncomment all that apply -->
|
||||||
|
|
||||||
<!--- - Bug fix (non-breaking change which fixes an issue) -->
|
<!--- - Bug fix (non-breaking change which fixes an issue) -->
|
||||||
<!--- - New request/event (non-breaking) -->
|
|
||||||
<!--- - Documentation change (a change to documentation pages) -->
|
|
||||||
<!--- - Enhancement (modification to a current event/request which adds functionality) -->
|
|
||||||
<!--- - Performance enhancement (non-breaking change which improves efficiency) -->
|
<!--- - Performance enhancement (non-breaking change which improves efficiency) -->
|
||||||
<!--- - Code cleanup (non-breaking change which makes code smaller or more readable) -->
|
<!--- - Code cleanup (non-breaking change which makes code smaller or more readable) -->
|
||||||
|
<!--- - New request/event (non-breaking) -->
|
||||||
|
<!--- - Documentation change (a change to documentation pages) -->
|
||||||
|
<!--- - Other Enhancement (anything not applicable to what is listed) -->
|
||||||
|
|
||||||
### Checklist:
|
### Checklist:
|
||||||
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
|
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
|
||||||
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
|
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
|
||||||
- [ ] I have read the [**contributing** document](https://github.com/Palakis/obs-websocket/blob/4.x-current/CONTRIBUTING.md).
|
- [ ] I have read the [Contributing Guidelines](https://github.com/obsproject/obs-websocket/wiki/Contributing-Guidelines).
|
||||||
- [ ] My code is not on the master branch.
|
|
||||||
- [ ] The code has been tested.
|
|
||||||
- [ ] All commit messages are properly formatted and commits squashed where appropriate.
|
- [ ] All commit messages are properly formatted and commits squashed where appropriate.
|
||||||
|
- [ ] My code is not on `master` or a `release/*` branch.
|
||||||
|
- [ ] The code has been tested.
|
||||||
- [ ] I have included updates to all appropriate documentation.
|
- [ ] I have included updates to all appropriate documentation.
|
||||||
|
|
||||||
|
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
|
24
.github/workflows/lint.yml
vendored
Normal file
24
.github/workflows/lint.yml
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
name: Code Quality
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
markdown:
|
||||||
|
name: Lint Markdown
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: contains(github.event.head_commit.message, '[skip ci]') != true
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Generate docs
|
||||||
|
run: cd docs && ./build_docs.sh
|
||||||
|
- name: Run markdownlint-cli
|
||||||
|
uses: nosborn/github-action-markdown-cli@v3.0.1
|
||||||
|
with:
|
||||||
|
files: .
|
356
.github/workflows/main.yml
vendored
356
.github/workflows/main.yml
vendored
@ -1,356 +0,0 @@
|
|||||||
name: "CI Multiplatform Build"
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
paths-ignore:
|
|
||||||
- 'docs/**'
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags:
|
|
||||||
- '[45].[0-9]+.[0-9]+*'
|
|
||||||
pull_request:
|
|
||||||
paths-ignore:
|
|
||||||
- 'docs/**'
|
|
||||||
- '**.md'
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
windows:
|
|
||||||
name: 'Windows 32/64-bit'
|
|
||||||
runs-on: [windows-latest]
|
|
||||||
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=$(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 --tags --abbrev=0)
|
|
||||||
echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV
|
|
||||||
if [ "$GIT_TAG" ] ; then \
|
|
||||||
VERSION="$GIT_TAG" ; \
|
|
||||||
else \
|
|
||||||
VERSION="$GIT_HASH-git" ; \
|
|
||||||
fi
|
|
||||||
echo "PACKAGE_VERSION=$VERSION" >> $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 }}'
|
|
||||||
restore-keys: |
|
|
||||||
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 }}'
|
|
||||||
restore-keys: |
|
|
||||||
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 }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-${{ env.CACHE_NAME }}-
|
|
||||||
- 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 ..
|
|
||||||
- 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 }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-${{ env.CACHE_NAME }}-
|
|
||||||
- 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 ..
|
|
||||||
- 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" ..
|
|
||||||
- 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" ..
|
|
||||||
- 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: |
|
|
||||||
if [ "${{ env.GIT_TAG }}" ] ; then \
|
|
||||||
FILENAME="obs-websocket-${{ env.GIT_TAG }}-Windows" ; \
|
|
||||||
else \
|
|
||||||
FILENAME="obs-websocket-${{ env.GIT_HASH }}-git-Windows" ; \
|
|
||||||
fi
|
|
||||||
echo "WIN_FILENAME=$FILENAME" >> $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=$(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 --tags --abbrev=0)
|
|
||||||
echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV
|
|
||||||
if [ "$GIT_TAG" ] ; then \
|
|
||||||
VERSION="$GIT_TAG" ; \
|
|
||||||
else \
|
|
||||||
VERSION="$GIT_HASH-git" ; \
|
|
||||||
fi
|
|
||||||
echo "PACKAGE_VERSION=$VERSION" >> $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 -DCMAKE_BUILD_TYPE=Release .. ; \
|
|
||||||
else \
|
|
||||||
cmake -DLIBOBS_INCLUDE_DIR=${{ github.workspace }}/obs-studio/libobs -DCMAKE_INSTALL_PREFIX=/usr -DUSE_UBUNTU_FIX=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: |
|
|
||||||
if [ "${{ env.GIT_TAG }}" ] ; then \
|
|
||||||
FILENAME="obs-websocket-${{ env.GIT_TAG }}-Ubuntu64.deb" ; \
|
|
||||||
else \
|
|
||||||
FILENAME="obs-websocket-${{ env.GIT_HASH }}-git-Ubuntu64.deb" ; \
|
|
||||||
fi
|
|
||||||
echo "FILENAME=$FILENAME" >> $GITHUB_ENV
|
|
||||||
- name: 'Package ${{ env.FILENAME }}'
|
|
||||||
if: success()
|
|
||||||
working-directory: ${{ github.workspace }}/obs-websocket
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
cd ./build
|
|
||||||
sudo checkinstall -y --type=debian --fstrans=no -nodoc \
|
|
||||||
--backup=no --deldoc=yes --install=no --pkgname=obs-websocket --pkgversion=${{ env.PACKAGE_VERSION }} \
|
|
||||||
--pkglicense="GPLv2.0" --maintainer="${{ github.event.pusher.email }}" --pkggroup="video" \
|
|
||||||
--pkgsource="${{ github.event.repository.html_url }}" \
|
|
||||||
--requires="obs-studio,libqt5network5,libqt5concurrent5,qt5-image-formats-plugins" \
|
|
||||||
--pakdir="../package"
|
|
||||||
sudo chmod ao+r ../package/*
|
|
||||||
sudo mv ../package/* ../package/${{ env.FILENAME }}
|
|
||||||
cd -
|
|
||||||
- name: 'Publish ${{ env.FILENAME }}'
|
|
||||||
if: success()
|
|
||||||
uses: actions/upload-artifact@v2-preview
|
|
||||||
with:
|
|
||||||
name: 'obs-websocket-${{ env.PACKAGE_VERSION }}-Ubuntu64'
|
|
||||||
path: '${{ github.workspace }}/obs-websocket/package/*.deb'
|
|
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,11 +1,12 @@
|
|||||||
*~
|
*~
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
.idea
|
||||||
|
.vscode
|
||||||
/build/
|
/build/
|
||||||
/build32/
|
/build32/
|
||||||
/build64/
|
/build64/
|
||||||
/release/
|
/release/
|
||||||
/package/
|
/package/
|
||||||
/installer/Output/
|
/installer/Output/
|
||||||
.idea
|
|
||||||
.vscode
|
|
||||||
/docs/node_modules/
|
/docs/node_modules/
|
||||||
|
/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
|
|
||||||
|
2
.markdownlintignore
Normal file
2
.markdownlintignore
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/deps
|
||||||
|
/docs/comments/node_modules
|
3
.markdownlintrc
Normal file
3
.markdownlintrc
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"line-length": false
|
||||||
|
}
|
66
BUILDING.md
66
BUILDING.md
@ -1,66 +0,0 @@
|
|||||||
# Compiling obs-websocket
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
You'll need [Qt 5.15.2 on Windows/Mac](https://download.qt.io/official_releases/qt/5.10/) or Qt 5.12.8 on Linux,
|
|
||||||
[CMake](https://cmake.org/download/) and a working [OBS Studio development environment](https://obsproject.com/wiki/install-instructions) installed on your
|
|
||||||
computer.
|
|
||||||
|
|
||||||
## Windows
|
|
||||||
|
|
||||||
In cmake-gui, you'll have to set the following variables :
|
|
||||||
|
|
||||||
- **QTDIR** (path) : location of the Qt environment suited for your compiler and architecture
|
|
||||||
- **LIBOBS_INCLUDE_DIR** (path) : location of the libobs subfolder in the source code of OBS Studio
|
|
||||||
- **LIBOBS_LIB** (filepath) : location of the obs.lib file
|
|
||||||
- **OBS_FRONTEND_LIB** (filepath) : location of the obs-frontend-api.lib file
|
|
||||||
|
|
||||||
## Linux
|
|
||||||
|
|
||||||
On Debian/Ubuntu :
|
|
||||||
|
|
||||||
```shell
|
|
||||||
sudo apt-get install libboost-all-dev
|
|
||||||
git clone --recursive https://github.com/Palakis/obs-websocket.git
|
|
||||||
cd obs-websocket
|
|
||||||
mkdir build && cd build
|
|
||||||
cmake -DLIBOBS_INCLUDE_DIR="<path to the libobs sub-folder in obs-studio's source code>" -DCMAKE_INSTALL_PREFIX=/usr -DUSE_UBUNTU_FIX=true ..
|
|
||||||
make -j4
|
|
||||||
sudo make install
|
|
||||||
```
|
|
||||||
|
|
||||||
On other linux OS's, use this cmake command instead:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
cmake -DLIBOBS_INCLUDE_DIR="<path to the libobs sub-folder in obs-studio's source code>" -DCMAKE_INSTALL_PREFIX=/usr ..
|
|
||||||
```
|
|
||||||
|
|
||||||
## OS X
|
|
||||||
|
|
||||||
As a prerequisite, you will need Xcode for your current OSX version, the Xcode command line tools, and [Homebrew](https://brew.sh/).
|
|
||||||
Homebrew's setup will guide you in getting your system set up, you should be good to go once Homebrew is successfully up and running.
|
|
||||||
|
|
||||||
Use of the macOS CI scripts is recommended. Please note that these
|
|
||||||
scripts install new software and can change several settings on your system. An
|
|
||||||
existing obs-studio development environment is not required, as
|
|
||||||
`install-build-obs-macos.sh` will install it for you. If you already have a
|
|
||||||
working obs-studio development environment and have built obs-studio, you can
|
|
||||||
skip that script.
|
|
||||||
|
|
||||||
Of course, you're encouraged to dig through the contents of these scripts to
|
|
||||||
look for issues or specificities.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
git clone --recursive https://github.com/Palakis/obs-websocket.git
|
|
||||||
cd obs-websocket
|
|
||||||
./CI/install-dependencies-macos.sh
|
|
||||||
./CI/install-build-obs-macos.sh
|
|
||||||
./CI/build-macos.sh
|
|
||||||
./CI/package-macos.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
This will result in a ready-to-use `obs-websocket.pkg` installer in the `release` subfolder.
|
|
||||||
|
|
||||||
## Automated Builds
|
|
||||||
|
|
||||||

|
|
@ -3,13 +3,13 @@ set -e
|
|||||||
echo "-- Generating documentation."
|
echo "-- Generating documentation."
|
||||||
echo "-- Node version: $(node -v)"
|
echo "-- Node version: $(node -v)"
|
||||||
echo "-- NPM version: $(npm -v)"
|
echo "-- NPM version: $(npm -v)"
|
||||||
|
echo "-- Python3 version: $(python3 -V)"
|
||||||
|
|
||||||
git fetch origin
|
git fetch origin
|
||||||
git checkout ${CHECKOUT_REF/refs\/heads\//}
|
git checkout ${CHECKOUT_REF/refs\/heads\//}
|
||||||
|
|
||||||
cd docs
|
cd docs
|
||||||
npm install
|
bash build_docs.sh
|
||||||
npm run build
|
|
||||||
|
|
||||||
echo "-- Documentation successfully generated."
|
echo "-- Documentation successfully generated."
|
||||||
|
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
brew "jack"
|
|
||||||
brew "speexdsp"
|
|
||||||
brew "cmake"
|
|
||||||
brew "freetype"
|
|
||||||
brew "fdk-aac"
|
|
@ -1,26 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
OSTYPE=$(uname)
|
|
||||||
|
|
||||||
if [ "${OSTYPE}" != "Darwin" ]; then
|
|
||||||
echo "[obs-websocket - Error] macOS build script can be run on Darwin-type OS only."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
HAS_CMAKE=$(type cmake 2>/dev/null)
|
|
||||||
|
|
||||||
if [ "${HAS_CMAKE}" = "" ]; then
|
|
||||||
echo "[obs-websocket - Error] CMake not installed - please run 'install-dependencies-macos.sh' first."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "[obs-websocket] Building 'obs-websocket' for macOS."
|
|
||||||
mkdir -p build && cd build
|
|
||||||
cmake .. \
|
|
||||||
-DQTDIR=/tmp/obsdeps \
|
|
||||||
-DLIBOBS_INCLUDE_DIR=../../obs-studio/libobs \
|
|
||||||
-DLIBOBS_LIB=../../obs-studio/libobs \
|
|
||||||
-DOBS_FRONTEND_LIB="$(pwd)/../../obs-studio/build/UI/obs-frontend-api/libobs-frontend-api.dylib" \
|
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
|
||||||
&& make -j4
|
|
@ -1,39 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
OSTYPE=$(uname)
|
|
||||||
|
|
||||||
if [ "${OSTYPE}" != "Darwin" ]; then
|
|
||||||
echo "[obs-websocket - Error] macOS obs-studio build script can be run on Darwin-type OS only."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
HAS_CMAKE=$(type cmake 2>/dev/null)
|
|
||||||
HAS_GIT=$(type git 2>/dev/null)
|
|
||||||
|
|
||||||
if [ "${HAS_CMAKE}" = "" ]; then
|
|
||||||
echo "[obs-websocket - Error] CMake not installed - please run 'install-dependencies-macos.sh' first."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${HAS_GIT}" = "" ]; then
|
|
||||||
echo "[obs-websocket - Error] Git not installed - please install Xcode developer tools or via Homebrew."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Build obs-studio
|
|
||||||
cd ..
|
|
||||||
echo "[obs-websocket] Cloning obs-studio from GitHub.."
|
|
||||||
git clone https://github.com/obsproject/obs-studio
|
|
||||||
cd obs-studio
|
|
||||||
OBSLatestTag=$(git describe --tags --abbrev=0)
|
|
||||||
git checkout $OBSLatestTag
|
|
||||||
mkdir build && cd build
|
|
||||||
echo "[obs-websocket] Building obs-studio.."
|
|
||||||
cmake .. \
|
|
||||||
-DQTDIR=/tmp/obsdeps \
|
|
||||||
-DDepsPath=/tmp/obsdeps \
|
|
||||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 \
|
|
||||||
-DDISABLE_PLUGINS=true \
|
|
||||||
-DENABLE_SCRIPTING=0 \
|
|
||||||
-DCMAKE_PREFIX_PATH=/tmp/obsdeps/lib/cmake \
|
|
||||||
&& make -j4
|
|
@ -1,57 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
OSTYPE=$(uname)
|
|
||||||
|
|
||||||
if [ "${OSTYPE}" != "Darwin" ]; then
|
|
||||||
echo "[obs-websocket - Error] macOS install dependencies script can be run on Darwin-type OS only."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
HAS_BREW=$(type brew 2>/dev/null)
|
|
||||||
|
|
||||||
if [ "${HAS_BREW}" = "" ]; then
|
|
||||||
echo "[obs-websocket - Error] Please install Homebrew (https://www.brew.sh/) to build obs-websocket on macOS."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# OBS Studio Brew Deps
|
|
||||||
echo "[obs-websocket] Updating Homebrew.."
|
|
||||||
brew update >/dev/null
|
|
||||||
echo "[obs-websocket] Checking installed Homebrew formulas.."
|
|
||||||
|
|
||||||
if [ -d /usr/local/opt/openssl@1.0.2t ]; then
|
|
||||||
brew uninstall openssl@1.0.2t
|
|
||||||
brew untap local/openssl
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -d /usr/local/opt/python@2.7.17 ]; then
|
|
||||||
brew uninstall python@2.7.17
|
|
||||||
brew untap local/python2
|
|
||||||
fi
|
|
||||||
|
|
||||||
brew bundle --file ./CI/macos/Brewfile
|
|
||||||
|
|
||||||
# Fetch and install Packages app
|
|
||||||
# =!= NOTICE =!=
|
|
||||||
# Installs a LaunchDaemon under /Library/LaunchDaemons/fr.whitebox.packages.build.dispatcher.plist
|
|
||||||
# =!= NOTICE =!=
|
|
||||||
|
|
||||||
HAS_PACKAGES=$(type packagesbuild 2>/dev/null)
|
|
||||||
|
|
||||||
if [ "${HAS_PACKAGES}" = "" ]; then
|
|
||||||
echo "[obs-websocket] Installing Packaging app (might require password due to 'sudo').."
|
|
||||||
curl -L -O http://s.sudre.free.fr/Software/files/Packages.dmg
|
|
||||||
sudo hdiutil attach ./Packages.dmg
|
|
||||||
sudo installer -pkg /Volumes/Packages\ 1.2.9/Install\ Packages.pkg -target /
|
|
||||||
fi
|
|
||||||
|
|
||||||
# OBS Deps
|
|
||||||
echo "[obs-websocket] Installing obs-websocket dependency 'OBS Deps ${OBS_DEPS_VERSION}'.."
|
|
||||||
wget --quiet --retry-connrefused --waitretry=1 https://github.com/obsproject/obs-deps/releases/download/${OBS_DEPS_VERSION}/macos-deps-${OBS_DEPS_VERSION}.tar.gz
|
|
||||||
tar -xf ./macos-deps-${OBS_DEPS_VERSION}.tar.gz -C /tmp
|
|
||||||
|
|
||||||
# Qt deps
|
|
||||||
echo "[obs-websocket] Installing obs-websocket dependency 'Qt ${QT_VERSION}'.."
|
|
||||||
curl -L -O https://github.com/obsproject/obs-deps/releases/download/${OBS_DEPS_VERSION}/macos-qt-${QT_VERSION}-${OBS_DEPS_VERSION}.tar.gz
|
|
||||||
tar -xf ./macos-qt-${QT_VERSION}-${OBS_DEPS_VERSION}.tar.gz -C "/tmp"
|
|
||||||
xattr -r -d com.apple.quarantine /tmp/obsdeps
|
|
@ -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>fr.palakis.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>
|
|
@ -1,89 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
OSTYPE=$(uname)
|
|
||||||
|
|
||||||
if [ "${OSTYPE}" != "Darwin" ]; then
|
|
||||||
echo "[obs-websocket - Error] macOS package script can be run on Darwin-type OS only."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "[obs-websocket] Preparing package build"
|
|
||||||
|
|
||||||
GIT_HASH=$(git rev-parse --short HEAD)
|
|
||||||
GIT_BRANCH_OR_TAG=$(git name-rev --name-only HEAD | awk -F/ '{print $NF}')
|
|
||||||
|
|
||||||
VERSION="$GIT_HASH-$GIT_BRANCH_OR_TAG"
|
|
||||||
|
|
||||||
FILENAME_UNSIGNED="obs-websocket-$VERSION-Unsigned.pkg"
|
|
||||||
FILENAME="obs-websocket-$VERSION.pkg"
|
|
||||||
|
|
||||||
echo "[obs-websocket] Modifying obs-websocket.so linking"
|
|
||||||
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 \
|
|
||||||
./build/obs-websocket.so
|
|
||||||
|
|
||||||
# Check if replacement worked
|
|
||||||
echo "[obs-websocket] Dependencies for obs-websocket"
|
|
||||||
otool -L ./build/obs-websocket.so
|
|
||||||
|
|
||||||
if [[ "$RELEASE_MODE" == "True" ]]; then
|
|
||||||
echo "[obs-websocket] Signing plugin binary: obs-websocket.so"
|
|
||||||
codesign --sign "$CODE_SIGNING_IDENTITY" ./build/obs-websocket.so
|
|
||||||
else
|
|
||||||
echo "[obs-websocket] Skipped plugin codesigning"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "[obs-websocket] Actual package build"
|
|
||||||
packagesbuild ./CI/macos/obs-websocket.pkgproj
|
|
||||||
|
|
||||||
echo "[obs-websocket] Renaming obs-websocket.pkg to $FILENAME"
|
|
||||||
mv ./release/obs-websocket.pkg ./release/$FILENAME_UNSIGNED
|
|
||||||
|
|
||||||
if [[ "$RELEASE_MODE" == "True" ]]; then
|
|
||||||
echo "[obs-websocket] Signing installer: $FILENAME"
|
|
||||||
productsign \
|
|
||||||
--sign "$INSTALLER_SIGNING_IDENTITY" \
|
|
||||||
./release/$FILENAME_UNSIGNED \
|
|
||||||
./release/$FILENAME
|
|
||||||
rm ./release/$FILENAME_UNSIGNED
|
|
||||||
|
|
||||||
echo "[obs-websocket] Submitting installer $FILENAME for notarization"
|
|
||||||
zip -r ./release/$FILENAME.zip ./release/$FILENAME
|
|
||||||
UPLOAD_RESULT=$(xcrun altool \
|
|
||||||
--notarize-app \
|
|
||||||
--primary-bundle-id "fr.palakis.obs-websocket" \
|
|
||||||
--username "$AC_USERNAME" \
|
|
||||||
--password "$AC_PASSWORD" \
|
|
||||||
--asc-provider "$AC_PROVIDER_SHORTNAME" \
|
|
||||||
--file "./release/$FILENAME.zip")
|
|
||||||
rm ./release/$FILENAME.zip
|
|
||||||
|
|
||||||
REQUEST_UUID=$(echo $UPLOAD_RESULT | awk -F ' = ' '/RequestUUID/ {print $2}')
|
|
||||||
echo "Request UUID: $REQUEST_UUID"
|
|
||||||
|
|
||||||
echo "[obs-websocket] Wait for notarization result"
|
|
||||||
# Pieces of code borrowed from rednoah/notarized-app
|
|
||||||
while sleep 30 && date; do
|
|
||||||
CHECK_RESULT=$(xcrun altool \
|
|
||||||
--notarization-info "$REQUEST_UUID" \
|
|
||||||
--username "$AC_USERNAME" \
|
|
||||||
--password "$AC_PASSWORD" \
|
|
||||||
--asc-provider "$AC_PROVIDER_SHORTNAME")
|
|
||||||
echo $CHECK_RESULT
|
|
||||||
|
|
||||||
if ! grep -q "Status: in progress" <<< "$CHECK_RESULT"; then
|
|
||||||
echo "[obs-websocket] Staple ticket to installer: $FILENAME"
|
|
||||||
xcrun stapler staple ./release/$FILENAME
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
else
|
|
||||||
echo "[obs-websocket] Skipped installer codesigning and notarization"
|
|
||||||
fi
|
|
413
CMakeLists.txt
413
CMakeLists.txt
@ -1,290 +1,173 @@
|
|||||||
cmake_minimum_required(VERSION 3.16...3.20)
|
cmake_minimum_required(VERSION 3.16...3.25)
|
||||||
project(obs-websocket VERSION 5.0.0)
|
|
||||||
|
legacy_check()
|
||||||
|
|
||||||
|
set(obs-websocket_VERSION 5.3.3)
|
||||||
set(OBS_WEBSOCKET_RPC_VERSION 1)
|
set(OBS_WEBSOCKET_RPC_VERSION 1)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
option(ENABLE_WEBSOCKET "Enable building OBS with websocket plugin" ON)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
if(NOT ENABLE_WEBSOCKET)
|
||||||
|
target_disable(obs-websocket)
|
||||||
# Prohibit in-source builds
|
return()
|
||||||
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()
|
endif()
|
||||||
|
|
||||||
|
# Find Qt
|
||||||
|
find_qt(COMPONENTS Core Widgets Svg Network)
|
||||||
|
|
||||||
# Qt build stuff
|
# Find nlohmann JSON
|
||||||
set(CMAKE_PREFIX_PATH "${QTDIR}")
|
find_package(nlohmann_json 3 REQUIRED)
|
||||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
||||||
set(CMAKE_AUTOMOC ON)
|
|
||||||
set(CMAKE_AUTOUIC ON)
|
|
||||||
|
|
||||||
set(CMAKE_AUTORCC ON) # For resources.qrc
|
# Find qrcodegencpp
|
||||||
|
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
|
||||||
|
find_package(qrcodegencpp REQUIRED)
|
||||||
|
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG OFF)
|
||||||
|
|
||||||
# Tell websocketpp not to use system boost
|
# Find WebSocket++
|
||||||
add_definitions(-DASIO_STANDALONE)
|
find_package(Websocketpp 0.8 REQUIRED)
|
||||||
|
|
||||||
|
# Find Asio
|
||||||
|
find_package(Asio 1.12.1 REQUIRED)
|
||||||
|
|
||||||
# Arm build fixes
|
add_library(obs-websocket MODULE)
|
||||||
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
|
add_library(OBS::websocket ALIAS obs-websocket)
|
||||||
set(CMAKE_CXX_FLAGS "-mfpu=neon")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
target_sources(obs-websocket PRIVATE)
|
||||||
|
|
||||||
# Find libobs
|
target_sources(
|
||||||
if (WIN32 OR APPLE)
|
obs-websocket
|
||||||
include(cmake/FindLibObs.cmake)
|
PRIVATE src/obs-websocket.cpp
|
||||||
endif()
|
|
||||||
find_package(LibObs REQUIRED)
|
|
||||||
|
|
||||||
|
|
||||||
# Find Qt5
|
|
||||||
find_package(Qt5 REQUIRED COMPONENTS Core Widgets Svg Concurrent 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
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Inlude sources
|
|
||||||
set(obs-websocket_SOURCES
|
|
||||||
src/obs-websocket.cpp
|
|
||||||
src/Config.cpp
|
|
||||||
src/WebSocketServer.cpp
|
|
||||||
src/WebSocketProtocol.cpp
|
|
||||||
src/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/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_Stream.cpp
|
|
||||||
src/requesthandler/rpc/Request.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/Platform.cpp
|
|
||||||
deps/qr/cpp/QrCode.cpp)
|
|
||||||
|
|
||||||
set(obs-websocket_HEADERS
|
|
||||||
src/obs-websocket.h
|
src/obs-websocket.h
|
||||||
|
src/Config.cpp
|
||||||
src/Config.h
|
src/Config.h
|
||||||
src/WebSocketServer.h
|
lib/obs-websocket-api.h
|
||||||
src/WebSocketProtocol.h
|
src/forms/ConnectInfo.cpp
|
||||||
src/WebSocketSession.h
|
|
||||||
src/eventhandler/EventHandler.h
|
|
||||||
src/eventhandler/types/EventSubscription.h
|
|
||||||
src/requesthandler/RequestHandler.h
|
|
||||||
src/requesthandler/rpc/Request.h
|
|
||||||
src/requesthandler/rpc/RequestResult.h
|
|
||||||
src/requesthandler/rpc/RequestStatus.h
|
|
||||||
src/forms/SettingsDialog.h
|
|
||||||
src/forms/ConnectInfo.h
|
src/forms/ConnectInfo.h
|
||||||
|
src/forms/resources.qrc
|
||||||
|
src/forms/SettingsDialog.cpp
|
||||||
|
src/forms/SettingsDialog.h
|
||||||
|
src/WebSocketApi.cpp
|
||||||
|
src/WebSocketApi.h)
|
||||||
|
|
||||||
|
target_sources(
|
||||||
|
obs-websocket
|
||||||
|
PRIVATE 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)
|
||||||
|
|
||||||
|
target_sources(
|
||||||
|
obs-websocket
|
||||||
|
PRIVATE src/eventhandler/EventHandler.cpp
|
||||||
|
src/eventhandler/EventHandler.h
|
||||||
|
src/eventhandler/EventHandler_Config.cpp
|
||||||
|
src/eventhandler/EventHandler_General.cpp
|
||||||
|
src/eventhandler/EventHandler_Filters.cpp
|
||||||
|
src/eventhandler/EventHandler_Inputs.cpp
|
||||||
|
src/eventhandler/EventHandler_MediaInputs.cpp
|
||||||
|
src/eventhandler/EventHandler_Outputs.cpp
|
||||||
|
src/eventhandler/EventHandler_Scenes.cpp
|
||||||
|
src/eventhandler/EventHandler_SceneItems.cpp
|
||||||
|
src/eventhandler/EventHandler_Transitions.cpp
|
||||||
|
src/eventhandler/EventHandler_Ui.cpp
|
||||||
|
src/eventhandler/types/EventSubscription.h)
|
||||||
|
|
||||||
|
target_sources(
|
||||||
|
obs-websocket
|
||||||
|
PRIVATE 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_Sources.cpp
|
||||||
|
src/requesthandler/RequestHandler_Record.cpp
|
||||||
|
src/requesthandler/RequestHandler_Scenes.cpp
|
||||||
|
src/requesthandler/RequestHandler_SceneItems.cpp
|
||||||
|
src/requesthandler/RequestHandler_Stream.cpp
|
||||||
|
src/requesthandler/RequestHandler_Transitions.cpp
|
||||||
|
src/requesthandler/RequestHandler_Ui.cpp
|
||||||
|
src/requesthandler/rpc/Request.cpp
|
||||||
|
src/requesthandler/rpc/Request.h
|
||||||
|
src/requesthandler/rpc/RequestBatchRequest.cpp
|
||||||
|
src/requesthandler/rpc/RequestBatchRequest.h
|
||||||
|
src/requesthandler/rpc/RequestResult.cpp
|
||||||
|
src/requesthandler/rpc/RequestResult.h
|
||||||
|
src/requesthandler/types/RequestStatus.h
|
||||||
|
src/requesthandler/types/RequestBatchExecutionType.h)
|
||||||
|
|
||||||
|
target_sources(
|
||||||
|
obs-websocket
|
||||||
|
PRIVATE src/utils/Compat.cpp
|
||||||
|
src/utils/Compat.h
|
||||||
|
src/utils/Crypto.cpp
|
||||||
src/utils/Crypto.h
|
src/utils/Crypto.h
|
||||||
|
src/utils/Json.cpp
|
||||||
src/utils/Json.h
|
src/utils/Json.h
|
||||||
|
src/utils/Obs.cpp
|
||||||
src/utils/Obs.h
|
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_StringHelper.cpp
|
||||||
|
src/utils/Obs_SearchHelper.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/Platform.h
|
||||||
src/utils/Utils.h
|
src/utils/Utils.h)
|
||||||
deps/qr/cpp/QrCode.hpp)
|
|
||||||
|
|
||||||
|
configure_file(src/plugin-macros.h.in plugin-macros.generated.h)
|
||||||
|
target_sources(obs-websocket PRIVATE plugin-macros.generated.h)
|
||||||
|
|
||||||
# Platform-independent build settings
|
target_compile_definitions(
|
||||||
add_library(obs-websocket MODULE
|
obs-websocket PRIVATE ASIO_STANDALONE $<$<BOOL:${PLUGIN_TESTS}>:PLUGIN_TESTS>
|
||||||
${obs-websocket_SOURCES}
|
$<$<PLATFORM_ID:Windows>:_WEBSOCKETPP_CPP11_STL_> $<$<PLATFORM_ID:Windows>:_WIN32_WINNT=0x0603>)
|
||||||
${obs-websocket_HEADERS})
|
|
||||||
|
|
||||||
include_directories(
|
target_compile_options(
|
||||||
"${LIBOBS_INCLUDE_DIR}/../UI/obs-frontend-api"
|
obs-websocket
|
||||||
${Qt5Core_INCLUDES}
|
PRIVATE
|
||||||
${Qt5Widgets_INCLUDES}
|
$<$<PLATFORM_ID:Windows>:/wd4267>
|
||||||
${Qt5Svg_INCLUDES}
|
$<$<PLATFORM_ID:Windows>:/wd4996>
|
||||||
${Qt5Concurrent_INCLUDES}
|
$<$<PLATFORM_ID:Darwin,Linux,FreeBSD>:-Wall>
|
||||||
${Qt5Network_INCLUDES}
|
$<$<COMPILE_LANG_AND_ID:CXX,GNU,AppleClang,Clang>:-Wno-error=float-conversion;-Wno-error=shadow>
|
||||||
"${CMAKE_SOURCE_DIR}/deps/asio/asio/include"
|
$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wno-error=format-overflow;-Wno-error=int-conversion;-Wno-error=comment>
|
||||||
"${CMAKE_SOURCE_DIR}/deps/websocketpp")
|
$<$<COMPILE_LANG_AND_ID:CXX,AppleClang,Clang>:-Wno-error=null-pointer-subtraction;-Wno-error=deprecated-declarations;-Wno-error=implicit-int-conversion;-Wno-error=shorten-64-to-32;-Wno-comma;-Wno-quoted-include-in-framework-header>
|
||||||
|
)
|
||||||
|
|
||||||
target_link_libraries(obs-websocket
|
target_link_libraries(
|
||||||
libobs
|
obs-websocket
|
||||||
Qt5::Core
|
PRIVATE OBS::libobs
|
||||||
Qt5::Widgets
|
OBS::frontend-api
|
||||||
Qt5::Svg
|
Qt::Core
|
||||||
Qt5::Concurrent
|
Qt::Widgets
|
||||||
Qt5::Network
|
Qt::Svg
|
||||||
nlohmann_json::nlohmann_json)
|
Qt::Network
|
||||||
|
nlohmann_json::nlohmann_json
|
||||||
|
Websocketpp::Websocketpp
|
||||||
|
Asio::Asio
|
||||||
|
qrcodegencpp::qrcodegencpp)
|
||||||
|
|
||||||
|
set_target_properties_obs(
|
||||||
|
obs-websocket
|
||||||
|
PROPERTIES FOLDER plugins
|
||||||
|
PREFIX ""
|
||||||
|
AUTOMOC ON
|
||||||
|
AUTOUIC ON
|
||||||
|
AUTORCC ON)
|
||||||
|
|
||||||
# Windows-specific build settings and tasks
|
if(OS_WINDOWS)
|
||||||
if(WIN32)
|
set_property(
|
||||||
if(NOT DEFINED OBS_FRONTEND_LIB)
|
TARGET obs-websocket
|
||||||
set(OBS_FRONTEND_LIB "OBS_FRONTEND_LIB-NOTFOUND" CACHE FILEPATH "OBS frontend library")
|
APPEND
|
||||||
message(FATAL_ERROR "Could not find OBS Frontend API's library!")
|
PROPERTY AUTORCC_OPTIONS --format-version 1)
|
||||||
endif()
|
|
||||||
|
target_link_options(obs-websocket PRIVATE /IGNORE:4099)
|
||||||
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)
|
|
||||||
|
|
||||||
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}")
|
|
||||||
endif()
|
endif()
|
||||||
|
@ -1,88 +0,0 @@
|
|||||||
# Contributing to obs-websocket
|
|
||||||
|
|
||||||
## Translating obs-websocket to your language
|
|
||||||
|
|
||||||
Localization happens on [Crowdin](https://crowdin.com/project/obs-websocket)
|
|
||||||
|
|
||||||
## Branches
|
|
||||||
|
|
||||||
**Development happens on `master`**
|
|
||||||
|
|
||||||
## Writing code for obs-websocket
|
|
||||||
|
|
||||||
### Code Formatting Guidelines
|
|
||||||
|
|
||||||
* Function and variable names: camelCase for variables, MixedCaps for method names
|
|
||||||
|
|
||||||
* Request and Event names should use MixedCaps names. Keep naming conformity of request naming using similar terms like `Get`, `Set`, `Get[x]List`, `Start[x]`, `Toggle[x]`.
|
|
||||||
|
|
||||||
* Request and Event json properties/fields should use camelCase. Try to use existing property names.
|
|
||||||
|
|
||||||
* Code is indented with Tabs. Assume they are 4 columns wide
|
|
||||||
|
|
||||||
* 80 columns max code width. (Comments/docs can be larger)
|
|
||||||
|
|
||||||
* New and updated requests/events must always come with accompanying documentation comments (see existing protocol elements for examples).
|
|
||||||
These are required to automatically generate the [protocol specification document](docs/generated/protocol.md).
|
|
||||||
|
|
||||||
### Code Best-Practices
|
|
||||||
|
|
||||||
* Favor return-early code and avoid wrapping huge portions of code in conditionals. As an example, this:
|
|
||||||
```cpp
|
|
||||||
if (success) {
|
|
||||||
return RequestResult::Success();
|
|
||||||
} else {
|
|
||||||
return RequestResult::Error(RequestStatus::GenericError);
|
|
||||||
}
|
|
||||||
```
|
|
||||||
is better like this:
|
|
||||||
```cpp
|
|
||||||
if (!success) {
|
|
||||||
return RequestResult::Error(RequestStatus::GenericError);
|
|
||||||
}
|
|
||||||
return RequestResult::Success();
|
|
||||||
```
|
|
||||||
|
|
||||||
* Try to use the [built-in](https://github.com/Palakis/obs-websocket/blob/master/src/requesthandler/rpc/Request.h) request checks when possible.
|
|
||||||
* Refer to existing requests for usage examples.
|
|
||||||
|
|
||||||
* Some example common response/request property names are:
|
|
||||||
* `sceneName` - The name of a scene
|
|
||||||
* `inputName` - The name of an input
|
|
||||||
* `sourceName` - The name of a source (only for when multiple source types apply)
|
|
||||||
* `sceneItemEnabled` - Whether a scene item is enabled
|
|
||||||
|
|
||||||
* Response parameters which have no attributed data due to an invalid state should be set to `null` (versus being left out)
|
|
||||||
* For example, when `GetSceneList` is called and OBS is not in studio mode, `currentPreviewSceneName` will be `null`
|
|
||||||
* If a request's core response data depends on a state, an error should be thrown unless `ignoreNonFatalRequestChecks` is set. See `GetCurrentPreviewScene` as an example.
|
|
||||||
|
|
||||||
### Commit Guidelines
|
|
||||||
|
|
||||||
* Commits follow the 50/72 standard:
|
|
||||||
* 50 characters max for the commit title (excluding scope name)
|
|
||||||
* One empty line after the title
|
|
||||||
* Description wrapped to 72 columns max width per line.
|
|
||||||
|
|
||||||
* Commit titles:
|
|
||||||
* Use present tense
|
|
||||||
* Prefix the title with a "scope" name
|
|
||||||
* e.g: "CI: fix wrong behaviour when packaging for OS X"
|
|
||||||
* Typical scopes: CI, General, Requests, Events, Server
|
|
||||||
|
|
||||||
**Example commit:**
|
|
||||||
|
|
||||||
```
|
|
||||||
Requests: Add GetSceneList
|
|
||||||
|
|
||||||
Adds a new request called `GetSceneList` which returns the current
|
|
||||||
scene, along with an array of objects, each one with a scene name
|
|
||||||
and index.
|
|
||||||
```
|
|
||||||
|
|
||||||
### Pull Requests
|
|
||||||
|
|
||||||
* Pull Requests must never be based off your fork's main branch (in this case, `master`).
|
|
||||||
* Start your work in a newly named branch based on the upstream main one (e.g.: `feature/cool-new-feature`, `bugfix/fix-palakis-mistakes`, ...)
|
|
||||||
|
|
||||||
* If your work is not done yet, but for any reason you need to PR it (like collecting discussions, testing with CI, getting testers),
|
|
||||||
create it as a Draft Pull Request (open the little arrow menu next to the "Create pull request" button, then select "Create draft pull request").
|
|
104
README.md
104
README.md
@ -1,42 +1,27 @@
|
|||||||
|
<!-- markdownlint-disable no-inline-html -->
|
||||||
|
|
||||||
# obs-websocket
|
# obs-websocket
|
||||||
|
|
||||||
## YOU HAVE STUMBLED UPON THE DEV BRANCH FOR V5.0.0
|
|
||||||
|
|
||||||
- You can find the main protocol spec here: [PROTOCOL.md](docs/generated/protocol.md).
|
|
||||||
- You can find the planned requests sheet [here](https://docs.google.com/spreadsheets/d/1LfCZrbT8e7cSaKo_TuPDd-CJiptL7RSuo8iE63vMmMs/edit?usp=sharing)
|
|
||||||
|
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="/.github/images/obsws_logo.png" width=150 align="center">
|
<img src="/.github/images/obsws_logo.png" width=150 align="center">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
WebSockets API for OBS Studio.
|
WebSocket API for OBS Studio.
|
||||||
|
|
||||||
[](https://github.com/Palakis/obs-websocket/actions/workflows/main.yml)
|
|
||||||
[](https://discord.gg/WBaSQ3A)
|
[](https://discord.gg/WBaSQ3A)
|
||||||
[](https://opencollective.com/obs-websocket)
|
[](https://opencollective.com/obs-websocket-dev)
|
||||||
|
|
||||||
## Downloads
|
## Downloads
|
||||||
|
|
||||||
Binaries for Windows, MacOS, and Linux are available in the [Releases](https://github.com/Palakis/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.**
|
||||||
|
|
||||||
### Homebrew
|
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.
|
||||||
|
|
||||||
If you're using MacOS you can use Homebrew for installation as well:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
brew install obs-websocket
|
|
||||||
```
|
|
||||||
|
|
||||||
## Using obs-websocket
|
## Using obs-websocket
|
||||||
|
|
||||||
Here is a list of available web clients: (compatible with tablets and other touch interfaces)
|
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.
|
||||||
|
|
||||||
- (No known clients supporting 5.0.0)
|
(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.)
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
(Psst. You can use `--websocket_port`(value), `--websocket_password`(value), and `--websocket_debug`(flag) on the command line to override the configured values.)
|
|
||||||
|
|
||||||
### Possible use cases
|
### Possible use cases
|
||||||
|
|
||||||
@ -44,58 +29,63 @@ It is **highly recommended** to protect obs-websocket with a password against un
|
|||||||
- Change your stream overlay/graphics based on the current scene
|
- Change your stream overlay/graphics based on the current scene
|
||||||
- Automate scene switching with a third-party program (e.g. : auto-pilot, foot pedal, ...)
|
- Automate scene switching with a third-party program (e.g. : auto-pilot, foot pedal, ...)
|
||||||
|
|
||||||
### For developers
|
### Client software
|
||||||
|
|
||||||
The server is a typical Websockets server running by default on port 4444 (the port number can be changed in the Settings dialog).
|
- [Macro Deck](https://macrodeck.org/)
|
||||||
The protocol understood by the server is documented in [PROTOCOL.md](docs/generated/protocol.md).
|
- [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:
|
Here's a list of available language APIs for obs-websocket:
|
||||||
- (No known apis supporting 5.0.0)
|
|
||||||
|
|
||||||
We'd like to know what you're building with or for obs-websocket. If you do something in this fashion, feel free to drop a message in `#project-showoff` in the [discord server!](https://discord.gg/WBaSQ3A)
|
- Python 3.7+ (Asyncio): [simpleobsws](https://github.com/IRLToolkit/simpleobsws/tree/master) by IRLToolkit
|
||||||
|
- Python 3.10+ (Non-Asyncio): [obsws-python](https://pypi.org/project/obsws-python) by aatikturk and onyx-and-iris
|
||||||
|
- Rust: [obws](https://github.com/dnaka91/obws) by dnaka91
|
||||||
|
- Godot 3.4.x: [obs-websocket-gd](https://github.com/you-win/obs-websocket-gd) by you-win
|
||||||
|
- Javascript (Node and web): [obs-websocket-js](https://github.com/obs-websocket-community-projects/obs-websocket-js) by OBS Websocket Community
|
||||||
|
- C (uses obs-websocket-js): [v8-libwebsocket-obs-websocket](https://github.com/dgatwood/v8-libwebsocket-obs-websocket)
|
||||||
|
- Go: [goobs](https://github.com/andreykaipov/goobs) by andreykaipov
|
||||||
|
- Dart/Flutter (can target all supported platforms): [obs_websocket](https://github.com/faithoflifedev/obs_websocket) by faithoflifedev
|
||||||
|
- Java: [obs-websocket-java](https://github.com/obs-websocket-community-projects/obs-websocket-java) by OBS Websocket Community
|
||||||
|
|
||||||
### Securing obs-websocket (via TLS/SSL)
|
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).
|
||||||
|
|
||||||
If you are intending to use obs-websocket outside of a LAN environment, it is highly recommended to secure the connection using a tunneling service.
|
We'd like to know what you're building with obs-websocket! If you do something in this fashion, feel free to drop a message in `#project-showoff` in the [discord server!](https://discord.gg/WBaSQ3A)
|
||||||
|
|
||||||
See the SSL [tunnelling guide](SSL-TUNNELLING.md) for easy instructions on how to encrypt your websocket connection.
|
|
||||||
|
|
||||||
## Compiling obs-websocket
|
|
||||||
|
|
||||||
See the [build instructions](BUILDING.md).
|
|
||||||
|
|
||||||
## Translations
|
|
||||||
|
|
||||||
**Your help is welcome on translations.**
|
|
||||||
|
|
||||||
Please join the localization project on [Crowdin](https://crowdin.com/project/obs-websocket)
|
|
||||||
|
|
||||||
## Contributors
|
## Contributors
|
||||||
|
|
||||||
### Code Contributors
|
### Code Contributors
|
||||||
|
|
||||||
This project exists thanks to all the people who contribute. [Contribute](CONTRIBUTING.md).
|
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).
|
||||||
<a href="https://github.com/Palakis/obs-websocket/graphs/contributors"><img src="https://opencollective.com/obs-websocket/contributors.svg?width=890&button=false" /></a>
|
|
||||||
|
|
||||||
### Financial Contributors
|
### Financial Contributors
|
||||||
|
|
||||||
Become a financial contributor and help us sustain our community. [Contribute](https://opencollective.com/obs-websocket/contribute)
|
Become a financial contributor and help us sustain our community. [Contribute Financially](https://opencollective.com/obs-websocket-dev/contribute)
|
||||||
|
|
||||||
#### Individuals
|
#### Individuals
|
||||||
|
|
||||||
<a href="https://opencollective.com/obs-websocket"><img src="https://opencollective.com/obs-websocket/individuals.svg?width=890"></a>
|
<a href="https://opencollective.com/obs-websocket-dev"><img src="https://opencollective.com/obs-websocket-dev/individuals.svg?width=890"></a>
|
||||||
|
|
||||||
#### Organizations
|
#### Organizations
|
||||||
|
|
||||||
Support this project with your organization. Your logo will show up here with a link to your website. [Contribute](https://opencollective.com/obs-websocket/contribute)
|
Support this project with your organization. Your logo will show up here with a link to your website. [Contribute](https://opencollective.com/obs-websocket-dev/contribute)
|
||||||
|
|
||||||
<a href="https://opencollective.com/obs-websocket/organization/0/website"><img src="https://opencollective.com/obs-websocket/organization/0/avatar.svg"></a>
|
<a href="https://opencollective.com/obs-websocket-dev/organization/0/website"><img src="https://opencollective.com/obs-websocket-dev/organization/0/avatar.svg"></a>
|
||||||
<a href="https://opencollective.com/obs-websocket/organization/1/website"><img src="https://opencollective.com/obs-websocket/organization/1/avatar.svg"></a>
|
<a href="https://opencollective.com/obs-websocket-dev/organization/1/website"><img src="https://opencollective.com/obs-websocket-dev/organization/1/avatar.svg"></a>
|
||||||
<a href="https://opencollective.com/obs-websocket/organization/2/website"><img src="https://opencollective.com/obs-websocket/organization/2/avatar.svg"></a>
|
<a href="https://opencollective.com/obs-websocket-dev/organization/2/website"><img src="https://opencollective.com/obs-websocket-dev/organization/2/avatar.svg"></a>
|
||||||
<a href="https://opencollective.com/obs-websocket/organization/3/website"><img src="https://opencollective.com/obs-websocket/organization/3/avatar.svg"></a>
|
<a href="https://opencollective.com/obs-websocket-dev/organization/3/website"><img src="https://opencollective.com/obs-websocket-dev/organization/3/avatar.svg"></a>
|
||||||
<a href="https://opencollective.com/obs-websocket/organization/4/website"><img src="https://opencollective.com/obs-websocket/organization/4/avatar.svg"></a>
|
<a href="https://opencollective.com/obs-websocket-dev/organization/4/website"><img src="https://opencollective.com/obs-websocket-dev/organization/4/avatar.svg"></a>
|
||||||
<a href="https://opencollective.com/obs-websocket/organization/5/website"><img src="https://opencollective.com/obs-websocket/organization/5/avatar.svg"></a>
|
<a href="https://opencollective.com/obs-websocket-dev/organization/5/website"><img src="https://opencollective.com/obs-websocket-dev/organization/5/avatar.svg"></a>
|
||||||
<a href="https://opencollective.com/obs-websocket/organization/6/website"><img src="https://opencollective.com/obs-websocket/organization/6/avatar.svg"></a>
|
<a href="https://opencollective.com/obs-websocket-dev/organization/6/website"><img src="https://opencollective.com/obs-websocket-dev/organization/6/avatar.svg"></a>
|
||||||
<a href="https://opencollective.com/obs-websocket/organization/7/website"><img src="https://opencollective.com/obs-websocket/organization/7/avatar.svg"></a>
|
<a href="https://opencollective.com/obs-websocket-dev/organization/7/website"><img src="https://opencollective.com/obs-websocket-dev/organization/7/avatar.svg"></a>
|
||||||
<a href="https://opencollective.com/obs-websocket/organization/8/website"><img src="https://opencollective.com/obs-websocket/organization/8/avatar.svg"></a>
|
<a href="https://opencollective.com/obs-websocket-dev/organization/8/website"><img src="https://opencollective.com/obs-websocket-dev/organization/8/avatar.svg"></a>
|
||||||
<a href="https://opencollective.com/obs-websocket/organization/9/website"><img src="https://opencollective.com/obs-websocket/organization/9/avatar.svg"></a>
|
<a href="https://opencollective.com/obs-websocket-dev/organization/9/website"><img src="https://opencollective.com/obs-websocket-dev/organization/9/avatar.svg"></a>
|
||||||
|
@ -1,45 +0,0 @@
|
|||||||
# Connecting over a TLS/secure connection (or remotely)
|
|
||||||
|
|
||||||
If you want to expose the WebSocket server of obs-websocket over a secure TLS connection (or to connect remotely), the easiest approach is to use a localhost tunneling service like [ngrok](https://ngrok.com/) or [pagekite](https://pagekite.net/).
|
|
||||||
|
|
||||||
**Before doing this, secure the WebSocket server first by enabling authentication with a strong password!**
|
|
||||||
|
|
||||||
**Please bear in mind that doing this will expose your OBS instance to the open Internet and the security risks it implies. *You've been warned!***
|
|
||||||
|
|
||||||
|
|
||||||
## ngrok
|
|
||||||
|
|
||||||
[Install the ngrok CLI tool](https://ngrok.com/download) on a linux OS, then start ngrok bound to port 4444 like this:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ngrok http 4444
|
|
||||||
```
|
|
||||||
|
|
||||||
The ngrok command will output something like this:
|
|
||||||
|
|
||||||
```text
|
|
||||||
ngrok by @inconshreveable
|
|
||||||
|
|
||||||
Tunnel Status online
|
|
||||||
Version 2.0/2.0
|
|
||||||
Web Interface http://127.0.0.1:4040
|
|
||||||
Forwarding http://TUNNEL_ID.ngrok.io -> localhost:4444
|
|
||||||
Forwarding https://TUNNEL_ID.ngrok.io -> localhost:4444
|
|
||||||
```
|
|
||||||
|
|
||||||
Where `TUNNEL_ID` is, as the name implies, the unique name of your ngrok tunnel. You'll get a new one every time you start ngrok.
|
|
||||||
|
|
||||||
Then, use `wss://TUNNEL_ID.ngrok.io` to connect to obs-websocket over TLS.
|
|
||||||
|
|
||||||
See the [ngrok documentation](https://ngrok.com/docs) for more tunneling options and settings.
|
|
||||||
|
|
||||||
|
|
||||||
## PageKite
|
|
||||||
|
|
||||||
[Install the PageKite CLI tool](http://pagekite.net/downloads), then start PageKite bound to port 4444 like this (replace NAME with one of your choosing):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
python pagekite.py 4444 NAME.pagekite.me
|
|
||||||
```
|
|
||||||
|
|
||||||
Then, use `wss://NAME.pagekite.me` to connect to obs-websocket over TLS.
|
|
@ -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.3)
|
||||||
|
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>
|
@ -1,3 +0,0 @@
|
|||||||
files:
|
|
||||||
- source: /data/locale/en-US.ini
|
|
||||||
translation: /data/locale/%locale%.ini
|
|
31
data/locale/af-ZA.ini
Normal file
31
data/locale/af-ZA.ini
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
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.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.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,4 +1,6 @@
|
|||||||
OBSWebSocket.Settings.DialogTitle="obs-websocket Settings"
|
OBSWebSocket.Plugin.Description="Remote-control of OBS Studio through WebSocket"
|
||||||
|
|
||||||
|
OBSWebSocket.Settings.DialogTitle="WebSocket Server Settings"
|
||||||
|
|
||||||
OBSWebSocket.Settings.PluginSettingsTitle="Plugin Settings"
|
OBSWebSocket.Settings.PluginSettingsTitle="Plugin Settings"
|
||||||
OBSWebSocket.Settings.ServerEnable="Enable WebSocket server"
|
OBSWebSocket.Settings.ServerEnable="Enable WebSocket server"
|
||||||
@ -18,6 +20,8 @@ OBSWebSocket.Settings.ShowConnectInfoWarningInfoText="Are you sure that you want
|
|||||||
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Warning: Potential Security Issue"
|
OBSWebSocket.Settings.Save.UserPasswordWarningTitle="Warning: Potential Security Issue"
|
||||||
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket stores the server password as plain text. Using a password generated by obs-websocket is highly recommended."
|
OBSWebSocket.Settings.Save.UserPasswordWarningMessage="obs-websocket stores the server password as plain text. Using a password generated by obs-websocket is highly recommended."
|
||||||
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Are you sure you want to use your own password?"
|
OBSWebSocket.Settings.Save.UserPasswordWarningInfoText="Are you sure you want to use your own password?"
|
||||||
|
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Error: Invalid Configuration"
|
||||||
|
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="You must use a password that is 6 or more characters."
|
||||||
|
|
||||||
OBSWebSocket.SessionTable.Title="Connected WebSocket Sessions"
|
OBSWebSocket.SessionTable.Title="Connected WebSocket Sessions"
|
||||||
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Remote Address"
|
OBSWebSocket.SessionTable.RemoteAddressColumnTitle="Remote Address"
|
||||||
@ -41,6 +45,3 @@ OBSWebSocket.TrayNotification.AuthenticationFailed.Title="WebSocket Authenticati
|
|||||||
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Client %1 failed to authenticate."
|
OBSWebSocket.TrayNotification.AuthenticationFailed.Body="Client %1 failed to authenticate."
|
||||||
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket Client Disconnected"
|
OBSWebSocket.TrayNotification.Disconnected.Title="WebSocket Client Disconnected"
|
||||||
OBSWebSocket.TrayNotification.Disconnected.Body="Client %1 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 de vouloir utiliser votre propre mot de passe ?"
|
||||||
|
OBSWebSocket.Settings.Save.PasswordInvalidErrorTitle="Erreur : Configuration invalide"
|
||||||
|
OBSWebSocket.Settings.Save.PasswordInvalidErrorMessage="Vous devez utiliser un mot de passe d'au moins 6 caractères"
|
||||||
|
OBSWebSocket.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 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 연결 해제됨."
|
40
data/locale/ms-MY.ini
Normal file
40
data/locale/ms-MY.ini
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
OBSWebSocket.Plugin.Description="Kawalan-jauh OBS Studio melalui 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."
|
2
data/locale/nb-NO.ini
Normal file
2
data/locale/nb-NO.ini
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
OBSWebSocket.Settings.Password="Server Passord"
|
||||||
|
OBSWebSocket.Settings.GeneratePassword="Generer Passord"
|
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 Kapısı"
|
||||||
|
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 b84e6c16b2
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,11 +0,0 @@
|
|||||||
[*]
|
|
||||||
end_of_line = lf
|
|
||||||
charset = utf-8
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 4
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
insert_final_newline = true
|
|
||||||
|
|
||||||
[*.md, *.mustache]
|
|
||||||
trim_trailing_whitespace = false
|
|
||||||
insert_final_newline = false
|
|
5
docs/.gitignore
vendored
5
docs/.gitignore
vendored
@ -1,4 +1 @@
|
|||||||
node_modules
|
work
|
||||||
logs
|
|
||||||
*.log
|
|
||||||
npm-debug.log*
|
|
||||||
|
149
docs/README.md
149
docs/README.md
@ -1,21 +1,140 @@
|
|||||||
## Installation
|
# obs-websocket documentation
|
||||||
|
|
||||||
Install node and update npm if necessary.
|
## If you're looking for the documentation page, it's [here](generated/protocol.md)
|
||||||
|
|
||||||
```sh
|
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:
|
||||||
cd obs-websocket/docs
|
|
||||||
npm install
|
- `comments/comments.js`: Generates the `work/comments.json` file from the code comments in the src directory.
|
||||||
|
- `docs/process_comments.py`: Processes `work/comments.json` to create `generated/protocol.json`, which is a machine-readable documentation format that can be used to create obs-websocket client libraries.
|
||||||
|
- `docs/generate_md.py`: Processes `generated/protocol.json` to create `generated/protocol.md`, which is the actual human-readable documentation.
|
||||||
|
|
||||||
|
Some notes about documenting:
|
||||||
|
|
||||||
|
- The `complexity` comment line is a suggestion to the user about how much knowledge about OBS's inner workings is required to safely use the associated feature. `1` for easy, `5` for megadeath-expert.
|
||||||
|
- The `rpcVersion` comment line is used to specify the latest available version that the feature is available in. If a feature is deprecated, then the placeholder value of `-1` should be replaced with the last RPC version that the feature will be available in. Manually specifying an RPC version automatically adds the `Deprecated` line to the entry in `generated/protocol.md`.
|
||||||
|
- The description can be multiple lines, but must be contained above the first documentation property (the lines starting with `@`).
|
||||||
|
- Value types are in reference to JSON values. The only ones you should use are `Any`, `String`, `Boolean`, `Number`, `Array`, `Object`.
|
||||||
|
- `Array` types follow this format: `Array<subtype>`, for example `Array<String>` to specify an array of strings.
|
||||||
|
|
||||||
|
Formatting notes:
|
||||||
|
|
||||||
|
- Fields should have their columns aligned. So in a request, the columns of all `@requestField`s should be aligned.
|
||||||
|
- We suggest looking at how other enums/events/requests have been documented before documenting one of your own, to get a general feel of how things have been formatted.
|
||||||
|
|
||||||
|
## Creating enum documentation
|
||||||
|
|
||||||
|
Enums follow this code comment format:
|
||||||
|
|
||||||
|
```js
|
||||||
|
/**
|
||||||
|
* [description]
|
||||||
|
*
|
||||||
|
* @enumIdentifier [identifier]
|
||||||
|
* @enumValue [value]
|
||||||
|
* @enumType [type]
|
||||||
|
* @rpcVersion [latest available RPC version, use `-1` unless deprecated.]
|
||||||
|
* @initialVersion [first obs-websocket version this is found in]
|
||||||
|
* @api enums
|
||||||
|
*/
|
||||||
```
|
```
|
||||||
|
|
||||||
## Build
|
Example code comment:
|
||||||
|
|
||||||
```sh
|
```js
|
||||||
# Just extract the comments.
|
/**
|
||||||
npm run comments
|
* The initial message sent by obs-websocket to newly connected clients.
|
||||||
|
*
|
||||||
# Just render the markdown.
|
* @enumIdentifier Hello
|
||||||
npm run docs
|
* @enumValue 0
|
||||||
|
* @enumType WebSocketOpCode
|
||||||
# Do both comments and markdown.
|
* @rpcVersion -1
|
||||||
npm run build
|
* @initialVersion 5.0.0
|
||||||
|
* @api enums
|
||||||
|
*/
|
||||||
|
```
|
||||||
|
|
||||||
|
- This is the documentation for the `WebSocketOpCode::Hello` enum identifier.
|
||||||
|
|
||||||
|
## Creating event documentation
|
||||||
|
|
||||||
|
Events follow this code comment format:
|
||||||
|
|
||||||
|
```js
|
||||||
|
/**
|
||||||
|
* [description]
|
||||||
|
*
|
||||||
|
* @dataField [field name] | [value type] | [field description]
|
||||||
|
* [... more @dataField entries ...]
|
||||||
|
*
|
||||||
|
* @eventType [type]
|
||||||
|
* @eventSubscription [EventSubscription requirement]
|
||||||
|
* @complexity [complexity rating, 1-5]
|
||||||
|
* @rpcVersion [latest available RPC version, use `-1` unless deprecated.]
|
||||||
|
* @initialVersion [first obs-websocket version this is found in]
|
||||||
|
* @category [event category]
|
||||||
|
* @api events
|
||||||
|
*/
|
||||||
|
```
|
||||||
|
|
||||||
|
Example code comment:
|
||||||
|
|
||||||
|
```js
|
||||||
|
/**
|
||||||
|
* Studio mode has been enabled or disabled.
|
||||||
|
*
|
||||||
|
* @dataField studioModeEnabled | Boolean | True == Enabled, False == Disabled
|
||||||
|
*
|
||||||
|
* @eventType StudioModeStateChanged
|
||||||
|
* @eventSubscription General
|
||||||
|
* @complexity 1
|
||||||
|
* @rpcVersion -1
|
||||||
|
* @initialVersion 5.0.0
|
||||||
|
* @category general
|
||||||
|
* @api events
|
||||||
|
*/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Creating request documentation
|
||||||
|
|
||||||
|
Requests follow this code comment format:
|
||||||
|
|
||||||
|
```js
|
||||||
|
/**
|
||||||
|
* [description]
|
||||||
|
*
|
||||||
|
* @requestField [optional flag][field name] | [value type] | [field description] | [value restrictions (only include if the value type is `Number`)] | [default behavior (only include if optional flag is set)]
|
||||||
|
* [... more @requestField entries ...]
|
||||||
|
*
|
||||||
|
* @responseField [field name] | [value type] | [field description]
|
||||||
|
* [... more @responseField entries ...]
|
||||||
|
*
|
||||||
|
* @requestType [type]
|
||||||
|
* @complexity [complexity rating, 1-5]
|
||||||
|
* @rpcVersion [latest available RPC version, use `-1` unless deprecated.]
|
||||||
|
* @initialVersion [first obs-websocket version this is found in]
|
||||||
|
* @category [request category]
|
||||||
|
* @api requests
|
||||||
|
*/
|
||||||
|
```
|
||||||
|
|
||||||
|
- The optional flag is a `?` that prefixes the field name, telling the docs processor that the field is optionally specified.
|
||||||
|
|
||||||
|
Example code comment:
|
||||||
|
|
||||||
|
```js
|
||||||
|
/**
|
||||||
|
* Gets the value of a "slot" from the selected persistent data realm.
|
||||||
|
*
|
||||||
|
* @requestField realm | String | The data realm to select. `OBS_WEBSOCKET_DATA_REALM_GLOBAL` or `OBS_WEBSOCKET_DATA_REALM_PROFILE`
|
||||||
|
* @requestField slotName | String | The name of the slot to retrieve data from
|
||||||
|
*
|
||||||
|
* @responseField slotValue | String | Value associated with the slot. `null` if not set
|
||||||
|
*
|
||||||
|
* @requestType GetPersistentData
|
||||||
|
* @complexity 2
|
||||||
|
* @rpcVersion -1
|
||||||
|
* @initialVersion 5.0.0
|
||||||
|
* @category config
|
||||||
|
* @api requests
|
||||||
|
*/
|
||||||
```
|
```
|
||||||
|
9
docs/build_docs.sh
Executable file
9
docs/build_docs.sh
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd comments
|
||||||
|
npm install
|
||||||
|
npm run comments
|
||||||
|
|
||||||
|
cd ../docs
|
||||||
|
python3 process_comments.py
|
||||||
|
python3 generate_md.py
|
104
docs/comments.js
104
docs/comments.js
@ -1,104 +0,0 @@
|
|||||||
const fs = require('fs');
|
|
||||||
const path = require('path');
|
|
||||||
const glob = require('glob');
|
|
||||||
const parseComments = require('parse-comments');
|
|
||||||
const config = require('./config.json');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Read each file and call `parse-comments` on it.
|
|
||||||
*
|
|
||||||
* @param {String|Array} `files` List of file paths to read from.
|
|
||||||
* @return {Object|Array} Array of `parse-comments` objects.
|
|
||||||
*/
|
|
||||||
const parseFiles = files => {
|
|
||||||
let response = [];
|
|
||||||
files.forEach(file => {
|
|
||||||
const f = fs.readFileSync(file, 'utf8').toString();
|
|
||||||
response = response.concat(parseComments(f));
|
|
||||||
});
|
|
||||||
|
|
||||||
return response;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Filters/sorts the results from `parse-comments`.
|
|
||||||
* @param {Object|Array} `comments` Array of `parse-comments` objects.
|
|
||||||
* @return {Object} Filtered comments sorted by `@api` and `@category`.
|
|
||||||
*/
|
|
||||||
const processComments = comments => {
|
|
||||||
let sorted = {};
|
|
||||||
let errors = [];
|
|
||||||
|
|
||||||
comments.forEach(comment => {
|
|
||||||
if (comment.typedef) {
|
|
||||||
comment.comment = undefined;
|
|
||||||
comment.context = undefined;
|
|
||||||
sorted['typedefs'] = sorted['typedefs'] || [];
|
|
||||||
sorted['typedefs'].push(comment);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof comment.api === 'undefined') return;
|
|
||||||
let validationFailures = validateComment(comment);
|
|
||||||
|
|
||||||
if (validationFailures) {
|
|
||||||
errors.push(validationFailures);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Store the object based on its api (ie. requests, events) and category (ie. general, scenes, etc).
|
|
||||||
comment.category = comment.category || 'miscellaneous';
|
|
||||||
|
|
||||||
// Remove some unnecessary properties to avoid result differences in travis.
|
|
||||||
comment.comment = undefined;
|
|
||||||
comment.context = undefined;
|
|
||||||
|
|
||||||
// Create an entry in sorted for the api/category if one does not exist.
|
|
||||||
sorted[comment.api] = sorted[comment.api] || {};
|
|
||||||
sorted[comment.api][comment.category] = sorted[comment.api][comment.category] || [];
|
|
||||||
|
|
||||||
// Store the comment in the appropriate api/category.
|
|
||||||
sorted[comment.api][comment.category].push(comment);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (errors.length) {
|
|
||||||
throw JSON.stringify(errors, null, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
return sorted;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Rudimentary validation of documentation content, returns an error object or undefined.
|
|
||||||
const validateComment = comment => {
|
|
||||||
let errors = [];
|
|
||||||
[].concat(comment.params).concat(comment.returns).filter(Boolean).forEach(param => {
|
|
||||||
if (typeof param.name !== 'string' || param.name === '') {
|
|
||||||
errors.push({
|
|
||||||
description: `Invalid param or return value name`,
|
|
||||||
param: param
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof param.type !== 'string' || param.type === '') {
|
|
||||||
errors.push({
|
|
||||||
description: `Invalid param or return value type`,
|
|
||||||
param: param
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (errors.length) {
|
|
||||||
return {
|
|
||||||
errors: errors,
|
|
||||||
fullContext: Object.assign({}, comment)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const files = glob.sync(config.srcGlob);
|
|
||||||
const comments = processComments(parseFiles(files));
|
|
||||||
|
|
||||||
if (!fs.existsSync(config.outDirectory)){
|
|
||||||
fs.mkdirSync(config.outDirectory);
|
|
||||||
}
|
|
||||||
|
|
||||||
fs.writeFileSync(path.join(config.outDirectory, 'comments.json'), JSON.stringify(comments, null, 2));
|
|
2
docs/comments/.gitignore
vendored
Normal file
2
docs/comments/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
node_modules
|
||||||
|
npm-debug.log*
|
24
docs/comments/comments.js
Normal file
24
docs/comments/comments.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
const glob = require('glob');
|
||||||
|
const parseComments = require('parse-comments');
|
||||||
|
const config = require('./config.json');
|
||||||
|
|
||||||
|
const parseFiles = files => {
|
||||||
|
let response = [];
|
||||||
|
files.forEach(file => {
|
||||||
|
const f = fs.readFileSync(file, 'utf8').toString();
|
||||||
|
response = response.concat(parseComments(f));
|
||||||
|
});
|
||||||
|
|
||||||
|
return response;
|
||||||
|
};
|
||||||
|
|
||||||
|
const files = glob.sync(config.srcGlob);
|
||||||
|
const comments = parseFiles(files);
|
||||||
|
|
||||||
|
if (!fs.existsSync(config.outDirectory)){
|
||||||
|
fs.mkdirSync(config.outDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.writeFileSync(path.join(config.outDirectory, 'comments.json'), JSON.stringify(comments, null, 2));
|
4
docs/comments/config.json
Normal file
4
docs/comments/config.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"srcGlob": "./../../src/**/*.@(cpp|h)",
|
||||||
|
"outDirectory": "./../work"
|
||||||
|
}
|
15
docs/comments/package.json
Normal file
15
docs/comments/package.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"name": "obs-websocket-comments",
|
||||||
|
"version": "1.2.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "comments.js",
|
||||||
|
"scripts": {
|
||||||
|
"comments": "node ./comments.js"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"glob": "^7.1.2",
|
||||||
|
"parse-comments": "^0.4.3"
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"srcGlob": "./../src/**/*.@(cpp|h)",
|
|
||||||
"srcTemplate": "./protocol.hbs",
|
|
||||||
"outDirectory": "./generated"
|
|
||||||
}
|
|
37
docs/docs.js
37
docs/docs.js
@ -1,37 +0,0 @@
|
|||||||
const fs = require('fs');
|
|
||||||
const path = require('path');
|
|
||||||
const toc = require('markdown-toc');
|
|
||||||
const handlebars = require('handlebars');
|
|
||||||
const config = require('./config.json');
|
|
||||||
|
|
||||||
const helpers = require('handlebars-helpers')({
|
|
||||||
handlebars: handlebars
|
|
||||||
});
|
|
||||||
|
|
||||||
// Allows pipe characters to be used within markdown tables.
|
|
||||||
handlebars.registerHelper('depipe', (text) => {
|
|
||||||
return typeof text === 'string' ? text.replace('|', '\\|') : text;
|
|
||||||
});
|
|
||||||
|
|
||||||
const insertHeader = (text) => {
|
|
||||||
return '<!-- This file was generated based on handlebars templates. Do not edit directly! -->\n\n' + text;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Writes `protocol.md` using `protocol.mustache`.
|
|
||||||
*
|
|
||||||
* @param {Object} `data` Data to assign to the mustache template.
|
|
||||||
*/
|
|
||||||
const generateProtocol = (templatePath, data) => {
|
|
||||||
const template = fs.readFileSync(templatePath).toString();
|
|
||||||
const generated = handlebars.compile(template)(data);
|
|
||||||
return insertHeader(toc.insert(generated));
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!fs.existsSync(config.outDirectory)){
|
|
||||||
fs.mkdirSync(config.outDirectory);
|
|
||||||
}
|
|
||||||
|
|
||||||
const comments = fs.readFileSync(path.join(config.outDirectory, 'comments.json'), 'utf8');
|
|
||||||
const markdown = generateProtocol(config.srcTemplate, JSON.parse(comments));
|
|
||||||
fs.writeFileSync(path.join(config.outDirectory, 'protocol.md'), markdown);
|
|
312
docs/docs/generate_md.py
Normal file
312
docs/docs/generate_md.py
Normal file
@ -0,0 +1,312 @@
|
|||||||
|
import logging
|
||||||
|
logging.basicConfig(level=logging.INFO, format="%(asctime)s [generate_md.py] [%(levelname)s] %(message)s")
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import json
|
||||||
|
|
||||||
|
enumTypeOrder = [
|
||||||
|
'WebSocketOpCode',
|
||||||
|
'WebSocketCloseCode',
|
||||||
|
'RequestBatchExecutionType',
|
||||||
|
'RequestStatus',
|
||||||
|
'EventSubscription',
|
||||||
|
'ObsMediaInputAction',
|
||||||
|
'ObsOutputState'
|
||||||
|
]
|
||||||
|
|
||||||
|
categoryOrder = [
|
||||||
|
'General',
|
||||||
|
'Config',
|
||||||
|
'Sources',
|
||||||
|
'Scenes',
|
||||||
|
'Inputs',
|
||||||
|
'Transitions',
|
||||||
|
'Filters',
|
||||||
|
'Scene Items',
|
||||||
|
'Outputs',
|
||||||
|
'Stream',
|
||||||
|
'Record',
|
||||||
|
'Media Inputs',
|
||||||
|
'Ui',
|
||||||
|
'High-Volume'
|
||||||
|
]
|
||||||
|
|
||||||
|
requestFieldHeader = """
|
||||||
|
**Request Fields:**
|
||||||
|
|
||||||
|
| Name | Type | Description | Value Restrictions | ?Default Behavior |
|
||||||
|
| ---- | :---: | ----------- | :----------------: | ----------------- |
|
||||||
|
"""
|
||||||
|
|
||||||
|
responseFieldHeader = """
|
||||||
|
**Response Fields:**
|
||||||
|
|
||||||
|
| Name | Type | Description |
|
||||||
|
| ---- | :---: | ----------- |
|
||||||
|
"""
|
||||||
|
|
||||||
|
dataFieldHeader = """
|
||||||
|
**Data Fields:**
|
||||||
|
|
||||||
|
| Name | Type | Description |
|
||||||
|
| ---- | :---: | ----------- |
|
||||||
|
"""
|
||||||
|
|
||||||
|
fragments = []
|
||||||
|
|
||||||
|
# Utils
|
||||||
|
#######################################################################################################################
|
||||||
|
|
||||||
|
def read_file(fileName):
|
||||||
|
with open(fileName, 'r') as f:
|
||||||
|
return f.read()
|
||||||
|
|
||||||
|
def get_fragment(name, register = True):
|
||||||
|
global fragments
|
||||||
|
testFragmentName = name.replace(' ', '-').replace(':', '').lower()
|
||||||
|
if testFragmentName in fragments:
|
||||||
|
testFragmentName += '-1'
|
||||||
|
increment = 1
|
||||||
|
while testFragmentName in fragments:
|
||||||
|
increment += 1
|
||||||
|
testFragmentName[:-1] = str(increment)
|
||||||
|
if register:
|
||||||
|
fragments.append(testFragmentName)
|
||||||
|
return testFragmentName
|
||||||
|
|
||||||
|
def get_category_items(items, category):
|
||||||
|
ret = []
|
||||||
|
for item in requests:
|
||||||
|
if item['category'] != category:
|
||||||
|
continue
|
||||||
|
ret.append(item)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
def get_enums_toc(enums):
|
||||||
|
ret = ''
|
||||||
|
for enumType in enumTypeOrder:
|
||||||
|
enum = None
|
||||||
|
for enumIt in enums:
|
||||||
|
if enumIt['enumType'] == enumType:
|
||||||
|
enum = enumIt
|
||||||
|
break
|
||||||
|
if not enum:
|
||||||
|
continue
|
||||||
|
typeFragment = get_fragment(enumType, False)
|
||||||
|
ret += '- [{}](#{})\n'.format(enumType, typeFragment)
|
||||||
|
for enumIdentifier in enum['enumIdentifiers']:
|
||||||
|
enumIdentifier = enumIdentifier['enumIdentifier']
|
||||||
|
enumIdentifierHeader = '{}::{}'.format(enumType, enumIdentifier)
|
||||||
|
enumIdentifierFragment = get_fragment(enumIdentifierHeader, False)
|
||||||
|
ret += ' - [{}](#{})\n'.format(enumIdentifierHeader, enumIdentifierFragment)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
def get_enums(enums):
|
||||||
|
ret = ''
|
||||||
|
for enumType in enumTypeOrder:
|
||||||
|
enum = None
|
||||||
|
for enumIt in enums:
|
||||||
|
if enumIt['enumType'] == enumType:
|
||||||
|
enum = enumIt
|
||||||
|
break
|
||||||
|
if not enum:
|
||||||
|
continue
|
||||||
|
typeFragment = get_fragment(enumType)
|
||||||
|
ret += '## {}\n\n'.format(enumType)
|
||||||
|
for enumIdentifier in enum['enumIdentifiers']:
|
||||||
|
enumIdentifierString = enumIdentifier['enumIdentifier']
|
||||||
|
enumIdentifierHeader = '{}::{}'.format(enumType, enumIdentifierString)
|
||||||
|
enumIdentifierFragment = get_fragment(enumIdentifierHeader, False)
|
||||||
|
ret += '### {}\n\n'.format(enumIdentifierHeader)
|
||||||
|
ret += '{}\n\n'.format(enumIdentifier['description'])
|
||||||
|
ret += '- Identifier Value: `{}`\n'.format(enumIdentifier['enumValue'])
|
||||||
|
ret += '- Latest Supported RPC Version: `{}`\n'.format(enumIdentifier['rpcVersion'])
|
||||||
|
if enumIdentifier['deprecated']:
|
||||||
|
ret += '- **⚠️ Deprecated. ⚠️**\n'
|
||||||
|
if enumIdentifier['initialVersion'].lower() == 'unreleased':
|
||||||
|
ret += '- Unreleased\n'
|
||||||
|
else:
|
||||||
|
ret += '- Added in v{}\n'.format(enumIdentifier['initialVersion'])
|
||||||
|
if enumIdentifier != enum['enumIdentifiers'][-1]:
|
||||||
|
ret += '\n---\n\n'
|
||||||
|
else:
|
||||||
|
ret += '\n'
|
||||||
|
return ret
|
||||||
|
|
||||||
|
def get_requests_toc(requests):
|
||||||
|
ret = ''
|
||||||
|
for category in categoryOrder:
|
||||||
|
requestsOut = []
|
||||||
|
for request in requests:
|
||||||
|
if request['category'] != category.lower():
|
||||||
|
continue
|
||||||
|
requestsOut.append(request)
|
||||||
|
if not len(requestsOut):
|
||||||
|
continue
|
||||||
|
categoryFragment = get_fragment(category, False)
|
||||||
|
ret += '- [{} Requests](#{}-requests)\n'.format(category, categoryFragment)
|
||||||
|
for request in requestsOut:
|
||||||
|
requestType = request['requestType']
|
||||||
|
requestTypeFragment = get_fragment(requestType, False)
|
||||||
|
ret += ' - [{}](#{})\n'.format(requestType, requestTypeFragment)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
def get_requests(requests):
|
||||||
|
ret = ''
|
||||||
|
for category in categoryOrder:
|
||||||
|
requestsOut = []
|
||||||
|
for request in requests:
|
||||||
|
if request['category'] != category.lower():
|
||||||
|
continue
|
||||||
|
requestsOut.append(request)
|
||||||
|
if not len(requestsOut):
|
||||||
|
continue
|
||||||
|
categoryFragment = get_fragment(category)
|
||||||
|
ret += '## {} Requests\n\n'.format(category)
|
||||||
|
for request in requestsOut:
|
||||||
|
requestType = request['requestType']
|
||||||
|
requestTypeFragment = get_fragment(requestType)
|
||||||
|
ret += '### {}\n\n'.format(requestType)
|
||||||
|
ret += '{}\n\n'.format(request['description'])
|
||||||
|
ret += '- Complexity Rating: `{}/5`\n'.format(request['complexity'])
|
||||||
|
ret += '- Latest Supported RPC Version: `{}`\n'.format(request['rpcVersion'])
|
||||||
|
if request['deprecated']:
|
||||||
|
ret += '- **⚠️ Deprecated. ⚠️**\n'
|
||||||
|
if request['initialVersion'].lower() == 'unreleased':
|
||||||
|
ret += '- Unreleased\n'
|
||||||
|
else:
|
||||||
|
ret += '- Added in v{}\n'.format(request['initialVersion'])
|
||||||
|
|
||||||
|
if request['requestFields']:
|
||||||
|
ret += requestFieldHeader
|
||||||
|
for requestField in request['requestFields']:
|
||||||
|
valueType = requestField['valueType'].replace('<', "<").replace('>', ">")
|
||||||
|
valueRestrictions = requestField['valueRestrictions'] if requestField['valueRestrictions'] else 'None'
|
||||||
|
valueOptional = '?' if requestField['valueOptional'] else ''
|
||||||
|
valueOptionalBehavior = requestField['valueOptionalBehavior'] if requestField['valueOptional'] and requestField['valueOptionalBehavior'] else 'N/A'
|
||||||
|
ret += '| {}{} | {} | {} | {} | {} |\n'.format(valueOptional, requestField['valueName'], valueType, requestField['valueDescription'], valueRestrictions, valueOptionalBehavior)
|
||||||
|
|
||||||
|
if request['responseFields']:
|
||||||
|
ret += responseFieldHeader
|
||||||
|
for responseField in request['responseFields']:
|
||||||
|
valueType = responseField['valueType'].replace('<', "<").replace('>', ">")
|
||||||
|
ret += '| {} | {} | {} |\n'.format(responseField['valueName'], valueType, responseField['valueDescription'])
|
||||||
|
|
||||||
|
if request != requestsOut[-1]:
|
||||||
|
ret += '\n---\n\n'
|
||||||
|
else:
|
||||||
|
ret += '\n'
|
||||||
|
return ret
|
||||||
|
|
||||||
|
def get_events_toc(events):
|
||||||
|
ret = ''
|
||||||
|
for category in categoryOrder:
|
||||||
|
eventsOut = []
|
||||||
|
for event in events:
|
||||||
|
if event['category'] != category.lower():
|
||||||
|
continue
|
||||||
|
eventsOut.append(event)
|
||||||
|
if not len(eventsOut):
|
||||||
|
continue
|
||||||
|
categoryFragment = get_fragment(category, False)
|
||||||
|
ret += '- [{} Events](#{}-events)\n'.format(category, categoryFragment)
|
||||||
|
for event in eventsOut:
|
||||||
|
eventType = event['eventType']
|
||||||
|
eventTypeFragment = get_fragment(eventType, False)
|
||||||
|
ret += ' - [{}](#{})\n'.format(eventType, eventTypeFragment)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
def get_events(events):
|
||||||
|
ret = ''
|
||||||
|
for category in categoryOrder:
|
||||||
|
eventsOut = []
|
||||||
|
for event in events:
|
||||||
|
if event['category'] != category.lower():
|
||||||
|
continue
|
||||||
|
eventsOut.append(event)
|
||||||
|
if not len(eventsOut):
|
||||||
|
continue
|
||||||
|
categoryFragment = get_fragment(category)
|
||||||
|
ret += '## {} Events\n\n'.format(category)
|
||||||
|
for event in eventsOut:
|
||||||
|
eventType = event['eventType']
|
||||||
|
eventTypeFragment = get_fragment(eventType)
|
||||||
|
ret += '### {}\n\n'.format(eventType)
|
||||||
|
ret += '{}\n\n'.format(event['description'])
|
||||||
|
ret += '- Complexity Rating: `{}/5`\n'.format(event['complexity'])
|
||||||
|
ret += '- Latest Supported RPC Version: `{}`\n'.format(event['rpcVersion'])
|
||||||
|
if event['deprecated']:
|
||||||
|
ret += '- **⚠️ Deprecated. ⚠️**\n'
|
||||||
|
if event['initialVersion'].lower() == 'unreleased':
|
||||||
|
ret += '- Unreleased\n'
|
||||||
|
else:
|
||||||
|
ret += '- Added in v{}\n'.format(event['initialVersion'])
|
||||||
|
|
||||||
|
if event['dataFields']:
|
||||||
|
ret += dataFieldHeader
|
||||||
|
for dataField in event['dataFields']:
|
||||||
|
valueType = dataField['valueType'].replace('<', "<").replace('>', ">")
|
||||||
|
ret += '| {} | {} | {} |\n'.format(dataField['valueName'], valueType, dataField['valueDescription'])
|
||||||
|
|
||||||
|
if event != eventsOut[-1]:
|
||||||
|
ret += '\n---\n\n'
|
||||||
|
else:
|
||||||
|
ret += '\n'
|
||||||
|
return ret
|
||||||
|
|
||||||
|
# Actual code
|
||||||
|
#######################################################################################################################
|
||||||
|
|
||||||
|
# Read versions json
|
||||||
|
try:
|
||||||
|
with open('../versions.json', 'r') as f:
|
||||||
|
versions = json.load(f)
|
||||||
|
except IOError:
|
||||||
|
logging.error('Failed to get global versions. Versions file not configured?')
|
||||||
|
os.exit(1)
|
||||||
|
|
||||||
|
# Read protocol json
|
||||||
|
with open('../generated/protocol.json', 'r') as f:
|
||||||
|
protocol = json.load(f)
|
||||||
|
|
||||||
|
output = "<!-- This file was automatically generated. Do not edit directly! -->\n"
|
||||||
|
output += "<!-- markdownlint-disable no-bare-urls -->\n"
|
||||||
|
|
||||||
|
# Insert introduction partial
|
||||||
|
output += read_file('partials/introduction.md')
|
||||||
|
logging.info('Inserted introduction section.')
|
||||||
|
|
||||||
|
output += '\n'
|
||||||
|
|
||||||
|
# Generate enums MD
|
||||||
|
output += read_file('partials/enumsHeader.md')
|
||||||
|
output += '\n'
|
||||||
|
output += get_enums_toc(protocol['enums'])
|
||||||
|
output += '\n'
|
||||||
|
output += get_enums(protocol['enums'])
|
||||||
|
logging.info('Inserted enums section.')
|
||||||
|
|
||||||
|
# Generate events MD
|
||||||
|
output += read_file('partials/eventsHeader.md')
|
||||||
|
output += '\n'
|
||||||
|
output += get_events_toc(protocol['events'])
|
||||||
|
output += '\n'
|
||||||
|
output += get_events(protocol['events'])
|
||||||
|
logging.info('Inserted events section.')
|
||||||
|
|
||||||
|
# Generate requests MD
|
||||||
|
output += read_file('partials/requestsHeader.md')
|
||||||
|
output += '\n'
|
||||||
|
output += get_requests_toc(protocol['requests'])
|
||||||
|
output += '\n'
|
||||||
|
output += get_requests(protocol['requests'])
|
||||||
|
logging.info('Inserted requests section.')
|
||||||
|
|
||||||
|
if output.endswith('\n\n'):
|
||||||
|
output = output[:-1]
|
||||||
|
|
||||||
|
# Write new protocol MD
|
||||||
|
with open('../generated/protocol.md', 'w') as f:
|
||||||
|
f.write(output)
|
||||||
|
|
||||||
|
logging.info('Finished generating protocol.md.')
|
@ -1,2 +1,5 @@
|
|||||||
# Enums
|
# Enums
|
||||||
|
|
||||||
These are enumeration declarations, which are referenced throughout obs-websocket's protocol.
|
These are enumeration declarations, which are referenced throughout obs-websocket's protocol.
|
||||||
|
|
||||||
|
## Enumerations Table of Contents
|
3
docs/docs/partials/eventsHeader.md
Normal file
3
docs/docs/partials/eventsHeader.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Events
|
||||||
|
|
||||||
|
## Events Table of Contents
|
427
docs/docs/partials/introduction.md
Normal file
427
docs/docs/partials/introduction.md
Normal file
@ -0,0 +1,427 @@
|
|||||||
|
|
||||||
|
# obs-websocket 5.x.x Protocol
|
||||||
|
|
||||||
|
## Main Table of Contents
|
||||||
|
|
||||||
|
- [General Intro](#general-intro)
|
||||||
|
- [Design Goals](#design-goals)
|
||||||
|
- [Connecting to obs-websocket](#connecting-to-obs-websocket)
|
||||||
|
- [Connection steps](#connection-steps)
|
||||||
|
- [Connection Notes](#connection-notes)
|
||||||
|
- [Creating an authentication string](#creating-an-authentication-string)
|
||||||
|
- [Message Types (OpCodes)](#message-types-opcodes)
|
||||||
|
- [Hello (OpCode 0)](#hello-opcode-0)
|
||||||
|
- [Identify (OpCode 1)](#identify-opcode-1)
|
||||||
|
- [Identified (OpCode 2)](#identified-opcode-2)
|
||||||
|
- [Reidentify (OpCode 3)](#reidentify-opcode-3)
|
||||||
|
- [Event (OpCode 5)](#event-opcode-5)
|
||||||
|
- [Request (OpCode 6)](#request-opcode-6)
|
||||||
|
- [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
|
||||||
|
|
||||||
|
obs-websocket provides a feature-rich RPC communication protocol, giving access to much of OBS's feature set. This document contains everything you should know in order to make a connection and use obs-websocket's functionality to the fullest.
|
||||||
|
|
||||||
|
### Design Goals
|
||||||
|
|
||||||
|
- Abstraction of identification, events, requests, and batch requests into dedicated message types
|
||||||
|
- Conformity of request naming using similar terms like `Get`, `Set`, `Get[x]List`, `Start[x]`, `Toggle[x]`
|
||||||
|
- Conformity of OBS data field names like `sourceName`, `sourceKind`, `sourceType`, `sceneName`, `sceneItemName`
|
||||||
|
- Error code response system - integer corrosponds to type of error, with optional comment
|
||||||
|
- Possible support for multiple message encoding options: JSON and MessagePack
|
||||||
|
- PubSub system - Allow clients to specify which events they do or don't want to receive from OBS
|
||||||
|
- RPC versioning - Client and server negotiate the latest version of the obs-websocket protocol to communicate with.
|
||||||
|
|
||||||
|
## Connecting to obs-websocket
|
||||||
|
|
||||||
|
Here's info on how to connect to obs-websocket
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Connection steps
|
||||||
|
|
||||||
|
These steps should be followed precisely. Failure to connect to the server as instructed will likely result in your client being treated in an undefined way.
|
||||||
|
|
||||||
|
- Initial HTTP request made to the obs-websocket server.
|
||||||
|
- The `Sec-WebSocket-Protocol` header can be used to tell obs-websocket which kind of message encoding to use. By default, obs-websocket uses JSON over text. Available subprotocols:
|
||||||
|
- `obswebsocket.json` - JSON over text frames
|
||||||
|
- `obswebsocket.msgpack` - MsgPack over binary frames
|
||||||
|
|
||||||
|
- Once the connection is upgraded, the websocket server will immediately send an [OpCode 0 `Hello`](#hello-opcode-0) message to the client.
|
||||||
|
|
||||||
|
- The client listens for the `Hello` and responds with an [OpCode 1 `Identify`](#identify-opcode-1) containing all appropriate session parameters.
|
||||||
|
- If there is an `authentication` field in the `messageData` object, the server requires authentication, and the steps in [Creating an authentication string](#creating-an-authentication-string) should be followed.
|
||||||
|
- If there is no `authentication` field, the resulting `Identify` object sent to the server does not require an `authentication` string.
|
||||||
|
- The client determines if the server's `rpcVersion` is supported, and if not it provides its closest supported version in `Identify`.
|
||||||
|
|
||||||
|
- 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 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).
|
||||||
|
|
||||||
|
- The client will begin receiving events from obs-websocket and may now make requests to obs-websocket.
|
||||||
|
|
||||||
|
- At any time after a client has been identified, it may send an [OpCode 3 `Reidentify`](#reidentify-opcode-3) message to update certain allowed session parameters. The server will respond in the same way it does during initial identification.
|
||||||
|
|
||||||
|
#### Connection Notes
|
||||||
|
|
||||||
|
- If a binary frame is received when using the `obswebsocket.json` (default) subprotocol, or a text frame is received while using the `obswebsocket.msgpack` subprotocol, the connection is closed with `WebSocketCloseCode::MessageDecodeError`.
|
||||||
|
- The obs-websocket server listens for any messages containing a `request-type` field in the first level JSON from unidentified clients. If a message matches, the connection is closed with `WebSocketCloseCode::UnsupportedRpcVersion` and a warning is logged.
|
||||||
|
- If a message with a `messageType` is not recognized to the obs-websocket server, the connection is closed with `WebSocketCloseCode::UnknownOpCode`.
|
||||||
|
- At no point may the client send any message other than a single `Identify` before it has received an `Identified`. Doing so will result in the connection being closed with `WebSocketCloseCode::NotIdentified`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Creating an authentication string
|
||||||
|
|
||||||
|
obs-websocket uses SHA256 to transmit authentication credentials. The server starts by sending an object in the `authentication` field of its `Hello` message data. The client processes the authentication challenge and responds via the `authentication` string in the `Identify` message data.
|
||||||
|
|
||||||
|
For this guide, we'll be using `supersecretpassword` as the password.
|
||||||
|
|
||||||
|
The `authentication` object in `Hello` looks like this (example):
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"challenge": "+IxH4CnCiqpX1rM9scsNynZzbOe4KhDeYcTNS3PDaeY=",
|
||||||
|
"salt": "lM1GncleQOaCu9lT1yeUZhFYnqhsLLP1G5lAGo3ixaI="
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
To generate the authentication string, follow these steps:
|
||||||
|
|
||||||
|
- Concatenate the websocket password with the `salt` provided by the server (`password + salt`)
|
||||||
|
- Generate an SHA256 binary hash of the result and base64 encode it, known as a base64 secret.
|
||||||
|
- Concatenate the base64 secret with the `challenge` sent by the server (`base64_secret + challenge`)
|
||||||
|
- Generate a binary SHA256 hash of that result and base64 encode it. You now have your `authentication` string.
|
||||||
|
|
||||||
|
For real-world examples of the `authentication` string creation, refer to the obs-websocket client libraries listed on the [README](README.md).
|
||||||
|
|
||||||
|
## Message Types (OpCodes)
|
||||||
|
|
||||||
|
The following message types are the low-level message types which may be sent to and from obs-websocket.
|
||||||
|
|
||||||
|
Messages sent from the obs-websocket server or client may contain these first-level fields, known as the base object:
|
||||||
|
|
||||||
|
```txt
|
||||||
|
{
|
||||||
|
"op": number,
|
||||||
|
"d": object
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- `op` is a `WebSocketOpCode` OpCode.
|
||||||
|
- `d` is an object of the data fields associated with the operation.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Hello (OpCode 0)
|
||||||
|
|
||||||
|
- Sent from: obs-websocket
|
||||||
|
- Sent to: Freshly connected websocket client
|
||||||
|
- Description: First message sent from the server immediately on client connection. Contains authentication information if auth is required. Also contains RPC version for version negotiation.
|
||||||
|
|
||||||
|
**Data Keys:**
|
||||||
|
|
||||||
|
```txt
|
||||||
|
{
|
||||||
|
"obsWebSocketVersion": string,
|
||||||
|
"rpcVersion": number,
|
||||||
|
"authentication": object(optional)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- `rpcVersion` is a version number which gets incremented on each **breaking change** to the obs-websocket protocol. Its usage in this context is to provide the current rpc version that the server would like to use.
|
||||||
|
|
||||||
|
**Example Messages:**
|
||||||
|
Authentication is required
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"op": 0,
|
||||||
|
"d": {
|
||||||
|
"obsWebSocketVersion": "5.1.0",
|
||||||
|
"rpcVersion": 1,
|
||||||
|
"authentication": {
|
||||||
|
"challenge": "+IxH4CnCiqpX1rM9scsNynZzbOe4KhDeYcTNS3PDaeY=",
|
||||||
|
"salt": "lM1GncleQOaCu9lT1yeUZhFYnqhsLLP1G5lAGo3ixaI="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Authentication is not required
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"op": 0,
|
||||||
|
"d": {
|
||||||
|
"obsWebSocketVersion": "5.1.0",
|
||||||
|
"rpcVersion": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Identify (OpCode 1)
|
||||||
|
|
||||||
|
- Sent from: Freshly connected websocket client
|
||||||
|
- Sent to: obs-websocket
|
||||||
|
- Description: Response to `Hello` message, should contain authentication string if authentication is required, along with PubSub subscriptions and other session parameters.
|
||||||
|
|
||||||
|
**Data Keys:**
|
||||||
|
|
||||||
|
```txt
|
||||||
|
{
|
||||||
|
"rpcVersion": number,
|
||||||
|
"authentication": string(optional),
|
||||||
|
"eventSubscriptions": number(optional) = (EventSubscription::All)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- `rpcVersion` is the version number that the client would like the obs-websocket server to use.
|
||||||
|
- `eventSubscriptions` is a bitmask of `EventSubscriptions` items to subscribe to events and event categories at will. By default, all event categories are subscribed, except for events marked as high volume. High volume events must be explicitly subscribed to.
|
||||||
|
|
||||||
|
**Example Message:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"op": 1,
|
||||||
|
"d": {
|
||||||
|
"rpcVersion": 1,
|
||||||
|
"authentication": "Dj6cLS+jrNA0HpCArRg0Z/Fc+YHdt2FQfAvgD1mip6Y=",
|
||||||
|
"eventSubscriptions": 33
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Identified (OpCode 2)
|
||||||
|
|
||||||
|
- Sent from: obs-websocket
|
||||||
|
- Sent to: Freshly identified client
|
||||||
|
- Description: The identify request was received and validated, and the connection is now ready for normal operation.
|
||||||
|
|
||||||
|
**Data Keys:**
|
||||||
|
|
||||||
|
```txt
|
||||||
|
{
|
||||||
|
"negotiatedRpcVersion": number
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- If rpc version negotiation succeeds, the server determines the RPC version to be used and gives it to the client as `negotiatedRpcVersion`
|
||||||
|
|
||||||
|
**Example Message:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"op": 2,
|
||||||
|
"d": {
|
||||||
|
"negotiatedRpcVersion": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Reidentify (OpCode 3)
|
||||||
|
|
||||||
|
- Sent from: Identified client
|
||||||
|
- Sent to: obs-websocket
|
||||||
|
- Description: Sent at any time after initial identification to update the provided session parameters.
|
||||||
|
|
||||||
|
**Data Keys:**
|
||||||
|
|
||||||
|
```txt
|
||||||
|
{
|
||||||
|
"eventSubscriptions": number(optional) = (EventSubscription::All)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- Only the listed parameters may be changed after initial identification. To change a parameter not listed, you must reconnect to the obs-websocket server.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Event (OpCode 5)
|
||||||
|
|
||||||
|
- Sent from: obs-websocket
|
||||||
|
- Sent to: All subscribed and identified clients
|
||||||
|
- Description: An event coming from OBS has occured. Eg scene switched, source muted.
|
||||||
|
|
||||||
|
**Data Keys:**
|
||||||
|
|
||||||
|
```txt
|
||||||
|
{
|
||||||
|
"eventType": string,
|
||||||
|
"eventIntent": number,
|
||||||
|
"eventData": object(optional)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- `eventIntent` is the original intent required to be subscribed to in order to receive the event.
|
||||||
|
|
||||||
|
**Example Message:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"op": 5,
|
||||||
|
"d": {
|
||||||
|
"eventType": "StudioModeStateChanged",
|
||||||
|
"eventIntent": 1,
|
||||||
|
"eventData": {
|
||||||
|
"studioModeEnabled": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Request (OpCode 6)
|
||||||
|
|
||||||
|
- Sent from: Identified client
|
||||||
|
- Sent to: obs-websocket
|
||||||
|
- Description: Client is making a request to obs-websocket. Eg get current scene, create source.
|
||||||
|
|
||||||
|
**Data Keys:**
|
||||||
|
|
||||||
|
```txt
|
||||||
|
{
|
||||||
|
"requestType": string,
|
||||||
|
"requestId": string,
|
||||||
|
"requestData": object(optional),
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Example Message:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"op": 6,
|
||||||
|
"d": {
|
||||||
|
"requestType": "SetCurrentProgramScene",
|
||||||
|
"requestId": "f819dcf0-89cc-11eb-8f0e-382c4ac93b9c",
|
||||||
|
"requestData": {
|
||||||
|
"sceneName": "Scene 12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### RequestResponse (OpCode 7)
|
||||||
|
|
||||||
|
- Sent from: obs-websocket
|
||||||
|
- Sent to: Identified client which made the request
|
||||||
|
- Description: obs-websocket is responding to a request coming from a client.
|
||||||
|
|
||||||
|
**Data Keys:**
|
||||||
|
|
||||||
|
```txt
|
||||||
|
{
|
||||||
|
"requestType": string,
|
||||||
|
"requestId": string,
|
||||||
|
"requestStatus": object,
|
||||||
|
"responseData": object(optional)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- The `requestType` and `requestId` are simply mirrors of what was sent by the client.
|
||||||
|
|
||||||
|
`requestStatus` object:
|
||||||
|
|
||||||
|
```txt
|
||||||
|
{
|
||||||
|
"result": bool,
|
||||||
|
"code": number,
|
||||||
|
"comment": string(optional)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- `result` is `true` if the request resulted in `RequestStatus::Success`. False if otherwise.
|
||||||
|
- `code` is a `RequestStatus` code.
|
||||||
|
- `comment` may be provided by the server on errors to offer further details on why a request failed.
|
||||||
|
|
||||||
|
**Example Messages:**
|
||||||
|
Successful Response
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"op": 7,
|
||||||
|
"d": {
|
||||||
|
"requestType": "SetCurrentProgramScene",
|
||||||
|
"requestId": "f819dcf0-89cc-11eb-8f0e-382c4ac93b9c",
|
||||||
|
"requestStatus": {
|
||||||
|
"result": true,
|
||||||
|
"code": 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Failure Response
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"op": 7,
|
||||||
|
"d": {
|
||||||
|
"requestType": "SetCurrentProgramScene",
|
||||||
|
"requestId": "f819dcf0-89cc-11eb-8f0e-382c4ac93b9c",
|
||||||
|
"requestStatus": {
|
||||||
|
"result": false,
|
||||||
|
"code": 608,
|
||||||
|
"comment": "Parameter: sceneName"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### RequestBatch (OpCode 8)
|
||||||
|
|
||||||
|
- Sent from: Identified client
|
||||||
|
- Sent to: obs-websocket
|
||||||
|
- Description: Client is making a batch of requests for obs-websocket. Requests are processed serially (in order) by the server.
|
||||||
|
|
||||||
|
**Data Keys:**
|
||||||
|
|
||||||
|
```txt
|
||||||
|
{
|
||||||
|
"requestId": string,
|
||||||
|
"haltOnFailure": bool(optional) = false,
|
||||||
|
"executionType": number(optional) = RequestBatchExecutionType::SerialRealtime
|
||||||
|
"requests": array<object>
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- When `haltOnFailure` is `true`, the processing of requests will be halted on first failure. Returns only the processed requests in [`RequestBatchResponse`](#requestbatchresponse-opcode-9).
|
||||||
|
- Requests in the `requests` array follow the same structure as the `Request` payload data format, however `requestId` is an optional field.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### RequestBatchResponse (OpCode 9)
|
||||||
|
|
||||||
|
- Sent from: obs-websocket
|
||||||
|
- Sent to: Identified client which made the request
|
||||||
|
- Description: obs-websocket is responding to a request batch coming from the client.
|
||||||
|
|
||||||
|
**Data Keys:**
|
||||||
|
|
||||||
|
```txt
|
||||||
|
{
|
||||||
|
"requestId": string,
|
||||||
|
"results": array<object>
|
||||||
|
}
|
||||||
|
```
|
3
docs/docs/partials/requestsHeader.md
Normal file
3
docs/docs/partials/requestsHeader.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Requests
|
||||||
|
|
||||||
|
## Requests Table of Contents
|
208
docs/docs/process_comments.py
Normal file
208
docs/docs/process_comments.py
Normal file
@ -0,0 +1,208 @@
|
|||||||
|
import logging
|
||||||
|
logging.basicConfig(level=logging.INFO, format="%(asctime)s [process_comments.py] [%(levelname)s] %(message)s")
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import json
|
||||||
|
|
||||||
|
# The comments parser will return a string type instead of an array if there is only one field
|
||||||
|
def field_to_array(field):
|
||||||
|
if type(field) == str:
|
||||||
|
return [field]
|
||||||
|
return field
|
||||||
|
|
||||||
|
# This raw JSON can be really damn unpredictable. Let's handle that
|
||||||
|
def field_to_string(field):
|
||||||
|
if type(field) == list:
|
||||||
|
return field_to_string(field[0])
|
||||||
|
elif type(field) == dict:
|
||||||
|
return field_to_string(field['description'])
|
||||||
|
return str(field)
|
||||||
|
|
||||||
|
# Make sure that everything we expect is there
|
||||||
|
def validate_fields(data, fields):
|
||||||
|
for field in fields:
|
||||||
|
if field not in data:
|
||||||
|
logging.warning('Missing required item: {}'.format(field))
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
# Get the individual components of a `requestField` or `responseField` or `dataField` entry
|
||||||
|
def get_components(data):
|
||||||
|
ret = []
|
||||||
|
components_raw = data.split('|')
|
||||||
|
for component in components_raw:
|
||||||
|
ret.append(component.strip())
|
||||||
|
return ret
|
||||||
|
|
||||||
|
# Convert all request fields from raw to final
|
||||||
|
def get_request_fields(fields):
|
||||||
|
fields = field_to_array(fields)
|
||||||
|
ret = []
|
||||||
|
for field in fields:
|
||||||
|
components = get_components(field)
|
||||||
|
field_out = {}
|
||||||
|
field_out['valueName'] = components[0].replace('?', '')
|
||||||
|
field_out['valueType'] = components[1]
|
||||||
|
field_out['valueDescription'] = components[2]
|
||||||
|
|
||||||
|
valueOptionalOffset = 3
|
||||||
|
# If value type is a number, restrictions are required. Else, should not be added.
|
||||||
|
if field_out['valueType'].lower() == 'number':
|
||||||
|
# In the case of a number, the optional component gets pushed back.
|
||||||
|
valueOptionalOffset += 1
|
||||||
|
field_out['valueRestrictions'] = components[3] if components[3].lower() != 'none' else None
|
||||||
|
else:
|
||||||
|
field_out['valueRestrictions'] = None
|
||||||
|
|
||||||
|
field_out['valueOptional'] = components[0].startswith('?')
|
||||||
|
if field_out['valueOptional']:
|
||||||
|
field_out['valueOptionalBehavior'] = components[valueOptionalOffset] if len(components) > valueOptionalOffset else 'Unknown'
|
||||||
|
else:
|
||||||
|
field_out['valueOptionalBehavior'] = None
|
||||||
|
ret.append(field_out)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
# Convert all response (or event data) fields from raw to final
|
||||||
|
def get_response_fields(fields):
|
||||||
|
fields = field_to_array(fields)
|
||||||
|
ret = []
|
||||||
|
for field in fields:
|
||||||
|
components = get_components(field)
|
||||||
|
field_out = {}
|
||||||
|
field_out['valueName'] = components[0]
|
||||||
|
field_out['valueType'] = components[1]
|
||||||
|
field_out['valueDescription'] = components[2]
|
||||||
|
ret.append(field_out)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
#######################################################################################################################
|
||||||
|
|
||||||
|
# Read versions json
|
||||||
|
try:
|
||||||
|
with open('../versions.json', 'r') as f:
|
||||||
|
versions = json.load(f)
|
||||||
|
except IOError:
|
||||||
|
logging.error('Failed to get global versions. Versions file not configured?')
|
||||||
|
os.exit(1)
|
||||||
|
|
||||||
|
# Read the raw comments output file
|
||||||
|
with open('../work/comments.json', 'r') as f:
|
||||||
|
comments_raw = json.load(f)
|
||||||
|
|
||||||
|
# Prepare output variables
|
||||||
|
enums = []
|
||||||
|
requests = []
|
||||||
|
events = []
|
||||||
|
|
||||||
|
enums_raw = {}
|
||||||
|
# Process the raw comments
|
||||||
|
for comment in comments_raw:
|
||||||
|
# Skip unrelated comments like #include
|
||||||
|
if 'api' not in comment:
|
||||||
|
continue
|
||||||
|
|
||||||
|
api = comment['api']
|
||||||
|
if api == 'enums':
|
||||||
|
if not validate_fields(comment, ['description', 'enumIdentifier', 'enumType', 'rpcVersion', 'initialVersion']):
|
||||||
|
logging.warning('Failed to process enum id comment due to missing field(s):\n{}'.format(comment))
|
||||||
|
continue
|
||||||
|
|
||||||
|
enumType = field_to_string(comment['enumType'])
|
||||||
|
|
||||||
|
enum = {}
|
||||||
|
# Recombines the header back into one string, allowing multi-line descriptions.
|
||||||
|
enum['description'] = field_to_string(comment.get('lead', '')) + field_to_string(comment['description'])
|
||||||
|
enum['enumIdentifier'] = field_to_string(comment['enumIdentifier'])
|
||||||
|
rpcVersionRaw = field_to_string(comment['rpcVersion'])
|
||||||
|
enum['rpcVersion'] = versions['rpcVersion'] if rpcVersionRaw == '-1' else int(rpcVersionRaw)
|
||||||
|
enum['deprecated'] = False if rpcVersionRaw == '-1' else True
|
||||||
|
enum['initialVersion'] = field_to_string(comment['initialVersion'])
|
||||||
|
|
||||||
|
if 'enumValue' in comment:
|
||||||
|
enumValue = field_to_string(comment['enumValue'])
|
||||||
|
enum['enumValue'] = int(enumValue) if enumValue.isdigit() else enumValue
|
||||||
|
else:
|
||||||
|
enum['enumValue'] = enum['enumIdentifier']
|
||||||
|
|
||||||
|
if enumType not in enums_raw:
|
||||||
|
enums_raw[enumType] = {'enumIdentifiers': [enum]}
|
||||||
|
else:
|
||||||
|
enums_raw[enumType]['enumIdentifiers'].append(enum)
|
||||||
|
|
||||||
|
logging.info('Processed enum: {}::{}'.format(enumType, enum['enumIdentifier']))
|
||||||
|
elif api == 'requests':
|
||||||
|
if not validate_fields(comment, ['description', 'requestType', 'complexity', 'rpcVersion', 'initialVersion', 'category']):
|
||||||
|
logging.warning('Failed to process request comment due to missing field(s):\n{}'.format(comment))
|
||||||
|
continue
|
||||||
|
|
||||||
|
req = {}
|
||||||
|
req['description'] = field_to_string(comment.get('lead', '')) + field_to_string(comment['description'])
|
||||||
|
req['requestType'] = field_to_string(comment['requestType'])
|
||||||
|
req['complexity'] = int(field_to_string(comment['complexity']))
|
||||||
|
rpcVersionRaw = field_to_string(comment['rpcVersion'])
|
||||||
|
req['rpcVersion'] = versions['rpcVersion'] if rpcVersionRaw == '-1' else int(rpcVersionRaw)
|
||||||
|
req['deprecated'] = False if rpcVersionRaw == '-1' else True
|
||||||
|
req['initialVersion'] = field_to_string(comment['initialVersion'])
|
||||||
|
req['category'] = field_to_string(comment['category'])
|
||||||
|
|
||||||
|
try:
|
||||||
|
if 'requestField' in comment:
|
||||||
|
req['requestFields'] = get_request_fields(comment['requestField'])
|
||||||
|
else:
|
||||||
|
req['requestFields'] = []
|
||||||
|
except:
|
||||||
|
logging.exception('Failed to process request `{}` request fields due to error:\n'.format(req['requestType']))
|
||||||
|
continue
|
||||||
|
|
||||||
|
try:
|
||||||
|
if 'responseField' in comment:
|
||||||
|
req['responseFields'] = get_response_fields(comment['responseField'])
|
||||||
|
else:
|
||||||
|
req['responseFields'] = []
|
||||||
|
except:
|
||||||
|
logging.exception('Failed to process request `{}` request fields due to error:\n'.format(req['requestType']))
|
||||||
|
continue
|
||||||
|
|
||||||
|
logging.info('Processed request: {}'.format(req['requestType']))
|
||||||
|
|
||||||
|
requests.append(req)
|
||||||
|
elif api == 'events':
|
||||||
|
if not validate_fields(comment, ['description', 'eventType', 'eventSubscription', 'complexity', 'rpcVersion', 'initialVersion', 'category']):
|
||||||
|
logging.warning('Failed to process event comment due to missing field(s):\n{}'.format(comment))
|
||||||
|
continue
|
||||||
|
|
||||||
|
eve = {}
|
||||||
|
eve['description'] = field_to_string(comment.get('lead', '')) + field_to_string(comment['description'])
|
||||||
|
eve['eventType'] = field_to_string(comment['eventType'])
|
||||||
|
eve['eventSubscription'] = field_to_string(comment['eventSubscription'])
|
||||||
|
eve['complexity'] = int(field_to_string(comment['complexity']))
|
||||||
|
rpcVersionRaw = field_to_string(comment['rpcVersion'])
|
||||||
|
eve['rpcVersion'] = versions['rpcVersion'] if rpcVersionRaw == '-1' else int(rpcVersionRaw)
|
||||||
|
eve['deprecated'] = False if rpcVersionRaw == '-1' else True
|
||||||
|
eve['initialVersion'] = field_to_string(comment['initialVersion'])
|
||||||
|
eve['category'] = field_to_string(comment['category'])
|
||||||
|
|
||||||
|
try:
|
||||||
|
if 'dataField' in comment:
|
||||||
|
eve['dataFields'] = get_response_fields(comment['dataField'])
|
||||||
|
else:
|
||||||
|
eve['dataFields'] = []
|
||||||
|
except:
|
||||||
|
logging.exception('Failed to process event `{}` data fields due to error:\n'.format(req['eventType']))
|
||||||
|
continue
|
||||||
|
|
||||||
|
logging.info('Processed event: {}'.format(eve['eventType']))
|
||||||
|
|
||||||
|
events.append(eve)
|
||||||
|
else:
|
||||||
|
logging.warning('Comment with unknown api: {}'.format(api))
|
||||||
|
|
||||||
|
# Reconfigure enums to match the correct structure
|
||||||
|
for enumType in enums_raw.keys():
|
||||||
|
enum = enums_raw[enumType]
|
||||||
|
enums.append({'enumType': enumType, 'enumIdentifiers': enum['enumIdentifiers']})
|
||||||
|
|
||||||
|
finalObject = {'enums': enums, 'requests': requests, 'events': events}
|
||||||
|
|
||||||
|
with open('../generated/protocol.json', 'w') as f:
|
||||||
|
json.dump(finalObject, f, indent=2)
|
@ -1 +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