aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/helpers/ffmpeg-utils.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/helpers/ffmpeg-utils.ts')
-rw-r--r--server/helpers/ffmpeg-utils.ts35
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
358function 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
358function runLiveTranscoding (rtmpUrl: string, outPath: string, resolutions: number[], fps, deleteSegments: boolean) { 392function 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,