├── CNAME
├── transferSettings.bat
├── .gitignore
├── LICENSE.md
├── transferSettings.ps1
├── scanconnect.html
├── README.md
└── OBSliveTally.html
/CNAME:
--------------------------------------------------------------------------------
1 | obstally.lebaston100.de
--------------------------------------------------------------------------------
/transferSettings.bat:
--------------------------------------------------------------------------------
1 | powershell.exe -ExecutionPolicy Bypass -NoProfile -noLogo -file "transferSettings.ps1"
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.7z
2 | *.zip
3 | *.log
4 | .DS_Store
5 | .DS_Store?
6 | ._*
7 | .Spotlight-V100
8 | .Trashes
9 | *.code-workspace
10 | ehthumbs.db
11 | Thumbs.db
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018-2024 lebaston100
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/transferSettings.ps1:
--------------------------------------------------------------------------------
1 | # Path to the old ini config
2 | $iniFilePath = "$env:appdata\obs-studio\global.ini"
3 |
4 | try {
5 | # try to get variables from obs global.ini file (old location)
6 | $server_password = (Select-String -Path $iniFilePath -List -Pattern "(?<=ServerPassword=)\S+").Matches[0].Value
7 | $server_port = (Select-String -Path $iniFilePath -List -Pattern "(?<=ServerPort=)\S+").Matches[0].Value
8 | } catch {
9 | Write-Output "No configuration data found at old location"
10 | }
11 |
12 | # Path to the new JSON file location
13 | $jsonFilePath = "$env:appdata\obs-studio\plugin_config\obs-websocket\config.json"
14 |
15 | # Check if the json file exists
16 | if (Test-Path -Path $jsonFilePath) {
17 | try {
18 | # Read the file
19 | $jsonContent = Get-Content -Path $jsonFilePath -Raw | ConvertFrom-Json
20 | $server_port = $jsonContent.server_port
21 | $server_password = $jsonContent.server_password
22 | Write-Output "Read data from new location"
23 | } catch {
24 | Write-Output "Error reading from new json file"
25 | }
26 | }
27 |
28 | # print out variables
29 | Write-Host $server_password
30 | Write-Host $server_port
31 |
32 | $destinationFile = "OBSliveTally.html"
33 |
34 | # replace text in html with new values
35 | $controller = Get-Content -Path $destinationFile
36 | $controller = $controller -creplace "YourPasswordHERE", $server_password
37 | $controller = $controller -creplace "4455", $server_port
38 | $controller | Set-Content -Path $destinationFile
--------------------------------------------------------------------------------
/scanconnect.html:
--------------------------------------------------------------------------------
1 |
2 |
Open Tools -> WebSocket Server Settings -> Show Connect Info and scan the QR Code to connect
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # OBSliveTally
2 |
3 | This html page connects to any OBS 30 (and later) instance on the local network and displays either the stream status (live/offline), recording status(idle/recording) or tally information(on air/in preview/neither) for a scene or input. It can also show a small image preview.
4 |
5 | ## Usage example
6 |
7 | 
8 |
9 | ## Setup
10 |
11 | - Start OBS, open the "Tools" menu and select "obs-websocket Settings"
12 | - Make sure that "Enable Websocket server" is checked
13 | - [Download this repository](https://github.com/lebaston100/OBSliveTally/archive/master.zip) and unpack or clone it
14 |
15 | Simple setup on windows:
16 | - Launch the "transferSettings.bat". This will find the configuration values in your locally installed obs and put them into the right place for you. This can only be done once.
17 |
18 | Simple setup on mobile devices:
19 | - Open "scanconnect.html" (for online hosted [here](https://lebaston100.github.io/OBSliveTally/scanconnect.html))
20 | - Allow camera access
21 | - Open the "Tools", select "obs-websocket Settings" and click on "Show Connect Info"
22 | - Scan the QR-Code with the phone camera
23 | - Click "Connect"
24 | - (Optional) Long press on a blank page segment to bring up the context menu and enable auto-reconnect
25 |
26 | Setup otherwise:
27 | - In the "obs-websocket Settings" copy the websocket password (If "Enable Authentication" is enabled) for later by clicking on "Show Connect Info"-Button -> Next to the "Server Password" field -> "Copy"-Button
28 | - Make sure that "Server Port" is 4455
29 | - If a websocket passwort is set, paste it into line 12 of OBSliveTally.html
30 |
31 | By default it is setup to connect to the IP of the machine you run it on(127.0.0.1). You can change that default start value by editing the IP address and/or the port in line 11 with a text editor.
32 | You can open the file directly with a webbrowser or use a simple webserver somewhere on the network to serv it to local clients.
33 | An internet connection is required for it to load. (See more info at the bottom)
34 |
35 | The newest version is always [hosted here](http://lebaston100.github.io/OBSliveTally/OBSliveTally.html) thanks to github pages.
36 |
37 | ## General Usage
38 | - Open the OBSliveTally.html in a web browser (On a pc, laptop, tablet, smartphone)
39 | - You can enter or change the ip to the address of your obs machine. If you edited it in the file as mentioned above it will show up here already filled in.
40 | - Click on the "Connect to OBS" button
41 | - If the connection to the obs machine was successful, a list of buttons will show up with all your inputs and sources from obs and two other buttons on top for "Stream Status" and "Recording Status"
42 | - As soon as you click the "Connect to OBS" button, the IP address entered will be saved on the device with the localStorage API if available. If you then reload the page on the device it will auto-fill the IP field with the saved value so you don't have to re-enter it every time.
43 |
44 | ### Show Stream or Recording Status
45 | - Click the "Stream Status" or "Recording Status" button
46 | - That's it. It will show OFFLINE/IDLE and a white background if you're not streaming/recording and LIVE/REC with a red background when the stream is live/recording is active
47 |
48 | ### Show Scene Tally
49 | - Click on the scene name you want that are listed under "Scenes"
50 | - It will show the name of the scene on top of the page.
51 | - If the scene is neither in preview or program, the background will be black
52 | - If the scene is in preview, the background will be green
53 | - If the scene is in program, the background will be red
54 | - If a transition (like a fade) is started where the destination scene is the scene you selected, then it will light up red
55 | - If studio mode is disabled there will be only a red and black display, no green and also no red state while a transition is active
56 | - If a scene is nested into another scene (1-level deep) then it will also show tally for the scenes including the selected scene
57 |
58 | ### Show Input Tally
59 | You can also show the tally status for individual sources. Every scene that containes a SceneItem of that Input will be handled like described in Show Scene Tally above.
60 |
61 | The tool will keep track of changes to the scenes/innputs like add, delete or renames and will automatically adjust.
62 |
63 | ### Advanced options
64 | - If you want the page to be displayed in fullscreen then right-click the page and click "Toggle fullscreen". This can't be stored between reloads thanks to browser "security".
65 | - If you want to see a small image preview of the current program scene in the bottom left corner that updates every X seconds then then right-click the page and click "Enable PGM screenshot". This will be saved across reloads. To disable just open the context menu again and choose "Disable PGM screenshot". Size and interval can be adjusted in line 15/16. Showing transitions is not supported.
66 | - If you want the page to automatically connect to obs without making any default selection then right-click the page and click "Enable auto connect". This will be saved across reloads. To disable just open the context menu again and choose "Disable auto connect".
67 | - If you want to automatically restore what you last selected in terms of Stream/Rec Status / Scene / Input then right-click the page and click "Enable auto restore". This will be saved across reloads. To disable just open the context menu again and choose "Disable auto restore". You can combine this will auto connect for the full experience.
68 | - If you want to delete all of the locally stored data (obs connection settings, advanced options) then right-click the page and click "Clear all saved settings". This will clear the data and reload the page.
69 | - If you want to use the tool offline aka without an internet connection you need to download [this file](https://cdn.jsdelivr.net/npm/obs-websocket-js@5.0/dist/obs-ws.min.js) making sure not to rename it, place it in the same folder as the OBSliveTally.html, uncomment line 7 and comment out line 6(also in the OBSliveTally.html).
70 | - If you want to provide the obs host and password as URL parameters, you can do that. Just append ?host=yourhost&password=yourpassword to the url. Make sure to URL-encode it.
71 |
72 | If you find any bugs, please report them as a Github Issue or join my [Discord Server](https://discord.gg/PCYQJwX)
73 |
74 | ### Troubleshooting
75 |
76 | - If the page does not connect to obs:
77 | - Make sure you have a working internet connection or have prepared it for offline usage as listed in "Advanced options"
78 | - Check if host, port and password are correct
79 | - Check the connection is allowed in your firewall
80 | - Make sure the page is run with either a file:// or http:// url. https:// will not work.
81 | - Open web browser's dev tools and check console for any errors
82 | - Enable debug logging in the websocket settings and check the obs log for any errors
83 | - If the scanner cann not access the camera
84 | - Make sure the page is running in a "secure context" aka https:// or a file:// or http://localhost url
85 |
86 | ## Tested on/with:
87 | - Win 11 23H2
88 | - OBS 31.0.0
89 | - Brave (with Brave Protection switched of)
90 | - Nothing Phone 2a
91 |
92 | ## Thanks
93 |
94 | Thanks to [alexdean](https://github.com/alexdean) for refactoring it at some point in 2020 and fixing a few state bug's that came up.
--------------------------------------------------------------------------------
/OBSliveTally.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | OBS Tally
6 |
7 |
8 |
9 |
671 |
773 |
774 |
775 |
The page is currently loaded via https, this will likely not work. Change the url to http and disable automatic http upgrade in your browser's privacy options.