return new Promise<number>((res, rej) => { ffmpeg.ffprobe(path, (err, metadata) => { if (err) return rej(err) return res(Math.floor(metadata.format.duration)) }) })
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) }) })
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); } }); });