]>
Commit | Line | Data |
---|---|---|
5e47f6ab C |
1 | import { |
2 | RunnerJobLiveRTMPHLSTranscodingPayload, | |
3 | RunnerJobPayload, | |
4 | RunnerJobType, | |
ab14f0e0 | 5 | RunnerJobStudioTranscodingPayload, |
5e47f6ab C |
6 | RunnerJobVODAudioMergeTranscodingPayload, |
7 | RunnerJobVODHLSTranscodingPayload, | |
8 | RunnerJobVODWebVideoTranscodingPayload, | |
9 | VideoStudioTaskPayload | |
10 | } from '@shared/models' | |
11 | ||
12 | const supportedMatrix = { | |
13 | 'vod-web-video-transcoding': (_payload: RunnerJobVODWebVideoTranscodingPayload) => { | |
14 | return true | |
15 | }, | |
16 | 'vod-hls-transcoding': (_payload: RunnerJobVODHLSTranscodingPayload) => { | |
17 | return true | |
18 | }, | |
19 | 'vod-audio-merge-transcoding': (_payload: RunnerJobVODAudioMergeTranscodingPayload) => { | |
20 | return true | |
21 | }, | |
22 | 'live-rtmp-hls-transcoding': (_payload: RunnerJobLiveRTMPHLSTranscodingPayload) => { | |
23 | return true | |
24 | }, | |
ab14f0e0 | 25 | 'video-studio-transcoding': (payload: RunnerJobStudioTranscodingPayload) => { |
5e47f6ab C |
26 | const tasks = payload?.tasks |
27 | const supported = new Set<VideoStudioTaskPayload['name']>([ 'add-intro', 'add-outro', 'add-watermark', 'cut' ]) | |
28 | ||
29 | if (!Array.isArray(tasks)) return false | |
30 | ||
31 | return tasks.every(t => t && supported.has(t.name)) | |
32 | } | |
33 | } | |
34 | ||
35 | export function isJobSupported (job: { | |
36 | type: RunnerJobType | |
37 | payload: RunnerJobPayload | |
38 | }) { | |
39 | const fn = supportedMatrix[job.type] | |
40 | if (!fn) return false | |
41 | ||
42 | return fn(job.payload as any) | |
43 | } |