diff options
Diffstat (limited to 'server/helpers/ffmpeg-utils.ts')
-rw-r--r-- | server/helpers/ffmpeg-utils.ts | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/server/helpers/ffmpeg-utils.ts b/server/helpers/ffmpeg-utils.ts index c8d6969ff..66b9d2e44 100644 --- a/server/helpers/ffmpeg-utils.ts +++ b/server/helpers/ffmpeg-utils.ts | |||
@@ -355,6 +355,40 @@ function convertWebPToJPG (path: string, destination: string): Promise<void> { | |||
355 | }) | 355 | }) |
356 | } | 356 | } |
357 | 357 | ||
358 | function processGIF ( | ||
359 | path: string, | ||
360 | destination: string, | ||
361 | newSize: { width: number, height: number }, | ||
362 | keepOriginal = false | ||
363 | ): Promise<void> { | ||
364 | return new Promise<void>(async (res, rej) => { | ||
365 | if (path === destination) { | ||
366 | throw new Error('FFmpeg needs an input path different that the output path.') | ||
367 | } | ||
368 | |||
369 | logger.debug('Processing gif %s to %s.', path, destination) | ||
370 | |||
371 | try { | ||
372 | const command = ffmpeg(path) | ||
373 | .fps(20) | ||
374 | .size(`${newSize.width}x${newSize.height}`) | ||
375 | .output(destination) | ||
376 | |||
377 | command.on('error', (err, stdout, stderr) => { | ||
378 | logger.error('Error in ffmpeg gif resizing process.', { stdout, stderr }) | ||
379 | return rej(err) | ||
380 | }) | ||
381 | .on('end', async () => { | ||
382 | if (keepOriginal !== true) await remove(path) | ||
383 | res() | ||
384 | }) | ||
385 | .run() | ||
386 | } catch (err) { | ||
387 | return rej(err) | ||
388 | } | ||
389 | }) | ||
390 | } | ||
391 | |||
358 | function runLiveTranscoding (rtmpUrl: string, outPath: string, resolutions: number[], fps, deleteSegments: boolean) { | 392 | function runLiveTranscoding (rtmpUrl: string, outPath: string, resolutions: number[], fps, deleteSegments: boolean) { |
359 | const command = getFFmpeg(rtmpUrl) | 393 | const command = getFFmpeg(rtmpUrl) |
360 | command.inputOption('-fflags nobuffer') | 394 | command.inputOption('-fflags nobuffer') |
@@ -474,6 +508,7 @@ export { | |||
474 | getAudioStreamCodec, | 508 | getAudioStreamCodec, |
475 | runLiveMuxing, | 509 | runLiveMuxing, |
476 | convertWebPToJPG, | 510 | convertWebPToJPG, |
511 | processGIF, | ||
477 | getVideoStreamSize, | 512 | getVideoStreamSize, |
478 | getVideoFileResolution, | 513 | getVideoFileResolution, |
479 | getMetadataFromFile, | 514 | getMetadataFromFile, |