1
0
Fork 0

Simpler thumbnail generation

This commit is contained in:
Chocobozzz 2023-06-02 15:52:55 +02:00
parent 318aa9c422
commit b7f946892b
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
2 changed files with 12 additions and 16 deletions

View File

@ -51,7 +51,7 @@ async function generateImageFromVideoFile (options: {
const pendingImagePath = join(folder, pendingImageName)
try {
await generateThumbnailFromVideo({ fromPath, folder, imageName })
await generateThumbnailFromVideo({ fromPath, output: pendingImagePath })
const destination = join(folder, imageName)
await processImage({ path: pendingImagePath, destination, newSize: size })

View File

@ -1,4 +1,5 @@
import { FFmpegCommandWrapper, FFmpegCommandWrapperOptions } from './ffmpeg-command-wrapper'
import { getVideoStreamDuration } from './ffprobe'
export class FFmpegImage {
private readonly commandWrapper: FFmpegCommandWrapper
@ -36,25 +37,20 @@ export class FFmpegImage {
async generateThumbnailFromVideo (options: {
fromPath: string
folder: string
imageName: string
output: string
}) {
const { fromPath, folder, imageName } = options
const { fromPath, output } = options
const pendingImageName = 'pending-' + imageName
let duration = await getVideoStreamDuration(fromPath)
if (isNaN(duration)) duration = 0
const thumbnailOptions = {
filename: pendingImageName,
count: 1,
folder
}
this.commandWrapper.buildCommand(fromPath)
.seekInput(duration / 2)
.videoFilter('thumbnail=500')
.outputOption('-frames:v 1')
.output(output)
return new Promise<string>((res, rej) => {
this.commandWrapper.buildCommand(fromPath)
.on('error', rej)
.on('end', () => res(imageName))
.thumbnail(thumbnailOptions)
})
return this.commandWrapper.runCommand()
}
async generateStoryboardFromVideo (options: {