Example #1
0
  return new Promise<number>((res, rej) => {
    ffmpeg.ffprobe(path, (err, metadata) => {
      if (err) return rej(err)

      return res(Math.floor(metadata.format.duration))
    })
  })
Example #2
0
  return new Promise<any>((res, rej) => {
    ffmpeg.ffprobe(path, (err, metadata) => {
      if (err) return rej(err)

      const videoStream = metadata.streams.find(s => s.codec_type === 'video')
      if (!videoStream) throw new Error('Cannot find video stream of ' + path)

      return res(videoStream)
    })
  })
Example #3
0
  return new Promise((resolve, reject) => {
    let coverFileEmbedded: string;

    command.on('start', cmdline => log.debug('ffmpeg command: %s', cmdline));
    command.on('error', err => reject(err));

    command.on('end', () => {
      const coverFile =
        coverFileEmbedded && fs.existsSync(coverFileEmbedded)
          ? coverFileEmbedded
          : findCoverFile(dirname);

      if (coverFile) {
        embedCoverFile(outputAudio, coverFile, binPaths)
          .then(() => {
            resolve({ audio: outputAudio, hadCoverFile: true });
          })
          .catch(err => reject(err));
      } else {
        resolve({
          audio: outputAudio,
          cover: coverFileEmbedded,
          hadCoverFileEmbedded: true
        });
      }
    });

    ffmpeg.ffprobe(source, (err, metadata) => {
      try {
        const hasVideoStream = checkVideoStream(err, metadata);

        if (hasVideoStream) {
          coverFileEmbedded = outputCover;
          command.addOutput(outputCover);
        }

        log.debug('Starting conversion of %s', source);

        command.run();
      } catch (err) {
        reject(err);
      }
    });
  });