'use strict'; const ffmpeg = require('fluent-ffmpeg'); const fs = require('fs-extra'); function mux(target, sources, item) { return new Promise((resolve, reject) => { return sources.reduce((acc, source) => { return acc.input(source); }, ffmpeg()).videoCodec('copy').audioCodec('copy').on('start', cmd => { console.log('\x1b[36m%s\x1b[0m', `Muxing ${sources.length} streams to '${target}'`); }).on('end', (stdout) => { console.log('\x1b[32m%s\x1b[0m', `Muxed and saved '${target}'`); resolve(stdout); }).on('error', error => reject).save(target); }).then(() => { return Promise.all(sources.map(source => { return fs.remove(source); })).then(() => { console.log('\x1b[36m%s\x1b[0m', `Cleaned up temporary files for '${target}'`); }); }); }; module.exports = mux;