2 RunnerJobLiveRTMPHLSTranscodingPayload,
5 RunnerJobStudioTranscodingPayload,
6 RunnerJobVODAudioMergeTranscodingPayload,
7 RunnerJobVODHLSTranscodingPayload,
8 RunnerJobVODWebVideoTranscodingPayload,
10 } from '@shared/models'
12 const supportedMatrix = {
13 'vod-web-video-transcoding': (_payload: RunnerJobVODWebVideoTranscodingPayload) => {
16 'vod-hls-transcoding': (_payload: RunnerJobVODHLSTranscodingPayload) => {
19 'vod-audio-merge-transcoding': (_payload: RunnerJobVODAudioMergeTranscodingPayload) => {
22 'live-rtmp-hls-transcoding': (_payload: RunnerJobLiveRTMPHLSTranscodingPayload) => {
25 'video-studio-transcoding': (payload: RunnerJobStudioTranscodingPayload) => {
26 const tasks = payload?.tasks
27 const supported = new Set<VideoStudioTaskPayload['name']>([ 'add-intro', 'add-outro', 'add-watermark', 'cut' ])
29 if (!Array.isArray(tasks)) return false
31 return tasks.every(t => t && supported.has(t.name))
35 export function isJobSupported (job: {
37 payload: RunnerJobPayload
39 const fn = supportedMatrix[job.type]
42 return fn(job.payload as any)