'use strict'; const ffmpeg = require('fluent-ffmpeg'); const fs = require('fs-extra'); const logger = require('../logger')(__filename); function mux(target, sources) { return new Promise((resolve, reject) => sources.reduce((acc, source) => acc.input(source), ffmpeg()) .videoCodec('copy') .audioCodec('copy') .on('start', () => { logger.verbose(`Muxing ${sources.length} streams to '${target}'`); }) .on('end', (stdout) => { logger.verbose(`Muxed and saved '${target}'`); resolve(stdout); }) .on('error', () => reject) .save(target)) .then(() => Promise.all(sources.map(source => fs.remove(source))).then(() => { logger.verbose(`Cleaned up temporary files for '${target}'`); })); } module.exports = mux;