]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - shared/models/runners/runner-job-payload.model.ts
Support studio transcoding in peertube runner
[github/Chocobozzz/PeerTube.git] / shared / models / runners / runner-job-payload.model.ts
1 import { VideoStudioTaskPayload } from '../server'
2
3 export type RunnerJobVODPayload =
4 RunnerJobVODWebVideoTranscodingPayload |
5 RunnerJobVODHLSTranscodingPayload |
6 RunnerJobVODAudioMergeTranscodingPayload
7
8 export type RunnerJobPayload =
9 RunnerJobVODPayload |
10 RunnerJobLiveRTMPHLSTranscodingPayload |
11 RunnerJobVideoEditionTranscodingPayload
12
13 // ---------------------------------------------------------------------------
14
15 export interface RunnerJobVODWebVideoTranscodingPayload {
16 input: {
17 videoFileUrl: string
18 }
19
20 output: {
21 resolution: number
22 fps: number
23 }
24 }
25
26 export interface RunnerJobVODHLSTranscodingPayload {
27 input: {
28 videoFileUrl: string
29 }
30
31 output: {
32 resolution: number
33 fps: number
34 }
35 }
36
37 export interface RunnerJobVODAudioMergeTranscodingPayload {
38 input: {
39 audioFileUrl: string
40 previewFileUrl: string
41 }
42
43 output: {
44 resolution: number
45 fps: number
46 }
47 }
48
49 export interface RunnerJobVideoEditionTranscodingPayload {
50 input: {
51 videoFileUrl: string
52 }
53
54 tasks: VideoStudioTaskPayload[]
55 }
56
57 // ---------------------------------------------------------------------------
58
59 export function isAudioMergeTranscodingPayload (payload: RunnerJobPayload): payload is RunnerJobVODAudioMergeTranscodingPayload {
60 return !!(payload as RunnerJobVODAudioMergeTranscodingPayload).input.audioFileUrl
61 }
62
63 // ---------------------------------------------------------------------------
64
65 export interface RunnerJobLiveRTMPHLSTranscodingPayload {
66 input: {
67 rtmpUrl: string
68 }
69
70 output: {
71 toTranscode: {
72 resolution: number
73 fps: number
74 }[]
75
76 segmentDuration: number
77 segmentListSize: number
78 }
79 }