raspi-io-server-utils
Version:
Utilities for interacting with Raspberry IOs and Raspbian
62 lines • 4.39 kB
JavaScript
;
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=