UNPKG

camstreamerlib

Version:

Helper library for CamStreamer ACAP applications.

98 lines (97 loc) 4.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.streamCommonSchema = exports.streamAudioSchema = exports.streamVideoSchema = exports.internalVapixParametersSchema = exports.streamDelaySchema = exports.overlaysSchema = exports.videoCodecSchema = exports.streamingProtocolTypeSchema = exports.streamInputTypeSchema = exports.streamTriggerSchema = void 0; const zod_1 = require("zod"); const common_1 = require("../common"); const scheduleSchema = zod_1.z.object({ start: zod_1.z.object({ day: zod_1.z.number().int().min(0).max(6), timeS: zod_1.z.number().int().min(0).max(86400), }), stop: zod_1.z.object({ day: zod_1.z.number().int().min(0).max(6), timeS: zod_1.z.number().int().min(0).max(86400), }), isActive: zod_1.z.boolean(), }); exports.streamTriggerSchema = zod_1.z.discriminatedUnion('type', [ zod_1.z.object({ type: zod_1.z.literal('manual'), ioPort: zod_1.z.string().nullable(), }), zod_1.z.object({ type: zod_1.z.literal('onetime'), startTime: zod_1.z.number(), stopTime: zod_1.z.number() }), zod_1.z.object({ type: zod_1.z.literal('recurrent'), schedule: zod_1.z.array(scheduleSchema), }), ]); exports.streamInputTypeSchema = zod_1.z.union([zod_1.z.literal('CSw'), zod_1.z.literal('CRS'), zod_1.z.literal('RTSP_URL')]); exports.streamingProtocolTypeSchema = zod_1.z.union([zod_1.z.literal('RTMP'), zod_1.z.literal('RTMPS'), zod_1.z.literal('HLS_PUSH')]); exports.videoCodecSchema = zod_1.z.union([zod_1.z.literal('h264'), zod_1.z.literal('h265'), zod_1.z.literal('av1')]); exports.overlaysSchema = zod_1.z.union([ zod_1.z.literal('all'), zod_1.z.literal('text'), zod_1.z.literal('image'), zod_1.z.literal('application'), zod_1.z.literal(''), zod_1.z.literal('off'), ]); exports.streamDelaySchema = zod_1.z.object({ value: zod_1.z.number().int(), unit: zod_1.z.union([zod_1.z.literal('seconds'), zod_1.z.literal('minutes'), zod_1.z.literal('hours')]), }); exports.internalVapixParametersSchema = common_1.bitrateVapixParamsSchema.extend({ camera: zod_1.z.string(), resolution: zod_1.z.string(), fps: zod_1.z.number().int(), compression: zod_1.z.number().int(), govLength: zod_1.z.number().int(), videoCodec: exports.videoCodecSchema, h264Profile: common_1.h264ProfileSchema.optional(), audio: common_1.booleanSchema, nbrOfChannels: zod_1.z.union([zod_1.z.literal(1), zod_1.z.literal(2)]).optional(), overlays: zod_1.z .union([ zod_1.z.literal('all'), zod_1.z.literal('text'), zod_1.z.literal('image'), zod_1.z.literal('application'), zod_1.z.literal(''), zod_1.z.literal('off'), ]) .optional(), }); exports.streamVideoSchema = zod_1.z.object({ inputType: exports.streamInputTypeSchema, sourceUrl: zod_1.z.string().optional(), internalVapixParameters: zod_1.z.string(), userVapixParameters: zod_1.z.string(), streamingProtocol: exports.streamingProtocolTypeSchema, streamDelay: exports.streamDelaySchema.optional(), }); exports.streamAudioSchema = zod_1.z.discriminatedUnion('source', [ zod_1.z.object({ source: zod_1.z.literal('none'), }), zod_1.z.object({ source: zod_1.z.literal('microphone'), audioChannelNbr: zod_1.z.union([zod_1.z.literal(1), zod_1.z.literal(2)]) }), zod_1.z.object({ source: zod_1.z.literal('file'), fileName: zod_1.z.string(), filePath: zod_1.z.string(), }), zod_1.z.object({ source: zod_1.z.literal('url'), fileName: zod_1.z.string(), fileUrl: zod_1.z.string(), avSyncMsec: zod_1.z.number().int().nonnegative(), }), ]); exports.streamCommonSchema = zod_1.z.object({ id: zod_1.z.number(), enabled: zod_1.z.boolean(), active: zod_1.z.boolean(), title: zod_1.z.string(), trigger: exports.streamTriggerSchema, video: exports.streamVideoSchema, audio: exports.streamAudioSchema, });