This is a webpage that can be used as an overlay for the purpose of timing for a Toastmasters meeting
The Overlay is controlled from a local website that is mirrored across all with the same id. The view parameter hides the controls
OBS will hide the background
- Download
- Run the Timer Overlay
- Open a browser window at localhost:8888
- Click Copy Link
- Open OBS Studio
- Setup your video in OBS
- Sources -> Add -> Video Capture Device
- Click the image and resize and move it to your liking
- Add Browser Capture
- Sources -> Add -> Browser
- Paste the copied link
- Start VirtualCam
- Controls -> Start Virtual Camera
- Change your Video Source to OBS-Camera
- In Zoom: Settings -> Video -> Camera -> OBS Virtual Camera
- To test it press hot key
1, org: Green2, ory: Yellow3, orr: Red
- Download
- Run
npm installnpm run build
- Start the application with
npm start - Continue from step 3 of Usage above
- Requirement
- Install dependencies
npm install
- Start webpack in dev mode
npm run watch:web
- Start with ts-server with cache disabled
npm run dev
- Open a browser at
localhost:8888- Optionally the port can be changed by adding
port={number}to the run dev command
- Optionally the port can be changed by adding
| Name | Alias | Type | Description |
|---|---|---|---|
| Port | p | Number | The port to listen on |
| Cache | Number | How long the client should cache the page for | |
| Cache | False | Disable client-side Cache | |
| One-Id | i | String | Sets all ID's to be the assigned value |
| One-Id | i | True or Switch | Sets all ID's to be the assigned the value aaaa |
| Open | o | Switch | Opens a browser window |
| Open | o | String | Opens the specified browser window |
| OBS | b | Switch | Opens OBS with Virtual Camera enabled |
| OBS | b | String | Opens OBS at assigned path with Virtual Camera enabled |
| OBS-CWD | String | Location from where to launch OBS | |
| OBS-Profile | String | Sets OBS Profile | |
| OBS-Scene | String | Sets OBS Scene | |
| OBS-Minimize | obs-min | Switch | Sets OBS minimize on start to true |
| ssl | String | File path to SSL directory with both SSL certificate and Key | |
| ssl-cert | String | File path to SSL Certificate | |
| ssl-key | String | File path to SSL Key | |
| UDP | u | Switch | Starts UDP socket on port 8889 |
| UDP | u | Number | Starts UDP socket on assigned port |
| UDP-Interface | String | Sets which Interface will be used by UDP. (Can be Network Adapter Name or an IP address used by a Network Adapter) | |
| Broadcast | Switch | Sets UDP Socket to broadcast timing info to port 8890 | |
| Broadcast | Number | Sets UDP Socket to broadcast timing info to assigned port | |
| Broadcast-User | b-user | String | Sets UDP Socket broadcast filter (Can be assigned more than once) |
| TCP | t | Switch | Sets up TCP Server on port 8891 |
| TCP | t | Number | Sets up TCP Server on assigned port |
| TCP-Interface | String | Sets which Interface will be used by TCP. (Can be Network Adapter Name or an IP address used by a Network Adapter) |
The arguments port=80 cache=false one-id=true are the same as any of the following:
--port 80 --cache false --one-id true-p 80 --cache false -i80 false one-id80 false true
All Arguments are case insensitive
Warning: Any argument starting with a - will disable all switches and assignments without them
Example: -p 80 one-id=abcd will set 80 to Port and one-id=abcd to Cache
A UDP Socket transmitting timing info
| Name | Size | Description |
|---|---|---|
| Magic Value (0xAEE8A872) | 4 bytes | There to verify that the packet is coming from the timer. (Only UDP) |
| User Count | 1 byte | Number of Users in the packet |
| User Definition | ||
| ID length | 1 byte | byte length of the ID |
| ID | N bytes | UTF-8 Encoded String |
| Elapsed ms | 4 bytes | Milliseconds since the timer started |
| Green s | 2 bytes | Seconds from start till green is shown |
| Yellow s | 2 bytes | Seconds from start till yellow is shown |
| Red s | 2 bytes | Seconds from start till red is shown |
| Overtime s | 2 bytes | Seconds from start till overtime is shown |
| Name | Size | Description |
|---|---|---|
| Magic Number (0x7DAE0492) | 4 bytes | (Only UDP) |
| Port | 2 bytes | Port to send data to. (Only UDP) |
| Type | 1 byte | Message Type |
| Data | N bytes | Look for definition below |
Stops sending packets
| Name | Size | Description |
|---|---|---|
| User Count | 1 byte | Number of users in packet |
| User Definition | ||
| ID length | 1 byte | Byte length of User ID |
| ID | N bytes | UTF-8 Encoded String |
Integers are Big-Endian encoded UInt
The easiest way to run the program is to add the parameters one-id open obs-min
This will:
- Set all ids to be
aaaa - Open a browser window with the controls
- Open OBS with Virtual Camera enabled and minimized to tray
- Closing the process will close OBS as well
- the parameter
obscan be used instead to not minimize obs
