AlfieriChou / alfierichou.github.io

AlfieriChou的博客
https://alfierichou.com
4 stars 0 forks source link

提取视频中的音频 #25

Open AlfieriChou opened 2 years ago

AlfieriChou commented 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);
  });
}