constructor(conf = {}) {
    this.conf = conf;

    this.conf.pathId = Utils.genUuid();
    this.copyByDefaultVal(conf, 'crf', 20);
    this.copyByDefaultVal(conf, 'vb', null);
    this.copyByDefaultVal(conf, 'cover', null);
    this.copyByDefaultVal(conf, 'pool', false);
    this.copyByDefaultVal(conf, 'debug', false);
    this.copyByDefaultVal(conf, 'preload', true);
    this.copyByDefaultVal(conf, 'antialias', false);
    this.copyByDefaultVal(conf, 'audioLoop', true);
    this.copyByDefaultVal(conf, 'ffmpeglog', false);
    this.copyByDefaultVal(conf, 'transparent', false);
    this.copyByDefaultVal(conf, 'ext', 'mp4');
    this.copyByDefaultVal(conf, 'preset', 'medium');
    this.copyByDefaultVal(conf, 'cacheFormat', 'raw');
    this.copyByDefaultVal(conf, 'cacheQuality', 80);
    this.copyByDefaultVal(conf, 'resolution', 1);
    this.copyByDefaultVal(conf, 'defaultOutputOptions', {
      merge: true,
      options: [],
    });

    this.copyFromMultipleVal(conf, 'fps', 'rfps', 30);
    this.copyFromMultipleVal(conf, 'width', 'w', 800);
    this.copyFromMultipleVal(conf, 'height', 'h', 450);
    this.copyFromMultipleVal(conf, 'parallel', 'frames', 3);
    this.copyFromMultipleVal(conf, 'render', 'renderer', 'canvas');
    this.copyFromMultipleVal(conf, 'outputDir', 'dir', path.join('./'));
    this.copyFromMultipleVal(conf, 'cacheDir', 'cacheDir', mtempy.directory());
    this.copyFromMultipleVal(conf, 'output', 'out', path.join('./', `${this.conf.pathId}.mp4`));
    this.copyFromMultipleVal(conf, 'highWaterMark', 'size', '512kb');
    this.copyFromMultipleVal(conf, 'normalizeAudio', 'norAudio', false);
    this.copyFromMultipleVal(conf, 'clarity', 'renderClarity', 'medium');
  }
Conf - A encapsulated configuration class is used to better manage configuration related

####Example:

    const conf = new Conf(conf);
    const val = conf.getVal(key);
    conf.setVal(key, val);

@object