diff options
Diffstat (limited to 'packages/peertube-runner/server/process/shared/common.ts')
-rw-r--r-- | packages/peertube-runner/server/process/shared/common.ts | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/packages/peertube-runner/server/process/shared/common.ts b/packages/peertube-runner/server/process/shared/common.ts deleted file mode 100644 index a9b37bbc4..000000000 --- a/packages/peertube-runner/server/process/shared/common.ts +++ /dev/null | |||
@@ -1,106 +0,0 @@ | |||
1 | import { remove } from 'fs-extra' | ||
2 | import { ConfigManager, downloadFile, logger } from 'packages/peertube-runner/shared' | ||
3 | import { join } from 'path' | ||
4 | import { buildUUID } from '@shared/extra-utils' | ||
5 | import { FFmpegEdition, FFmpegLive, FFmpegVOD, getDefaultAvailableEncoders, getDefaultEncodersToTry } from '@shared/ffmpeg' | ||
6 | import { RunnerJob, RunnerJobPayload } from '@shared/models' | ||
7 | import { PeerTubeServer } from '@shared/server-commands' | ||
8 | import { getTranscodingLogger } from './transcoding-logger' | ||
9 | |||
10 | export type JobWithToken <T extends RunnerJobPayload = RunnerJobPayload> = RunnerJob<T> & { jobToken: string } | ||
11 | |||
12 | export type ProcessOptions <T extends RunnerJobPayload = RunnerJobPayload> = { | ||
13 | server: PeerTubeServer | ||
14 | job: JobWithToken<T> | ||
15 | runnerToken: string | ||
16 | } | ||
17 | |||
18 | export async function downloadInputFile (options: { | ||
19 | url: string | ||
20 | job: JobWithToken | ||
21 | runnerToken: string | ||
22 | }) { | ||
23 | const { url, job, runnerToken } = options | ||
24 | const destination = join(ConfigManager.Instance.getTranscodingDirectory(), buildUUID()) | ||
25 | |||
26 | try { | ||
27 | await downloadFile({ url, jobToken: job.jobToken, runnerToken, destination }) | ||
28 | } catch (err) { | ||
29 | remove(destination) | ||
30 | .catch(err => logger.error({ err }, `Cannot remove ${destination}`)) | ||
31 | |||
32 | throw err | ||
33 | } | ||
34 | |||
35 | return destination | ||
36 | } | ||
37 | |||
38 | export function scheduleTranscodingProgress (options: { | ||
39 | server: PeerTubeServer | ||
40 | runnerToken: string | ||
41 | job: JobWithToken | ||
42 | progressGetter: () => number | ||
43 | }) { | ||
44 | const { job, server, progressGetter, runnerToken } = options | ||
45 | |||
46 | const updateInterval = ConfigManager.Instance.isTestInstance() | ||
47 | ? 500 | ||
48 | : 60000 | ||
49 | |||
50 | const update = () => { | ||
51 | server.runnerJobs.update({ jobToken: job.jobToken, jobUUID: job.uuid, runnerToken, progress: progressGetter() }) | ||
52 | .catch(err => logger.error({ err }, 'Cannot send job progress')) | ||
53 | } | ||
54 | |||
55 | const interval = setInterval(() => { | ||
56 | update() | ||
57 | }, updateInterval) | ||
58 | |||
59 | update() | ||
60 | |||
61 | return interval | ||
62 | } | ||
63 | |||
64 | // --------------------------------------------------------------------------- | ||
65 | |||
66 | export function buildFFmpegVOD (options: { | ||
67 | onJobProgress: (progress: number) => void | ||
68 | }) { | ||
69 | const { onJobProgress } = options | ||
70 | |||
71 | return new FFmpegVOD({ | ||
72 | ...getCommonFFmpegOptions(), | ||
73 | |||
74 | updateJobProgress: arg => { | ||
75 | const progress = arg < 0 || arg > 100 | ||
76 | ? undefined | ||
77 | : arg | ||
78 | |||
79 | onJobProgress(progress) | ||
80 | } | ||
81 | }) | ||
82 | } | ||
83 | |||
84 | export function buildFFmpegLive () { | ||
85 | return new FFmpegLive(getCommonFFmpegOptions()) | ||
86 | } | ||
87 | |||
88 | export function buildFFmpegEdition () { | ||
89 | return new FFmpegEdition(getCommonFFmpegOptions()) | ||
90 | } | ||
91 | |||
92 | function getCommonFFmpegOptions () { | ||
93 | const config = ConfigManager.Instance.getConfig() | ||
94 | |||
95 | return { | ||
96 | niceness: config.ffmpeg.nice, | ||
97 | threads: config.ffmpeg.threads, | ||
98 | tmpDirectory: ConfigManager.Instance.getTranscodingDirectory(), | ||
99 | profile: 'default', | ||
100 | availableEncoders: { | ||
101 | available: getDefaultAvailableEncoders(), | ||
102 | encodersToTry: getDefaultEncodersToTry() | ||
103 | }, | ||
104 | logger: getTranscodingLogger() | ||
105 | } | ||
106 | } | ||