Skip to content

Commit

Permalink
update readme.md, update dependencies, push version to 1.4.0
Browse files Browse the repository at this point in the history
  • Loading branch information
reaby committed Oct 5, 2020
1 parent 2c96a11 commit 47ec3fd
Show file tree
Hide file tree
Showing 6 changed files with 441 additions and 175 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ tmp/*.png
public/assets/
data/sessions.db
data/bundles/*
data/*.log
data/template.json
!data/bundles/default
!data/bundles/default/*
130 changes: 83 additions & 47 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,69 +1,105 @@
# Info screen<sup>3</sup>

is useful tool when you need displaying same content to multiple locations or need to remotely control a slide show display.

Usage is very easy after you have setup the server at local network. The viewer is simply a web page so you need just computer with a browser to setup your displays.

# Features
* Can display easily slides from browser, you just need network connection, laptop with some browser
* Output resolution does not matter, all contents are automatically scaled from full hd or half-hd as source material.
* Slides:
* Supports multiple screens/displays, for example info/kiosk and big and side screens can have different shows.
* Has good text and image support, while background is shared per slide bundle
* You can also have different image as background, just put custom image at editor to own layer
* Slide can be as well only single image
* Supports web content as slide, with custom scale factory
* can be useful for timetables, tournament brackets... etc even pdf document loads
* Video support:
* Slide background can has .mp4 embed video loop, half-hd preferably for performance.
* It has Overlay/OnDemand layer for local obs live stream, supports sound as well, buffer delay about 2 seconds.
* Easy-to-use editor for slides with support of adding text and images to slide
When you need to display same content to multiple locations or need to remotely control a slide show.

## Features
* Displays slide show in browser
* Uses Full HD 1920x1080 resolution internally
* Easy-to-use editor for slides. Supports adding easily text and image content
* The output resolution does not matter, all contents are automatically scaled from the Full HD source
* Finnish and English language support, sets automatically from browser language.
* Multiple renderers to choose from:
1. WebGL (with 60+ changeable transitions)
2. CSS3 (only blinds3D)
3. Lite (only cross fade)
* in case your viewer laptop is totally a potato
* Content
* Multiple screen locations, for example big screen may have different slide shows than kiosk -screen etc.
* Webpages as slide + custom scaling of the content
* can be useful for dynamic content like timetables, brackets and so on
* Now with embedded Youtube video support (to have a 10h nyancat)
* Supports mp4 video as a slide, in case you wish to run ads or democompo entry as a content slide.
* Optional support for local RTMP Live streams, buffer delay is about 2 seconds.

# Setup
## Setup
1. run `npm install`
2. copy `config-default.js` to `config.js`
3. check config settings and if you don't need live stream support from local network using OBS, set `mediaServer` to `false`
4. run `npm start`
3. run `npm start`
- optionally you can start as a background task: `npm run-script daemon`, it will output just a pid for the new process and you find new files: `output.log` and `errors.log` at the `data` directory.

# Default usage
Viewer is located at: http://localhost:8000 <br/>
## Configuration
> The default `config.js` file serves you well only if you wish to run infoscreen at localhost only!
To access the infoscreen server outside from the localhost, like at LAN network, the config must be bind to external IP your server machine has.

Example:
```javascript
module.exports = {
"serverListenPort": 8000,
"serverHost": "192.168.56.100",
"serverUrl": "http://192.168.56.100"),
// ...config file continues from here...
```
If you wish to have live stream support at local network using OBS, set `mediaServer` to `true` and set desired streamKey
You can run the server listen port as well the default http port `80`, but in that case you have to run the app with privileges at linux systems: `sudo npm start`
## Plugins
List of available plugins
| Plugin | Description |
| :------- | :----------------------------------------------------------------------------- |
| profiler | Outputs memory usage statistics at console |
| overlay | Change infoscreen to work as overlay to stream, by disabling background layers |
| ping | Example plugin to display ping for local network machine. |
## Usage
Viewer is located at: http://localhost:8000<br>
Admin interface is located at: http://localhost:8000/admin<br/>
Defaults to user: `admin`, pass: `admin`<br/>
It's highly encouraged to change the defaults to something else!
# Local stream support for OBS
> Works only when config has `mediaServer` set to `true`
> for production it is highly encouraged to change admin credentials from the default!
at OBS go to: `Settings` -> `Stream`<br/>
set following options:<br/>
| Username | default password |
| :------- | :--------------- |
| admin | admin |
| view | view |
|Setting|Value|
|:---|:---|
|Stream Type:| Custom Streaming Server|
|URL:| `rtmp://localhost/live`|
|Stream key:|`STREAM_NAME`|
## Local stream support for OBS
> Works only when config has `mediaServer` set to `true`
# Mediaserver status and adminpanel
Admin interface is located at: http://localhost:8001/admin
You can use same crendetials as configured at main app
at OBS go to `Settings` -> `Stream`
| Setting | Value |
| :----------------- | :------------------------------------------------- |
| Service | Custom... |
| URL | `rtmp://localhost/live` |
| Stream key | config.streamKey value, defaults to: `INFOSCREEN3` |
| Use Authentication | *leave un-ticked* |

## Mediaserver admin panel
> if you have changed the default port from 8000 to something else, the correct port to access this feature is (config.serverListenPort+1)

Admin interface is located at: http://localhost:8001/admin
It accepts the same crendetials as configured at the main app.

# Environment variables
|ENV|default|Usage|
|:---|:---|:---|
|PORT|8000|Server listen port|
|HOST|localhost|Host or ip from where to server is externally accessible|
|ADMIN_USER|admin|Username to access admin interface|
|ADMIN_PASS|admin|Password for the admin interface|
## Environment variables
| ENV | default | Usage |
| :--------- | :-------- | :---------------------------------------------------- |
| PORT | 8000 | Server listen port |
| HOST | localhost | Host or ip, where the server is externally accessible |
| ADMIN_USER | admin | Username to access admin interface |
| ADMIN_PASS | admin | Password for the admin interface |
| USER | view | Username to access viewer |
| PASS | view | Password to access viewer |

# Dockerfile
## Dockerfile

Dockerfile is provided for building a docker container. Docker container accepts the same ENV variables as the standard setup (see them above).

`docker build -t reaby/infoscreen .`<br/>
`docker run -p 8000:8000 -e HOST=infoscreen.lan -e PORT=8000 -e ADMIN_USER=admin -e ADMIN_PASS=secret --name infoscreen reaby/infoscreen`<br/>
```bash
docker build -t reaby/infoscreen .
docker run -p 8000:8000 -e HOST=infoscreen.lan -e PORT=8000 -e ADMIN_USER=admin -e ADMIN_PASS=secret --name infoscreen reaby/infoscreen
```

# Thanks
WebGL renderer bases upon initial working of [Creative WebGL Image Transitions](https://github.com/akella/webGLImageTransitions) repository here at github. Thanks for your awesome article.
2 changes: 1 addition & 1 deletion bin/infoscreen3
Original file line number Diff line number Diff line change
Expand Up @@ -90,5 +90,5 @@ function onListening() {
: 'port ' + addr.port;

cli.info('Infoscreen is now accessible at ' + chalk.bold.white(config.serverUrl + ":" + config.serverListenPort));
console.log(chalk.green(">>") + chalk.default("Start complete.") + chalk.green("<<"));
console.log(chalk.green(">>") + chalk.white("Start complete.") + chalk.green("<<"));
}
28 changes: 7 additions & 21 deletions config-default.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@ module.exports = {
"serverListenPort": process.env.PORT || 8000,
"serverHost": process.env.HOST || "127.0.0.1",
"serverUrl": "http://" + (process.env.HOST || "127.0.0.1"), // used for web client
"sessionKey": "generateRandomStringForSecret",
"streamKey": 'STREAM_NAME',
"sessionKey": "generateRandomStringForSecret", // used for encrypting cookies
"streamKey": 'INFOSCREEN3', // stream key for rtmp end point
"useLocalAssets": false, // used to load javascript libraries locally from /public/assets
"mediaServer": false, // local streaming server for rtmp, see docs how to use
"defaultLocale": "en",
"defaultLocale": "en", // currently supported values are: "en","fi"

/*
* Plugins
*/
"plugins": [
"profiler"
"profiler", // display memory statistics at console.
],

/*
Expand All @@ -38,23 +38,9 @@ module.exports = {
},
{
"id": 2,
"displayName": "Display Operator",
"username": "operator",
"password": "operator",
"permissions": {
"isAdmin": false,
"dashboard": {
"addBundle": false,
"addSlides": false,
"addWebPage": false,
}
}
},
{
"id": 3,
"displayName": "Display Viewer",
"username": "view",
"password": "view",
"username": process.env.USER || "view",
"password": process.env.PASS || "view",
"permissions": {
"isAdmin": false,
}
Expand Down
Loading

0 comments on commit 47ec3fd

Please sign in to comment.