API route to generate waveform images

This commit is contained in:
advplyr 2023-04-29 14:57:51 -05:00
parent 4db26f9f79
commit 74652e2e54
4 changed files with 66 additions and 1 deletions

View file

@ -152,3 +152,26 @@ module.exports.downloadPodcastEpisode = (podcastEpisodeDownload) => {
ffmpeg.run()
})
}
module.exports.generateWaveform = (filepaths, start, end, res) => {
let ffmpeg = null
if (filepaths.length === 1) ffmpeg = Ffmpeg(filepaths[0])
else {
ffmpeg = Ffmpeg(`concat:${filepaths.join('|')}`)
}
ffmpeg.inputOptions('-ss', start)
ffmpeg.inputOptions('-to', end)
ffmpeg.complexFilter('aformat=channel_layouts=mono,showwavespic=s=1280x240')
ffmpeg.frames(1)
ffmpeg.format('image2pipe')
ffmpeg.on('start', (cmd) => {
Logger.debug(`[FfmpegHelpers] generateWaveform: Cmd: ${cmd}`)
})
ffmpeg.on('error', (error) => {
Logger.error(`[FfmpegHelpers] generateWaveform: Error`, error)
}).on('end', () => {
Logger.debug(`[FfmpegHelpers] generateWaveform finished`)
}).pipe(res, {
end: true
})
}