OBS Scene Timer

Free OBS Scene Timer v1.7.1

This small update contains some minor changes, mostly in the user interface:
  • Added command line option `--clear-update-history` to force check for new updates.
  • Renamed "Cancel" button to "Skip", in new update popup.
  • Added support/donation link to application information dialog.

Feel free to leave valuable feedback!
Long time no see

Here's a new update thanks to your feedback!

  • HTML web client is now available for use (separate download)
  • Added automatic update notifier
  • Added 'Always on top' functionality

  • Fixed OBS Scene Timer not shutting down correctly when OBS has already been shut down
  • Fixed Config error not showing correct property file
  • Fixed some tests
  • Updated screenshots

HTML Client

A separate download is available: HTML Client (obs-scene-timer-client-v0.1.html). Download and open this .html file in your browser to use this client. You can also use this link ('file:///path/to/file.html', see your browsers address bar when the file is openend) to create custom OBS Scene Timer docks in OBS (use 40% scale) or add OBS Scene Timer as a (browser) source to your scenes. Great way to have the timer in multiview.

Please see the README on Bitbucket for more information: https://bitbucket.org/sajansen/obs-scene-timer/src/master/#markdown-header-web-client. Also make sure to start the Remote sync server (Tools / Remote sync / Start as server).

Basics to configure this client is by adding 'query parametres' to the URL. These start with '?' and are separated by '&', like this: 'file:///path/to/file.html?scale=50&alignment=vertical'. These are the parameters:

- 'address': sets the address for the websocket to connect to (the address of the master OBS Scene Timer). Default is "ws://localhost:4050".
- 'scale': scales the text in percentage. Default is '100', normal scale.
- 'alignment': specifies how the two clocks must be aligned: 'horizontal' or 'vertical' (default). Note that if the page size gets to small, the clocks will auto realign themselves to fit in the page.
In this new update some requested features were added:
  • Insert time as seconds or as (H):mm:ss notation. 121 seconds will be converted to 2:01. Arrow keys still work. And inserting -1 will reset the limit value to the default value.
  • In Windows, the timer progress will be visually displayed in the task bar. Including green, yellow and red colors.
  • In the last 10 seconds (adjustable), the timer screen will flash to catch your attention.

Further more, the following small features/fixes were added:
  • VLC Media Sources are now supported to automatically calculate scene duration.
  • There's an option to configure how the source length of a VLC Media Source playlist should be handled.
  • Tooltip in group assignment screen is more clear.
  • Scenes can be reloaded using the menu or Ctrl+Alt+R to fetch the latest source changes. For example, if you added a new media source.
  • The default properties file is now named: obs-scene-timer.properties. You can still use your old user.properties file.
Some requested features were added, like Grouping Scenes, Hot Keys, and Customizable Window Title.

Note: this update will reset your manual specified scene time limits.

- Group scenes so that the timer doesn't reset between grouped scene changes.
- Reset scene time limit to default value by inserting -1 as time limit. (The new time limit will be automatically calculated and inserted, so you won't ever actually see the -1 as it automatically jumps to its new default value.)
- Added hotkeys/shortkeys. Check the README if they aren't obvious enough.
- Added dynamic window title. Variables can be used: {sceneName}, {timerElapsed}, {timerRemaining}, and {sceneLimit}.
- Added documentation for the websocket server.
- Added readable clock time format as tooltiptext on time limit inputs. Just hover to see what you are actually typing.
- Assigned default buttons for dialogs.
- Esc and Ctrl+W now close popup windows. Ctrl+Q quits the application.
- Added "--offline" console command to disable connection with OBS on startup. I don't know why you want to use that.
- Added list colors to Theme.
- Fixed wrong timeout setting in Settings window. The application tricked you into thinking that you are changing the one variable while you were actually changing another variable. Evil.
- Remove default focus from first text field from Settings window to Save button, so we don't accidentally change those values.
- Application now exits cleaner.
- Append application startup log with blank lines, so we can see the difference between sessions.

Stay safe.

Screenshot from 2020-08-17 11-51-32.png
Start the new month with the new release of OBS Scene Timer. Main subjects of this release:
  • Ability to handle larger scene collections to solve the "scenes not loading" bug
  • One Timer server for control and multiple Timer clients for ... name your usage
  • Window restoring

This release includes the following:
  • Increased message size between OBS and OBS Scene Timer to 1 MB to support very very very long scene collections.
  • You can use a password for secured OBS websockets (note that the password is stored as plain text in the settings file).
  • You can use multiple instances of OBS Scene Timer running on multiple computers in the same network and set up one instance as the master/server and the others as clients. These clients will listen to their server only. Any changes on the server will be instantaneously visible on the clients.
  • Save and restore window size/location.
  • Added full screen support.
  • A timer start delay is added (default: -300 milliseconds) to deal with transition times.
  • Websocket scanning tool has an adjustable timeout setting. So if you couldn't find the server due to slow network, increase this timeout.
  • Application will log what it's doing to a log file. This can be turned off.
  • "Connection re-established" notifications are still pushed, but marked as read by default.
  • Notifications containing errors will display more details about these errors.
  • To make the previous feature more useful, more error catching points were added.
  • Automatically calculate scene time limits using its video sources can be turned off.
  • After changing the settings, the GUI will reload so theme changes are immediately visible without needing to restart the application. Other settings may still require application restart.
  • On application start, the 'current scene' label will display 'Waiting for connection...' instead of 'Initializing...', until a current scene is loaded/received.
  • A lot of code refactoring is done. Hopefully this will only increase user experience ;)

