Extra fluent-ffmpeg features
npm install fluent-ffmpeg-utilhandleInputStream() or
handleOutputStream(), they return an object with the following shape:
ts
var ffmpeg = require('fluent-ffmpeg');
var util = require('fluent-ffmpeg-util');
var fs = require('fs');
var input = util.handleInputStream(fs.createReadStream('input.webm'));
var output = util.handleOutputStream(fs.createReadStream('output.mkv'));
ffmpeg()
.input(input.path)
.output(output.path)
.toFormat('matroska')
.on('error', function () {
input.close();
output.close();
})
.run();
`
$3
To write the output file to multiple destinations use tee(), you can also pass streams directly to
it and they'll be handled using handleOutputStream().
`ts
var ffmpeg = require('fluent-ffmpeg');
var util = require('fluent-ffmpeg-util');
var fs = require('fs');
ffmpeg()
.input('input.webm')
.output(util.tee('output.mkv', fs.createReadStream('output1.mkv')))
.toFormat('matroska')
.run();
`
$3
To pause/resume a fluent-ffmpeg command use pause() or resume(), this is a cross-platform
alternative to using command.kill('SIGSTOP') and command.kill('SIGCONT').
`ts
var ffmpeg = require('fluent-ffmpeg');
var util = require('fluent-ffmpeg-util');
var fs = require('fs');
var command = ffmpeg()
.input('input.webm')
.output(util.tee('output.mkv', fs.createReadStream('output1.mkv')))
.toFormat('matroska')
.on('start', function () {
if (util.pause(command))
console.log('ffmpeg paused');
if (util.resume(command))
console.log('ffmpeg resumed');
});
command.run();
`
$3
To gracefully interrupt a command in fluent-ffmpeg use abort(), it allows ffmpeg to end the files
correctly but it doesn't guarantee a non-zero exit code. FFmpeg may still encounter an error while
ending the files, so errors should still be handled.
`ts
var ffmpeg = require('fluent-ffmpeg');
var util = require('fluent-ffmpeg-util');
var fs = require('fs');
var command = ffmpeg()
.input('input.webm')
.output(util.tee('output.mkv', fs.createReadStream('output1.mkv')))
.toFormat('matroska')
.on('start', function () {
util.abort(command);
});
command.run();
``