aboutsummaryrefslogtreecommitdiffhomepage
path: root/server
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
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')
-rw-r--r--server/helpers/ffmpeg-utils.ts33
-rw-r--r--server/lib/schedulers/bad-actor-follow-scheduler.ts3
-rw-r--r--server/lib/schedulers/remove-old-jobs-scheduler.ts3
3 files changed, 27 insertions, 12 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 = {
diff --git a/server/lib/schedulers/bad-actor-follow-scheduler.ts b/server/lib/schedulers/bad-actor-follow-scheduler.ts
index 397eb470e..9b9f9e17d 100644
--- a/server/lib/schedulers/bad-actor-follow-scheduler.ts
+++ b/server/lib/schedulers/bad-actor-follow-scheduler.ts
@@ -1,3 +1,4 @@
1import { isTestInstance } from '../../helpers/core-utils'
1import { logger } from '../../helpers/logger' 2import { logger } from '../../helpers/logger'
2import { ActorFollowModel } from '../../models/activitypub/actor-follow' 3import { ActorFollowModel } from '../../models/activitypub/actor-follow'
3import { AbstractScheduler } from './abstract-scheduler' 4import { AbstractScheduler } from './abstract-scheduler'
@@ -11,7 +12,7 @@ export class BadActorFollowScheduler extends AbstractScheduler {
11 } 12 }
12 13
13 async execute () { 14 async execute () {
14 logger.info('Removing bad actor follows (scheduler).') 15 if (!isTestInstance()) logger.info('Removing bad actor follows (scheduler).')
15 16
16 try { 17 try {
17 await ActorFollowModel.removeBadActorFollows() 18 await ActorFollowModel.removeBadActorFollows()
diff --git a/server/lib/schedulers/remove-old-jobs-scheduler.ts b/server/lib/schedulers/remove-old-jobs-scheduler.ts
index 51fcf711e..0e8ad1554 100644
--- a/server/lib/schedulers/remove-old-jobs-scheduler.ts
+++ b/server/lib/schedulers/remove-old-jobs-scheduler.ts
@@ -1,3 +1,4 @@
1import { isTestInstance } from '../../helpers/core-utils'
1import { logger } from '../../helpers/logger' 2import { logger } from '../../helpers/logger'
2import { JobQueue } from '../job-queue' 3import { JobQueue } from '../job-queue'
3import { AbstractScheduler } from './abstract-scheduler' 4import { AbstractScheduler } from './abstract-scheduler'
@@ -11,7 +12,7 @@ export class RemoveOldJobsScheduler extends AbstractScheduler {
11 } 12 }
12 13
13 async execute () { 14 async execute () {
14 logger.info('Removing old jobs (scheduler).') 15 if (!isTestInstance()) logger.info('Removing old jobs (scheduler).')
15 16
16 JobQueue.Instance.removeOldJobs() 17 JobQueue.Instance.removeOldJobs()
17 } 18 }