An attempt at creating an overlay that could be used inside of OBS to show who is speaking for the DAY[0] Podcast. It is meant to be reasonable extendable if you want to edit the code, but its written for my needs.
There are two components, the main webserver which serves ./web as the webroot, and ./socket.io which serves a Socket.IO (v2.20) socket that broadcasts events from the Mumble server into the browser.
Broadcasts - these are broadcast to all connects whenever the associated event happens
method=broadcast- Whenever a user starts or stops speaking.- The data is an
object:{ name: "the speakers mumble username", is_speaking: true|false }
- The data is an
method=join- Whenever a new user is seen (on first connect all users will be joined)- The data is a
stringcontaining their username
- The data is a
method=leave- Whenever a user leaves- The data is a
stringcontaining their username
- The data is a
Actions - these are messages that can be sent to the server
method=action- data object:
{ "action":"user-list" "id":"", "data": null, }- All requests should fill in the
actionandidfields and can skip thedatafield. - Responses will use teh same
actionandidvalues as the request, with the response indata
- All requests should fill in the
-addr- host:port for the target mumble server-user- Username to connect as-pw- Server password if any, currently no support for certificates-verify=false- Disable certificate validation against the server
The address, username, and password can also be provided through the following environment variables :
MUMBLE_ADDRMUMBLE_USERMUMBLE_PW
I'm sure there are plenty more but a few of note:
- The bot joins the root of the mumble server, it cannot use a specific channel
- No certificate based authentication (can't login to an existing account)
- The display is configured to hide unknown users (see web/users.js) by default