lib/fluent-ffmpeg.js
function FfmpegCommand(input, options) {
  // Make 'new' optional
  if (!(this instanceof FfmpegCommand)) {
    return new FfmpegCommand(input, options);
  }

  EventEmitter.call(this);

  if (typeof input === 'object' && !('readable' in input)) {
    // Options object passed directly
    options = input;
  } else {
    // Input passed first
    options = options || {};
    options.source = input;
  }

  // Add input if present
  this._inputs = [];
  if (options.source) {
    this.input(options.source);
  }

  // Add target-less output for backwards compatibility
  this._outputs = [];
  this.output();

  // Create argument lists
  var self = this;
  ['_global', '_complexFilters'].forEach(function(prop) {
    self[prop] = utils.args();
  });

  // Set default option values
  options.stdoutLines = 'stdoutLines' in options ? options.stdoutLines : 100;
  options.presets = options.presets || options.preset || path.join(__dirname, 'presets');
  options.niceness = options.niceness || options.priority || 0;

  // Save options
  this.options = options;

  // Setup logger
  this.logger = options.logger || {
    debug: function() {},
    info: function() {},
    warn: function() {},
    error: function() {}
  };
}
function FfmpegCommand(input, options) {
  // Make 'new' optional
  if (!(this instanceof FfmpegCommand)) {
    return new FfmpegCommand(input, options);
  }

  EventEmitter.call(this);

  if (typeof input === 'object' && !('readable' in input)) {
    // Options object passed directly
    options = input;
  } else {
    // Input passed first
    options = options || {};
    options.source = input;
  }

  // Add input if present
  this._inputs = [];
  if (options.source) {
    this.input(options.source);
  }

  // Add target-less output for backwards compatibility
  this._outputs = [];
  this.output();

  // Create argument lists
  var self = this;
  ['_global', '_complexFilters'].forEach(function(prop) {
    self[prop] = utils.args();
  });

  // Set default option values
  options.stdoutLines = 'stdoutLines' in options ? options.stdoutLines : 100;
  options.presets = options.presets || options.preset || path.join(__dirname, 'presets');
  options.niceness = options.niceness || options.priority || 0;

  // Save options
  this.options = options;

  // Setup logger
  this.logger = options.logger || {
    debug: function() {},
    info: function() {},
    warn: function() {},
    error: function() {}
  };
}
function FfmpegCommand ( input , options ) { // Make 'new' optional if ( ! ( this instanceof FfmpegCommand ) ) { return new FfmpegCommand ( input , options ) ; } EventEmitter . call ( this ) ; if ( typeof input === 'object' && ! ( 'readable' in input ) ) { // Options object passed directly options = input ; } else { // Input passed first options = options || { } ; options . source = input ; } // Add input if present this . _inputs = [ ] ; if ( options . source ) { this . input ( options . source ) ; } // Add target-less output for backwards compatibility this . _outputs = [ ] ; this . output ( ) ; // Create argument lists var self = this ; [ '_global' , '_complexFilters' ] . forEach ( function ( prop ) { self [ prop ] = utils . args ( ) ; } ) ; // Set default option values options . stdoutLines = 'stdoutLines' in options ? options . stdoutLines : 100 ; options . presets = options . presets || options . preset || path . join ( __dirname , 'presets' ) ; options . niceness = options . niceness || options . priority || 0 ; // Save options this . options = options ; // Setup logger this . logger = options . logger || { debug : function ( ) { } , info : function ( ) { } , warn : function ( ) { } , error : function ( ) { } } ; }
Create an ffmpeg command

Can be called with or without the 'new' operator, and the 'input' parameter
may be specified as 'options.source' instead (or passed later with the
addInput method).

@constructor
@param {String|ReadableStream} [input] input file path or readable stream
@param {Object} [options] command options
@param {Object} [options.logger=<no logging>] logger object with 'error', 'warning', 'info' and 'debug' methods
@param {Number} [options.niceness=0] ffmpeg process niceness, ignored on Windows
@param {Number} [options.priority=0] alias for `niceness`
@param {String} [options.presets="fluent-ffmpeg/lib/presets"] directory to load presets from
@param {String} [options.preset="fluent-ffmpeg/lib/presets"] alias for `presets`
@param {String} [options.stdoutLines=100] maximum lines of ffmpeg output to keep in memory, use 0 for unlimited
@param {Number} [options.timeout=<no timeout>] ffmpeg processing timeout in seconds
@param {String|ReadableStream} [options.source=<no input>] alias for the `input` parameter
Create an ffmpeg command