Open AlfieriChou opened 2 years ago
const ffmpegInstaller = require('@ffmpeg-installer/ffmpeg'); const ffmpeg = require('fluent-ffmpeg'); const assert = require('assert'); ffmpeg.setFfmpegPath(ffmpegInstaller.path); const extractor = async ({ input, output, start, duration, format = 'flac', logger = console }) => { assert(input, 'run input file is required'); assert(output, 'run output file is required'); return new Promise((resolve, reject) => { const cmd = ffmpeg(input, { options: 'logger' }) .noVideo() .format(format) .on('start', command => { logger.info('command: ', command); }) .on('error', err => { logger.warn('error: ', err); return reject(err); }) .on('end', err => { if (err) { logger.warn('error: ', err); return reject(err); } logger.info('conversion done'); return resolve(); }) if (start) { cmd.seekInput(start); } if (duration) { cmd.duration(duration); } cmd.save(output); }); }