UNPKG

raspi-io-server-utils

Version:

Utilities for interacting with Raspberry IOs and Raspbian

62 lines 4.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const abstract_player_1 = require("./abstract-player"); const childProcess = require('child_process'); class MPlayer extends abstract_player_1.AbstractPlayer { static checkAvailability() { return new Promise((resolve, reject) => { childProcess.exec('which mplayer', (err) => { if (err) reject(); else resolve(); }); }); } constructor(file) { super(file); } get running() { return !!this._process; } get playerName() { return 'mplayer'; } get _mplayerVolume() { return this._volume; } _start() { // mplayer produces a lot of stdout data. When this data is not ignored in the spawn options // but also not read out in process.stdout.on(), it accumulates and probably fills an internal buffer, // causing playback to stop. const opts = { stdio: ['pipe', 'ignore', 'pipe'], }; const args = ['-nogui', '-display', ':0', '-fs', '-volume', this._mplayerVolume.toString(10), this.file]; this._process = childProcess.spawn('mplayer', args, opts); this._process.stderr.on('data', (data) => { console.error(data.toString()); }); this._process.on('exit', () => { console.log('mplayer exited.'); this._stopped(); }); this._process.on('error', (err) => { console.error('mplayer error:', err); this._stopped(); }); this._started(); } _stop() { if (this._process) { this._process.kill('SIGINT'); } } _stopped() { this._process.removeAllListeners(); this._process = undefined; super._stopped(); } } exports.MPlayer = MPlayer; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibS1wbGF5ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZwbGF5ZXIvbS1wbGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx1REFBbUQ7QUFFbkQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFFLGVBQWUsQ0FBRSxDQUFDO0FBRWhELE1BQWEsT0FBUSxTQUFRLGdDQUFjO0lBRXZDLE1BQU0sQ0FBQyxpQkFBaUI7UUFDcEIsT0FBTyxJQUFJLE9BQU8sQ0FBRSxDQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUcsRUFBRTtZQUN0QyxZQUFZLENBQUMsSUFBSSxDQUFFLGVBQWUsRUFBRSxDQUFFLEdBQVcsRUFBRyxFQUFFO2dCQUNsRCxJQUFLLEdBQUc7b0JBQUcsTUFBTSxFQUFFLENBQUM7O29CQUNmLE9BQU8sRUFBRSxDQUFDO1lBQ25CLENBQUMsQ0FBRSxDQUFDO1FBQ1IsQ0FBQyxDQUFFLENBQUM7SUFDUixDQUFDO0lBSUQsWUFBYSxJQUFhO1FBQ3RCLEtBQUssQ0FBRSxJQUFJLENBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1YsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksY0FBYztRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsTUFBTTtRQUVGLDRGQUE0RjtRQUM1RixzR0FBc0c7UUFDdEcsNEJBQTRCO1FBQzVCLE1BQU0sSUFBSSxHQUFHO1lBQ1QsS0FBSyxFQUFFLENBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUU7U0FDdEMsQ0FBQztRQUNGLE1BQU0sSUFBSSxHQUFjLENBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBRSxFQUFFLENBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFFLENBQUM7UUFDeEgsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFFLENBQUM7UUFFNUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFFLE1BQU0sRUFBRSxDQUFFLElBQWEsRUFBRyxFQUFFO1lBQ2pELE9BQU8sQ0FBQyxLQUFLLENBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFFLENBQUM7UUFDckMsQ0FBQyxDQUFFLENBQUM7UUFFSixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBRSxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUUsaUJBQWlCLENBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFFLENBQUM7UUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBRSxPQUFPLEVBQUUsQ0FBRSxHQUFXLEVBQUcsRUFBRTtZQUN6QyxPQUFPLENBQUMsS0FBSyxDQUFFLGdCQUFnQixFQUFFLEdBQUcsQ0FBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUUsQ0FBQztRQUVKLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsS0FBSztRQUNELElBQUssSUFBSSxDQUFDLFFBQVEsRUFBRztZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBRSxRQUFRLENBQUUsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBRTFCLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQixDQUFDO0NBRUo7QUFyRUQsMEJBcUVDIn0=