Giter Club home page Giter Club logo

obs-task-list-overlay's Introduction

OBS Task List / Checklist Overlay

CI

An HTML and Node.js-based task list overlay for OBS.

OBS Task List Overlay Example with Jeff Geerling

I was frustrated with the lack of plugins that added a simple task list (with current task highlighted) to OBS, so I built this solution, which relies on OBS' 'Browser' source.

There are three components to this project:

  1. An HTML file (index.html), which lays out a stream title and task list/current status overlay.
  2. A Node.js HTTP server (server.js), which serves the HTML file to OBS, and allows you to control which step is highlighted in the display.
  3. A config file (config.json), which provides the server settings, title settings, and task list content.

I'm using this for a technical live stream, where I have a set list of milestones, and I want to indicate to viewers which task is currently being worked on.

To see it in practice, check out my 16 Drives, 1 Pi livestream.

The design is inspired by the NASASpaceflight live stream status overlay, which I enjoy for it's simplicity and elegance.

Customizing the overlay

All the styling for the overlay is embedded in the index.html file. If you want to tweak the appearance, it should be easy enough if you know basic CSS + JS.

To set a title and set up the list of tasks, copy the example.config.json file to config.json, and then edit the file to add in the settings you would like.

If you change the length of the stream title (task_list_title), you may also need to adjust the task_list_title_width to match the new width of the title text.

Node.js App setup

After you add your own task list and title, you need to get the Node.js server app running.

First, install Node.js on your computer.

Next, run the following command in this directory to install the app's dependencies:

npm install

Then start the local server:

node server.js

You can open the overlay in a regular web browser by visiting http://localhost:8080/, but note that the element sizes and spacing will differ from what is output in OBS.

Always use OBS as the final reference for how things will look during a stream!

Using Docker Compose

To use the Docker images configured with compose, you need docker-compose. Once it's up a running, you simply do

docker-compose up --detach

To stop the server

docker-compose down

The config maps container's 8080 port to localhost:8080. If you need to use another localhost port, you need to change it in docker-compose.yml under the ports section. For example, to use the port 3000 you need to set the section as:

    ports:
      - "3000:8080"

The port number after the colon would be the port configured in config.json.

Adding the browser source in OBS

  1. In an OBS Scene, add a new 'Browser' Source.
  2. For the URL, enter http://localhost:8080/ (use the port you have configured in config.json).
  3. Set the width to 1920 and height to 1080.
  4. Check the 'Refresh browser when scene becomes active' option.
  5. Click 'OK', and the overlay should appear.

Advancing to the next step

To control which task is highlighted, there are two paths the Node.js app responds to:

/up - Increase the current step by 1
/down - Decrease the current step by 1

You can also check what the current step is by requesting /current.

When you have the browser source open, OBS will change the highlighted step within one second of you requesting localhost/up or localhost/down.

The count can increase above the maximum number of items in your list, or below 1, so you are responsible for making sure you don't go crazy calling /up or /down too many times :)

Using an Elgato Stream Deck to advance steps

I use a Stream Deck to help with my live streaming, and I've created two buttons for this overlay, a 'back' (/down) and 'forward' (/up) key.

When I press the back button, the task list goes back one step.

When I press the forward button, the task list goes forward one step.

To add a hotkey in the 'Configure Stream Deck' app, drag a 'Website' button from the 'System' section into one of the slots on your Stream Deck.

Then set the URL to http://localhost/up (or /down), and check 'Access in background'.

Now, when you press that key, the appropriate URL is called silently and the on-screen task list should advance or go back a step depending on the button you pressed. Magic!

obs-task-list-overlay's People

Contributors

geerlingguy avatar glensouza avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

obs-task-list-overlay's Issues

Document how to integrate app with Elgato Stream Deck

...since that's how I'll be controlling it.

Hopefully I can just add a thing like 'run a script' or 'load a web page' (but not opening the browser), and have an left arrow key to go back a step (/down), and a right arrow key to go forward a step (/up).

I have a TODO in the README for this.

Add official image on Dockerhub with instructions for easy use

If you want to just run the container straightaway and not have to build it or run any Node.js on your system, I could have an official image hosted on Docker Hub. When you run it you can pass in your own path to a config.json file (e.g. in the same directory as a docker-compose.yml file that you copy from the README), and it will pick up that configuration.

Inspired by #3.

Issue with build

I'm using docker and went through your process and cannot get the container to load. it crashes with this error (below)

I even tried adding RUN npm install express to the dockerbuild file and made a second image and it still had the same error. Ideas?

internal/modules/cjs/loader.js:934

throw err;
^
Error: Cannot find module 'express'
Require stack:

  • /usr/src/app/server.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:931:15)
    at Function.Module._load (internal/modules/cjs/loader.js:774:27)
    at Module.require (internal/modules/cjs/loader.js:1003:19)
    at require (internal/modules/cjs/helpers.js:107:18)
    at Object. (/usr/src/app/server.js:2:15)
    at Module._compile (internal/modules/cjs/loader.js:1114:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1143:10)
    at Module.load (internal/modules/cjs/loader.js:979:32)
    at Function.Module._load (internal/modules/cjs/loader.js:819:12)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:75:12) {
    code: 'MODULE_NOT_FOUND',
    requireStack: [ '/usr/src/app/server.js' ]
    }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.