UNPKG

omxplayer-controller-node

Version:

Raspberry Pi omxplayer controll using dbus-native

79 lines (73 loc) 2.71 kB
var spawn = require("child_process").spawn, execSync = require("child_process").execSync; var omxp_running = function () { var stdout = execSync('ps xa | grep "[o]mxplayer.bin" | wc -l'); var processCount = parseInt(stdout); return processCount; }; var prevent_kill_signal = false; var player = function (path, options) { var count = omxp_running(); options.maxPlayerAllowCount = options.maxPlayerAllowCount || 1; options.closeOtherPlayers = typeof options.closeOtherPlayers === "undefined" ? true : options.closeOtherPlayers; if (count >= options.maxPlayerAllowCount) { if (options.closeOtherPlayers) { prevent_kill_signal = true; execSync("killall -9 omxplayer.bin"); //Kill all previous omxplayers } else { return; } } var settings = options || {}; var command = "/usr/bin/omxplayer.bin"; path = typeof path === "string" ? [path] : path; var args = path; if ( ["hdmi", "local", "both"].indexOf(settings.audioOutput) != -1 || settings.audioOutput.startsWith("alsa") ) args.push("-o", settings.audioOutput); if (settings.blackBackground !== false) args.push("-b"); if (settings.disableKeys === true) args.push("--no-keys"); if (settings.live === true) args.push("--live"); if (settings.disableOnScreenDisplay === true) args.push("--no-osd"); if (settings.disableGhostbox === true) args.push("--no-ghost-box"); if (settings.subtitlePath && settings.subtitlePath !== "") args.push("--subtitles", '"' + settings.subtitlePath + '"'); if (settings.startAt) args.push("--pos", "" + settings.startAt + ""); if (settings.alpha) args.push("--alpha", "" + settings.alpha + ""); if (settings.win) args.push("--win", "" + settings.win + ""); if (settings.orientation) args.push("--orientation", +settings.orientation); if (typeof settings.startVolume !== "undefined") { if (settings.startVolume >= 0.0 && settings.startVolume <= 1.0) { args.push("--vol"); var db = settings.startVolume > 0 ? Math.round( 100 * 20 * (Math.log(settings.startVolume) / Math.log(10)) ) / 1 : -12000000; args.push(db); } } if ( typeof settings.otherArgs !== "undefined" && settings.otherArgs.constructor === Array ) { args = args.concat(settings.otherArgs); } if (settings.nativeLoop === true) { args.push("--loop"); } args.push("--dbus_name"); args.push("org.mpris.MediaPlayer20.omxplayer"); // args.push("< omxpipe"); const player = spawn(command, args); player.prevent_kill_signal = prevent_kill_signal; return player; }; module.exports.omxp_running = omxp_running; module.exports.player = player;