27 lines
905 B
JavaScript
27 lines
905 B
JavaScript
'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;
|