2018-04-26 01:26:39 +00:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
const ffmpeg = require('fluent-ffmpeg');
|
|
|
|
const fs = require('fs-extra');
|
|
|
|
|
2021-12-17 01:04:25 +00:00
|
|
|
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}'`);
|
2018-04-26 01:26:39 +00:00
|
|
|
|
|
|
|
resolve(stdout);
|
2021-12-17 01:04:25 +00:00
|
|
|
})
|
|
|
|
.on('error', () => reject)
|
|
|
|
.save(target))
|
|
|
|
.then(() => Promise.all(sources.map(source => fs.remove(source))).then(() => {
|
|
|
|
logger.verbose(`Cleaned up temporary files for '${target}'`);
|
|
|
|
}));
|
|
|
|
}
|
2018-04-26 01:26:39 +00:00
|
|
|
|
|
|
|
module.exports = mux;
|