/* Done */ router.get('/effect-fadeout', function (req, res) { ffmpeg('videos/input.mp4') .audioCodec('libmp3lame') // Audio Codec .videoCodec('libx264') .videoFilters('fade=out:70:10') .output('videos/fadeout.mp4') .on('end', function (err) { if (!err) res.send("Successfull"); }) .on('error', function (err) { console.log('error: ' + err); }).run(); });
play(unknown) { this.dispatchStream = new DispatchStream(this.connection) this.dispatchStream.once('finish', () => { this.emit('end') }) this.command = ffmpeg(unknown) .output(this.dispatchStream) .audioFrequency(48000) .audioChannels(1) .format('s16le') .on('error', (e) => { this.emit('error', e) }) this.command.run() }
ipcMain.on("conversion:start", (event, videos) => { _.each(videos, video => { const outputDirectory = video.path.split(video.name)[0]; const outputName = video.name.split(".")[0]; const outputPath = `${outputDirectory}${outputName}.${video.format}`; ffmpeg(video.path) .output(outputPath) .on("progress", ({ timemark }) => mainWindow.webContents.send("conversion:progress", { video, timemark }) ) .on("end", () => mainWindow.webContents.send("conversion:end", { video, outputPath }) ) .run(); }); });
function extractAudio(fileinfo) { let tempAudioPath = '/tmp/' + fileinfo.source.name + '.flac'; fileinfo.destination.temp.audio = tempAudioPath; return new Promise((resolve, reject) => { ffmpeg(fileinfo.destination.temp.video) .videoBitrate(19200) .inputOptions('-vn') .format('flac') .audioChannels(1) .output(tempAudioPath) .on('end', function () { console.log('extracted audio'); resolve(fileinfo); }) .on('error', function (err, stdout, stderr) { reject(err); }) .run(); }); }
ffmpeg(path) .addInputOption('-ss',duration) .addOption('-c', 'copy') .output(des + '/'+ moviename) .on('error', function (err, stdout, stderr) { console.log('Cannot cut video: ' + path + err.message); }) .on('end', function () { Movie.findOne({_id:movie._id}) .exec(function(err, movie) { if(err) { console.log(err); } movie.originalname = moviename; movie.path = des + '/'+ moviename; movie.save(function(err) { if(err) { console.log(err); } fs.unlinkSync(path);; }) }) }) .run()
/* Done */ router.get('/effect-fadein', function (req, res) { ffmpeg('videos/input.mp4') .audioCodec('libmp3lame') // Audio Codec .videoCodec('libx264') .videoFilters('fade=in:0:200') .output('videos/fadein.mp4') .on('end', function (err) { if (!err) res.send("Successfull"); }) .on('progress', function (data) { console.log(data.percent); }) .on('error', function (err) { console.log('error: ' + err); }).run(); });
/* worked */ router.get('/remove-video', function (req, res) { var url = 'videos/output.mp3'; fs.exists(url, function (exists) { if (exists) { fs.unlink(url, function (err, data) { if (!err) { console.log("Existing File Deleted . . . "); } }); } }); ffmpeg('videos/input.mp4') // Input Video File .output('videos/output.mp3') // Output File .on('end', function (err) { if (!err) { console.log("Remove video is done"); res.send('Remove Video is Done'); } }) .on('error', function (err) { console.log('error: ' + err); }).run(); });
function ffmpegtrans(path, des, size, bv, bufsize, maxrate, vf, id, cb){ ffmpeg(path) .addOptions([ '-s '+size, '-b:v '+bv, '-vcodec libx264', '-acodec aac', '-ac 2', '-b:a 128k', '-bufsize '+bufsize, '-maxrate '+maxrate, '-q:v 6', '-strict -2' ]) .addOption('-vf', vf) .output(des + '/index.mp4') .on('start',cb) .on('error', function(err, stdout, stderr) { console.log('Cannot process video: ' + path + err.message); }) .on('end', function(){ chunk(des + "/index.mp4", des, id); }) .run() }
let addLoopedImage = (input, output, image, duration) => { return new Promise((resolve, reject) => { ffmpeg(input) .input(image) .inputOptions(['-r 1', '-loop 1']) .audioCodec('copy') .outputOptions(['-shortest']) .output(output) .on('end', () => { console.log('') // fix stdout resolve() }) .on('error', (err) => { console.log('') // fix stdout reject(err) }) .on('start', (cmd) => { logger.log('debug', cmd) }) .on('progress', (msg) => { process.stdout.write(`Adding looped cover image to Audiobook ... ${currentTimemarkToPercent(msg.timemark, duration)}%` + '\r') }) .run() }) }
ffmpeg(infile) .input(overlay) .outputOptions(['-map 0:a']) .applyAutoPadding(true) .complexFilter( [ 'scale=-2:720[rescaled]', { filter: 'crop', options: 'ih:ih:iw/4:0', inputs: 'rescaled', outputs: 'crop' }, { filter: 'overlay', options: { x: '(main_w-overlay_w)/2', y: '(main_h-overlay_h)/2', }, inputs: 'crop', outputs: 'output', }, ], 'output' ) .output(output) .on('error', error => console.log('Error: ' + error.message)) .on('end', () => console.log('Success!')) .run();
let convertAudiobook = (input, output, activationBytes, duration) => { return new Promise((resolve, reject) => { ffmpeg(input) .audioCodec('copy') .noVideo() .inputOptions([`-activation_bytes ${activationBytes}`]) .output(output) .on('end', () => { console.log('') // fix stdout resolve() }) .on('error', (err) => { console.log('') // fix stdout reject(err) }) .on('start', (cmd) => { logger.log('debug', cmd) }) .on('progress', (msg) => { process.stdout.write(`Converting Audiobook (using ${activationBytes} for decryption) ... ${currentTimemarkToPercent(msg.timemark, duration)}%` + '\r') }) .run() }) }
.output('videos/output.mp4') // Output File .noAudio().videoCodec('copy') .on('end', function (err) {
let extractCoverImage = (input, output) => { return new Promise((resolve, reject) => { ffmpeg(input) .output(output) .on('end', () => { console.log('100%') resolve() }) .on('error', (err) => { console.log('') // fix stdout reject(err) }) .on('start', (cmd) => { process.stdout.write('Extracting Cover Image ... ') logger.log('debug', cmd) }) .on('progress', (msg) => { logger.log('silly', msg) }) .run() }) }
/* Done */ router.get('/effect-sharpen', function (req, res) { ffmpeg('videos/input.mp4') .audioCodec('libmp3lame') // Audio Codec .videoCodec('libx264') .videoFilters('unsharp=7:7:-2:7:7:-2') .output('videos/sharpen.mp4') .on('end', function (err) { if (!err) res.send("Successfull"); }) .on('progress', function (data) { console.log(Math.floor(data.percent) + " %"); }) .on('error', function (err) { console.log('error: ' + err); //callback(err); }).run(); });
/* Done */ router.get('/effect-blur', function (req, res) { ffmpeg('./videos/input.mp4') .audioCodec('libmp3lame') // Audio Codec .videoCodec('libx264') .videoFilters('unsharp=7:7:-2:7:7:-2') .output('videos/blur.mp4') .on('end', function (err) { if (!err) res.send("Successfull"); }) .on('progress', function (data) { console.log(Math.floor(data.percent) + " %"); }) .on('error', function (err) { console.log('error: ' + err); }).run(); });