Git Product home page Git Product logo

mplayer's Introduction

Description

This module is a wrapper for mplayer started in slave mode (see documentation). It ensures that an instance of mplayer is always running in background ready for playback.

You need mplayer installed on your system for it to work properly!

See the Changelog section for all breaking changes which may cause issues if you've updated the module.

Installation

npm install mplayer

Usage

Start off with instantiating the client

var MPlayer = require('mplayer');

var player = new MPlayer();

You may want to pass in an object with options allowing for better debugging

  • verbose (Boolean): true, false - if set to true all player events will be logged to console
  • debug (Boolean): true, false - log mplayer stdout, stderr streams directly to console, along with everything written to stdin stream

or passing additional options to the spawned mplayer instance

  • args (String|Array): - list of additional parameters which will be passed to the command line mplayer instance (see mplayer manual for more details)

After this you will have access to all player methods and events. The player instance uses node's native EventEmitter for events management.

Methods

  • setOptions(< Object > options) - loops through the options object and uses mplayer set_property function to set them for the currently running instance

options is an object with one or more key value pairs, determining which parameters should be set, see the last section of slave mode documentation for the list of possible parameters and values

Example:

player.setOptions({
    cache: 128,
    cacheMin: 1
});
  • openFile(< String > file, [ Object ] options)

file is the location of the file you want to open either in your filesystem or on the web

options is an object passed to the setOptions method right before opening the file

Example:

player.openFile('/Users/noodny/Downloads/sample-video.avi');
  • openPlaylist(< String > file, [ Object ] options)

file is the location of the playlist file you want to open either in your filesystem or on the web

options is an object passed to the setOptions method right before opening the file

Example:

player.openPlaylist('http://www.radio.com/radio-stream.pls', {
    cache: 128,
    cacheMin: 1
});
  • play( )
  • pause( )
  • stop( )
  • next( )
  • previous( )
  • seek(< Number > seconds) - seek to a specific second
  • seekPercent(< Number > percent ) - seek to a percent position of a file
  • volume(< Number > percent ) - set volume to a given percentage
  • mute( ) - toggle mute
  • fullscreen( ) - toggle fullscreen
  • hideSubtitles( )
  • showSubtitles( )
  • cycleSubtitles( ) - change to the next subtitles file in the file directory
  • speedUpSubtitles( )
  • slowDownSubtitles( )
  • adjustSubtitles(< Number > seconds) - adjust the subtitles timing by +/- seconds
  • adjustAudio(< Number > seconds) - adjust the audio timing by +/- seconds

Events

  • ready - triggered only once when mplayer process is started
  • time < Number > seconds - triggered every ~30ms
  • start - triggered once an asset playback has started
  • play - triggered when playback is resumed
  • pause - triggered when playback is paused
  • stop - < Number > EOF code - triggered when an asset has finished playing
  • status < Object > status - triggered whenever player status changes The status object has the following properties:
{
    muted: Boolean,
    playing: Boolean,
    volume: Number, // percent
    duration: Number, // seconds
    fullscreen: Boolean,
    subtitles: Boolean,
    filename: String,
    title: String // currently playing stream title - valid only for radio streams
}

Example

The following example will set up a player instance, open a radio stream and set it's volume to 50% after 1 second, while logging the player status event output to the console:

var MPlayer = require('mplayer');

var player = new MPlayer();

player.on('start', console.log.bind(this, 'playback started'));
player.on('status', console.log);

player.openPlaylist('http://www.miastomuzyki.pl/n/rmfclassic.pls', {
    cache: 128,
    cacheMin: 1
});

setTimeout(player.volume.bind(player, 50), 1000);

Changelog

2.1.0

2.0.1

2.0.0

  • Change the open method to openFile and openPlaylist
  • Add verbose and debug constructor options

1.0.0

  • Emit play/pause events

0.0.3, 0.0.4

  • Remove stdout console logs

0.0.2

  • Proxy events to the object exported from module

TODO

  • Methods chaining
  • Throttle time event down to once per second
  • Defer methods resolving after actual player action

mplayer's People

Contributors

noodny avatar qbdumont avatar fgather avatar elgerlambert avatar efernandesng avatar codeheroics avatar j-holub avatar

Watchers

 avatar James Cloos avatar  avatar

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.