diff options
Diffstat (limited to 'packages/peertube-runner/server/process/shared/common.ts')
-rw-r--r-- | packages/peertube-runner/server/process/shared/common.ts | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/packages/peertube-runner/server/process/shared/common.ts b/packages/peertube-runner/server/process/shared/common.ts index 9b2c40728..3cac98388 100644 --- a/packages/peertube-runner/server/process/shared/common.ts +++ b/packages/peertube-runner/server/process/shared/common.ts | |||
@@ -2,11 +2,12 @@ import { throttle } from 'lodash' | |||
2 | import { ConfigManager, downloadFile, logger } from 'packages/peertube-runner/shared' | 2 | import { ConfigManager, downloadFile, logger } from 'packages/peertube-runner/shared' |
3 | import { join } from 'path' | 3 | import { join } from 'path' |
4 | import { buildUUID } from '@shared/extra-utils' | 4 | import { buildUUID } from '@shared/extra-utils' |
5 | import { FFmpegLive, FFmpegVOD } from '@shared/ffmpeg' | 5 | import { FFmpegEdition, FFmpegLive, FFmpegVOD } from '@shared/ffmpeg' |
6 | import { RunnerJob, RunnerJobPayload } from '@shared/models' | 6 | import { RunnerJob, RunnerJobPayload } from '@shared/models' |
7 | import { PeerTubeServer } from '@shared/server-commands' | 7 | import { PeerTubeServer } from '@shared/server-commands' |
8 | import { getTranscodingLogger } from './transcoding-logger' | 8 | import { getTranscodingLogger } from './transcoding-logger' |
9 | import { getAvailableEncoders, getEncodersToTry } from './transcoding-profiles' | 9 | import { getAvailableEncoders, getEncodersToTry } from './transcoding-profiles' |
10 | import { remove } from 'fs-extra' | ||
10 | 11 | ||
11 | export type JobWithToken <T extends RunnerJobPayload = RunnerJobPayload> = RunnerJob<T> & { jobToken: string } | 12 | export type JobWithToken <T extends RunnerJobPayload = RunnerJobPayload> = RunnerJob<T> & { jobToken: string } |
12 | 13 | ||
@@ -24,7 +25,14 @@ export async function downloadInputFile (options: { | |||
24 | const { url, job, runnerToken } = options | 25 | const { url, job, runnerToken } = options |
25 | const destination = join(ConfigManager.Instance.getTranscodingDirectory(), buildUUID()) | 26 | const destination = join(ConfigManager.Instance.getTranscodingDirectory(), buildUUID()) |
26 | 27 | ||
27 | await downloadFile({ url, jobToken: job.jobToken, runnerToken, destination }) | 28 | try { |
29 | await downloadFile({ url, jobToken: job.jobToken, runnerToken, destination }) | ||
30 | } catch (err) { | ||
31 | remove(destination) | ||
32 | .catch(err => logger.error({ err }, `Cannot remove ${destination}`)) | ||
33 | |||
34 | throw err | ||
35 | } | ||
28 | 36 | ||
29 | return destination | 37 | return destination |
30 | } | 38 | } |
@@ -40,6 +48,8 @@ export async function updateTranscodingProgress (options: { | |||
40 | return server.runnerJobs.update({ jobToken: job.jobToken, jobUUID: job.uuid, runnerToken, progress }) | 48 | return server.runnerJobs.update({ jobToken: job.jobToken, jobUUID: job.uuid, runnerToken, progress }) |
41 | } | 49 | } |
42 | 50 | ||
51 | // --------------------------------------------------------------------------- | ||
52 | |||
43 | export function buildFFmpegVOD (options: { | 53 | export function buildFFmpegVOD (options: { |
44 | server: PeerTubeServer | 54 | server: PeerTubeServer |
45 | runnerToken: string | 55 | runnerToken: string |
@@ -58,26 +68,25 @@ export function buildFFmpegVOD (options: { | |||
58 | .catch(err => logger.error({ err }, 'Cannot send job progress')) | 68 | .catch(err => logger.error({ err }, 'Cannot send job progress')) |
59 | }, updateInterval, { trailing: false }) | 69 | }, updateInterval, { trailing: false }) |
60 | 70 | ||
61 | const config = ConfigManager.Instance.getConfig() | ||
62 | |||
63 | return new FFmpegVOD({ | 71 | return new FFmpegVOD({ |
64 | niceness: config.ffmpeg.nice, | 72 | ...getCommonFFmpegOptions(), |
65 | threads: config.ffmpeg.threads, | 73 | |
66 | tmpDirectory: ConfigManager.Instance.getTranscodingDirectory(), | ||
67 | profile: 'default', | ||
68 | availableEncoders: { | ||
69 | available: getAvailableEncoders(), | ||
70 | encodersToTry: getEncodersToTry() | ||
71 | }, | ||
72 | logger: getTranscodingLogger(), | ||
73 | updateJobProgress | 74 | updateJobProgress |
74 | }) | 75 | }) |
75 | } | 76 | } |
76 | 77 | ||
77 | export function buildFFmpegLive () { | 78 | export function buildFFmpegLive () { |
79 | return new FFmpegLive(getCommonFFmpegOptions()) | ||
80 | } | ||
81 | |||
82 | export function buildFFmpegEdition () { | ||
83 | return new FFmpegEdition(getCommonFFmpegOptions()) | ||
84 | } | ||
85 | |||
86 | function getCommonFFmpegOptions () { | ||
78 | const config = ConfigManager.Instance.getConfig() | 87 | const config = ConfigManager.Instance.getConfig() |
79 | 88 | ||
80 | return new FFmpegLive({ | 89 | return { |
81 | niceness: config.ffmpeg.nice, | 90 | niceness: config.ffmpeg.nice, |
82 | threads: config.ffmpeg.threads, | 91 | threads: config.ffmpeg.threads, |
83 | tmpDirectory: ConfigManager.Instance.getTranscodingDirectory(), | 92 | tmpDirectory: ConfigManager.Instance.getTranscodingDirectory(), |
@@ -87,5 +96,5 @@ export function buildFFmpegLive () { | |||
87 | encodersToTry: getEncodersToTry() | 96 | encodersToTry: getEncodersToTry() |
88 | }, | 97 | }, |
89 | logger: getTranscodingLogger() | 98 | logger: getTranscodingLogger() |
90 | }) | 99 | } |
91 | } | 100 | } |