diff options
author | Chocobozzz <me@florianbigard.com> | 2023-04-21 14:55:10 +0200 |
---|---|---|
committer | Chocobozzz <chocobozzz@cpy.re> | 2023-05-09 08:57:34 +0200 |
commit | 0c9668f77901e7540e2c7045eb0f2974a4842a69 (patch) | |
tree | 226d3dd1565b0bb56588897af3b8530e6216e96b /server/lib/transcoding/shared/job-builders/abstract-job-builder.ts | |
parent | 6bcb854cdea8688a32240bc5719c7d139806e00b (diff) | |
download | PeerTube-0c9668f77901e7540e2c7045eb0f2974a4842a69.tar.gz PeerTube-0c9668f77901e7540e2c7045eb0f2974a4842a69.tar.zst PeerTube-0c9668f77901e7540e2c7045eb0f2974a4842a69.zip |
Implement remote runner jobs in server
Move ffmpeg functions to @shared
Diffstat (limited to 'server/lib/transcoding/shared/job-builders/abstract-job-builder.ts')
-rw-r--r-- | server/lib/transcoding/shared/job-builders/abstract-job-builder.ts | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/server/lib/transcoding/shared/job-builders/abstract-job-builder.ts b/server/lib/transcoding/shared/job-builders/abstract-job-builder.ts new file mode 100644 index 000000000..f1e9efdcf --- /dev/null +++ b/server/lib/transcoding/shared/job-builders/abstract-job-builder.ts | |||
@@ -0,0 +1,38 @@ | |||
1 | |||
2 | import { JOB_PRIORITY } from '@server/initializers/constants' | ||
3 | import { VideoModel } from '@server/models/video/video' | ||
4 | import { MUserId, MVideoFile, MVideoFullLight } from '@server/types/models' | ||
5 | |||
6 | export abstract class AbstractJobBuilder { | ||
7 | |||
8 | abstract createOptimizeOrMergeAudioJobs (options: { | ||
9 | video: MVideoFullLight | ||
10 | videoFile: MVideoFile | ||
11 | isNewVideo: boolean | ||
12 | user: MUserId | ||
13 | }): Promise<any> | ||
14 | |||
15 | abstract createTranscodingJobs (options: { | ||
16 | transcodingType: 'hls' | 'webtorrent' | ||
17 | video: MVideoFullLight | ||
18 | resolutions: number[] | ||
19 | isNewVideo: boolean | ||
20 | user: MUserId | null | ||
21 | }): Promise<any> | ||
22 | |||
23 | protected async getTranscodingJobPriority (options: { | ||
24 | user: MUserId | ||
25 | fallback: number | ||
26 | }) { | ||
27 | const { user, fallback } = options | ||
28 | |||
29 | if (!user) return fallback | ||
30 | |||
31 | const now = new Date() | ||
32 | const lastWeek = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 7) | ||
33 | |||
34 | const videoUploadedByUser = await VideoModel.countVideosUploadedByUserSince(user.id, lastWeek) | ||
35 | |||
36 | return JOB_PRIORITY.TRANSCODING + videoUploadedByUser | ||
37 | } | ||
38 | } | ||