I hope part of this release will solve the more common problem of "scenes not loading and keeps reconnecting to OBS", with the increased message limit and more detailed error messages. For the other part, I hope it will bring you a better experience ;)

In this pre-release, the following has been added/changed:
  • Implemented password authentication with a possible secured OBS websocket
  • Window position and size can be restored (you can disable this in the settings)
  • Added file logging (you can turn this on in the settings, log file will be created in your system's temp folder)
  • Websocket scanning timeout is adjustable. If the scanner cannot find your OBS, try increasing this timeout
  • Increased maximum message size received from OBS (from 64 kB to 256 kB) (so we can load more scenes and sources :D)
  • Some code clean up
In this new version, the following has been added / changed:
  • No more struggles to figure out IP addresses: use the new Network Scanner to scan your local network for OBS websockets (on default ports 4444)
  • Added themes: Light (default) and Dark (experimental). This will remove the ability to customize the timer background color. This can now be done by creating new themes. See the readme on Bitbucket on how to create a new theme.
  • Config will now only access the file system if there are actual any changes. This is checked periodically.
  • The left panel's content (scene names and their time limits) will fit their whole panel (horizontally), even if resized.

Please let me know if you're enjoying OBS Scene Timer and its features and also let me know if you are missing something.
A new update! This new update contains the following:
  • Configuration can now be edited via it's own GUI. Head to File -> Settings After changing the settings, click Save and restart the application. Now longer editing config files :D
  • The two main panels (left and right) are now resizable
  • SceneLogger will log application exit with an timestamp and empty scene name value
  • Made notification icon less noticeable if there are no new notifications
  • Also gave notification screen a more obvious Close button
  • Removed copyright from timer panel and gave it it's own screen with more application info
  • Fixed some bug in the module which tries to automatically determine video lengths (thanks to mattharris)
  • Fixed a bug that after automatic video length determination not all time limits for all scenes are updated (thanks to mattharris)
  • Fixed a bug that after application restart, the countdown won't be displayed for the first current scene (if it has a time limit)
  • Fixed that if only one scene limit value is saved, it couldn't be loaded on the next application startup

Thanks for the feedback and feel free to leave some comments.
This new update contains the following:
  • Auto (re)connect to OBS. So no longer starting OBS before starting OBS Scene Timer! Timer won't be interrupted if connection with OBS is lost.
  • Font size of the timer clocks can be adjusted in the user.properties file (see readme for more information)
  • Added a fancy icon for the application, which also turns red when the time limit has been reached
  • Notifications about numerous of things than can go wrong, especially about the connection with OBS
  • Added a functionality to enable timestamp logging of scene changes to a CSV file (see readme for more information)
  • Oh, and scenes are now displayed in the same order as they are displayed in OBS

Feel free to leave comments, tips, use cases, chocolate cake, anything...
  • Like
Reactions: Paramike
In this step by step guide I will walk you through the setup of this application. I won't talk about how to install OBS or the required obs-websocket plugin. These have their own guides.

1. Preparation/requirements:
  1. Install OBS.
  2. Install obs-websocket.
  3. Make sure Java 8 (or greater) is installed.

2. Installation of OBS Scene Timer on the same computer as OBS:
EXE application
  1. Download the latest version of obs-scene-timer.exe file from obs-scene-timer on BitBucket.
  2. Run OBS Scene Timer by double-clicking this obs-scene-timer.exe file.
JAR application
  1. Download the latest version of obs-scene-timer.jar file from obs-scene-timer on BitBucket.
  2. Run OBS Scene Timer by double-clicking this obs-scene-timer.jar file.
    If you work from the command line, run: java -jar obs-scene-timer.jar
    1. If on Linux: you might need to make it executable first, by running chmod +x obs-scene-timer.jar in the same directory as the file.
    2. If on Windows: the application will run without requiring any additional actions from the user.

3. Setup OBS Scene Timer configuration:
  1. Run OBS Scene Timer and go in the menu to File -> Settings
  2. Edit the configuration values to suit your needs.
    If you are running OBS Scene Timer on another computer as OBS itself, than you must set the right IP address:
    1. Edit the value OBS websocket address to: ws://localhost:4444 and replace localhost in this value with the correct IP address of the computer on which OBS is running.
  3. Hit Save and restart OBS Scene Timer

4. Use the application: Prepare for streaming:
  1. Start OBS.
  2. Run OBS Scene Timer by double-clicking this obs-scene-timer.exe or obs-scene-timer.jar file.
  3. When the connection to OBS is successful, all scenes will be loaded in OBS Scene Timer.
  4. For each scene, a time limit can be specified by entering a number in the input box right of the scene name. This number is the time limit for the scene in seconds.
  5. Hit 'Tab' or click on another box to make sure the new value has been loaded. This value will also be saved to the configuration (user.properties file) almost immediately.
  6. If you don't want to specify a time limit for a scene, just leave the value at 0 and no countdown will be shown.

5. Use the application: During streaming:
  1. Make sure OBS and OBS Scene Timer are running, otherwise execute steps 4.1 and 4.2 from Use the application: Prepare for streaming
  2. Now, the current active scene in OBS will be displayed in the main window in OBS Scene Timer. You will see a timer counting up and the current active scene name displayed at the top of the window.
  3. Whenever the active scene changes in OBS, OBS Scene Timer will react on this by restarting the timer from 0 and also displaying the new active scene name at the top of the screen.
  4. When a time limit/duration greater than 0 is specified for the current active scene, a countdown will also be displayed. When this countdown reaches zero, this means the scene has reached it's time limit. Visual warnings will be showed in OBS Scene Timer.

OBS Scene Timer will not change anything in OBS itself. It will only request information about the current active scene and the scene list.