Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/alepez/omxdirector

Nodejs module to control omxplayer
https://github.com/alepez/omxdirector

Last synced: 16 days ago
JSON representation

Nodejs module to control omxplayer

Awesome Lists containing this project

README

        

# omxdirector

Nodejs module providing a simple interface to omxplayer.

Supports multiple files playing and loops. It's capable of seamless
loops if `omxplayer` supports it natively. When `omxplayer` doesn't
support loops, this module handles loops respawning omxplayer
process.

This version supports playing remote (HTTP) files and allow users to seek (-/+ 30 seconds).

## Usage

### Basic usage

var omx = require('omxdirector');
omx.play('video.avi');
omx.play('http://www.server.com/video.mp4');

### Multiple files

omx.play(['video.mp4', 'anothervideo.mp4', 'foo.mp4'], {loop: true});

**WARNING:** at this time, multiple files playing is not supported by *official* **omxplayer**.
If using with a fork version, you must enable native loop support (see below).

### Options

- **audioOutput** `"local"` or `"hdmi"` as `-o` omxplayer argument. If not specified or `"default"` is system default.
- **loop** `true` to enable `--loop` omxplayer argument. Default is `false`.
- **osd** 'false' to enable '--no-osd' omxplayer argument. Default is 'true.'

**WARNING:** at this time, loop is not supported by *official* **omxplayer**.
If using with a fork version, you must enable native loop support.

#### Example

omx.play('video.mp4', {loop: true}); // enables loop
omx.play('video.mp4', {audioOutput: 'local'}); // analog audio output

### Native loop support

If you have a versione of `omxplayer` supporting native loop with `--loop` flag,
you can enable it by calling:

var omx = require('omxdirector').enableNativeLoop();

### Loop fallback

If using with standard omxplayer, a fallback is provided: once a video is finished,
another process of omxplayer is launched. It support multiple files and infinite loop.
Although this works fine, native support is better because there's no gap between video.

### Status

omx.getStatus()

Return an object with current status:

If process is not running:

{ loaded: false }

If process is running:

{
loaded: true,
videos: , // videos array passed to play(videos, options)
settings: , // default settings or options object passed to play(videos, options)
playing: // true if not paused, false if paused
}

### Video directory

omx.setVideoDir(path);

Set where to look for videos. Useful when all videos are in the same directory.

Instead of this:

omx.play(['/home/pi/videos/foo.mp4', '/home/pi/videos/bar.mp4', '/home/pi/videos/asdasd.mp4']);

It's possible to use this shortcut:

omx.setVideoDir('/home/pi/videos/');
omx.play(['foo.mp4', 'bar.mp4', 'asdasd.mp4']);

### Video suffix

omx.setVideoSuffix(suffix);

Set a suffix for videos. Useful when all videos share the same format.

Instead of this:

omx.play(['foo.mp4', 'bar.mp4', 'asdasd.mp4']);

It's possible to use this shortcut:

omx.setVideoSuffix('.mp4');
omx.play(['foo', 'bar', 'asdasd']);

### Other methods

omx.pause(); // pause the video
omx.play(); // resume video playing
omx.stop(); // stop video playing and terminate omxplayer process
omx.isLoaded(); // return true if omxprocess is running
omx.isPlaying(); // return true if omxprocess is running and video is not paused
omx.volup(); // Increases the volume one notch
omx.voldown(); // Decreases the volume one notch
omx.backwards(); // Seek by -30 seconds
omx.forwards(); // Seek by +30 seconds

### Events

omx.on('load', function(files, options){}); // video successfully loaded (omxprocess starts)
omx.on('play', function(){}); // when successfully started or resumed from pause
omx.on('pause', function(){}); // when successfully paused
omx.on('stop', function(){}); // when successfully stopped (omxplayer process ends)

## TODO

- Emit event when each video start, stop etc...
- Implement forward/backward.
- Enable a fallback for loop and multiple files when native support is disabled.