├── 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 | 3 | 4 | 5 | QR-Code Connector 6 | 97 | 121 | 122 | 123 |
124 |
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 | ![Image](https://cdn.lebaston100.de/git/obslivetally/animation_small.gif) 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.
776 |
777 |
Toggle fullscreen
778 |
Enable PGM screenshot
779 |
Enable auto connect
780 |
Enable auto restore
781 |
Reload page
782 |
Clear all saved settings
783 |
Connect via QR-Code
784 |
785 |
786 | 787 |
788 |
789 | Host/IP + Port: 790 | Websocket Password: 791 | 792 | 793 |
794 |
795 |
796 |
797 | 798 |
799 |
800 | 801 |
802 | 803 | --------------------------------------------------------------------------------