aboutsummaryrefslogtreecommitdiffhomepage
path: root/packages/peertube-runner/server/process/shared/common.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/peertube-runner/server/process/shared/common.ts')
-rw-r--r--packages/peertube-runner/server/process/shared/common.ts39
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'
2import { ConfigManager, downloadFile, logger } from 'packages/peertube-runner/shared' 2import { ConfigManager, downloadFile, logger } from 'packages/peertube-runner/shared'
3import { join } from 'path' 3import { join } from 'path'
4import { buildUUID } from '@shared/extra-utils' 4import { buildUUID } from '@shared/extra-utils'
5import { FFmpegLive, FFmpegVOD } from '@shared/ffmpeg' 5import { FFmpegEdition, FFmpegLive, FFmpegVOD } from '@shared/ffmpeg'
6import { RunnerJob, RunnerJobPayload } from '@shared/models' 6import { RunnerJob, RunnerJobPayload } from '@shared/models'
7import { PeerTubeServer } from '@shared/server-commands' 7import { PeerTubeServer } from '@shared/server-commands'
8import { getTranscodingLogger } from './transcoding-logger' 8import { getTranscodingLogger } from './transcoding-logger'
9import { getAvailableEncoders, getEncodersToTry } from './transcoding-profiles' 9import { getAvailableEncoders, getEncodersToTry } from './transcoding-profiles'
10import { remove } from 'fs-extra'
10 11
11export type JobWithToken <T extends RunnerJobPayload = RunnerJobPayload> = RunnerJob<T> & { jobToken: string } 12export 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
43export function buildFFmpegVOD (options: { 53export 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
77export function buildFFmpegLive () { 78export function buildFFmpegLive () {
79 return new FFmpegLive(getCommonFFmpegOptions())
80}
81
82export function buildFFmpegEdition () {
83 return new FFmpegEdition(getCommonFFmpegOptions())
84}
85
86function 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}