aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/helpers/ffmpeg-utils.ts
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2018-02-27 13:46:56 +0100
committerChocobozzz <me@florianbigard.com>2018-02-27 13:46:56 +0100
commit6fdc553adb23db216b44e425a85ea76bdf0a2a40 (patch)
tree997cf166c2ef977ce0390a9c7a892040bbe26f64 /server/helpers/ffmpeg-utils.ts
parent266707202c2ffcb8a1b7649ec29106dd444f4a77 (diff)
downloadPeerTube-6fdc553adb23db216b44e425a85ea76bdf0a2a40.tar.gz
PeerTube-6fdc553adb23db216b44e425a85ea76bdf0a2a40.tar.zst
PeerTube-6fdc553adb23db216b44e425a85ea76bdf0a2a40.zip
Don't fail on upload if we cannot generate thumbnail
Diffstat (limited to 'server/helpers/ffmpeg-utils.ts')
-rw-r--r--server/helpers/ffmpeg-utils.ts33
1 files changed, 23 insertions, 10 deletions
diff --git a/server/helpers/ffmpeg-utils.ts b/server/helpers/ffmpeg-utils.ts
index 57911bc73..b0f95797c 100644
--- a/server/helpers/ffmpeg-utils.ts
+++ b/server/helpers/ffmpeg-utils.ts
@@ -1,8 +1,10 @@
1import * as ffmpeg from 'fluent-ffmpeg' 1import * as ffmpeg from 'fluent-ffmpeg'
2import { join } from 'path'
2import { VideoResolution } from '../../shared/models/videos' 3import { VideoResolution } from '../../shared/models/videos'
3import { CONFIG, MAX_VIDEO_TRANSCODING_FPS } from '../initializers' 4import { CONFIG, MAX_VIDEO_TRANSCODING_FPS } from '../initializers'
5import { unlinkPromise } from './core-utils'
4import { processImage } from './image-utils' 6import { processImage } from './image-utils'
5import { join } from 'path' 7import { logger } from './logger'
6 8
7async function getVideoFileHeight (path: string) { 9async function getVideoFileHeight (path: string) {
8 const videoStream = await getVideoFileStream(path) 10 const videoStream = await getVideoFileStream(path)
@@ -45,16 +47,27 @@ async function generateImageFromVideoFile (fromPath: string, folder: string, ima
45 folder 47 folder
46 } 48 }
47 49
48 await new Promise<string>((res, rej) => {
49 ffmpeg(fromPath)
50 .on('error', rej)
51 .on('end', () => res(imageName))
52 .thumbnail(options)
53 })
54
55 const pendingImagePath = join(folder, pendingImageName) 50 const pendingImagePath = join(folder, pendingImageName)
56 const destination = join(folder, imageName) 51
57 await processImage({ path: pendingImagePath }, destination, size) 52 try {
53 await new Promise<string>((res, rej) => {
54 ffmpeg(fromPath)
55 .on('error', rej)
56 .on('end', () => res(imageName))
57 .thumbnail(options)
58 })
59
60 const destination = join(folder, imageName)
61 await processImage({ path: pendingImagePath }, destination, size)
62 } catch (err) {
63 logger.error('Cannot generate image from video %s.', fromPath, err)
64
65 try {
66 await unlinkPromise(pendingImagePath)
67 } catch (err) {
68 logger.debug('Cannot remove pending image path after generation error.', err)
69 }
70 }
58} 71}
59 72
60type TranscodeOptions = { 73type TranscodeOptions = {