UNPKG

camstreamerlib

Version:

Helper library for CamStreamer ACAP applications.

1,764 lines (1,763 loc) 65 kB
import { ProxyClient } from './internal/ProxyClient'; import { IClient, TBlobResponse, TResponse } from './internal/types'; import { TAudioFile, TAudioFileStorageType, TStream, TStreamList } from './types/CamStreamerAPI/CamStreamerAPI'; import { THttpRequestOptions, TProxyParams } from './types/common'; import { TOldStream, TOldStringStream } from './types/CamStreamerAPI/oldStreamSchema'; export declare class CamStreamerAPI<Client extends IClient<TResponse, any>> { private client; constructor(client: Client); static getProxyPath: () => string; static getWsEventsPath: () => string; getClient(proxyParams?: TProxyParams): Client | ProxyClient<Client>; checkAPIAvailable(options?: THttpRequestOptions): Promise<void>; wsAuthorization(options?: THttpRequestOptions): Promise<string>; getUtcTime(options?: THttpRequestOptions): Promise<number>; getMaxFps(source?: number, options?: THttpRequestOptions): Promise<any>; isCSPassValid(pass: string, options?: THttpRequestOptions): Promise<boolean>; getStreamList(options?: THttpRequestOptions): Promise<({ post: { postLocation: "timeline"; streamPrivacy: "public" | "friends" | "only_me"; } | { postLocation: "page"; page: string; }; type: "facebook"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; deleteAfterEnd: boolean; saveToSdCard: boolean; statusCameraLed: boolean; statusCameraOutput: string | null; countdown: boolean; description?: string | undefined; } | { type: "mpeg_dvb"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; port: number; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; saveToSdCard: boolean; statusCameraLed: boolean; statusCameraOutput: string | null; ipAddress: string; standard: "DVB" | "ATSC"; nullPacketsPaddingEnabled: boolean; nullPacketsPaddingKbps: number; videoPid: number; audioPid: number; mpegtsStreamId: number; pmtPid: number; pcrPid: number; pcrPeriodMs: number; providerName: string; serviceName: string; } | { type: "rtmp"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; saveToSdCard: boolean; statusCameraLed: boolean; statusCameraOutput: string | null; outputUrl: string; streamKey: string; streamIdentifier?: string | undefined; } | { type: "sd_card"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "windy"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "youtube"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; streamPrivacy: "public" | "unlisted" | "private"; saveToSdCard: boolean; statusCameraLed: boolean; statusCameraOutput: string | null; countdown: boolean; tags: string[]; latency: "normal" | "low" | "ultra_low"; afterEndStatus: "public" | "unlisted" | "private" | "no_change"; dvr: boolean; hasWatchdogs: boolean; enableManualControl: boolean; playlist?: string | undefined; description?: string | undefined; notificationEmail?: string[] | undefined; } | { type: "vimeo"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "twitch"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "church"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "srt"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "da_cast"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "hls_pull"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "hls_push"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "wowza"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "dailymotion"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "ibm"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "microsoft_azure"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "microsoft_stream"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "game_changer"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; saveToSdCard: boolean; statusCameraLed: boolean; statusCameraOutput: string | null; outputUrl: string; streamKey: string; streamIdentifier?: string | undefined; } | { type: "youtube_rtmp"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; saveToSdCard: boolean; statusCameraLed: boolean; statusCameraOutput: string | null; outputUrl: string; streamKey: string; streamIdentifier?: string | undefined; })[]>; setStreamList(streamList: TStreamList['streamList'], options?: THttpRequestOptions): Promise<void>; getStream(streamId: number, options?: THttpRequestOptions): Promise<{ post: { postLocation: "timeline"; streamPrivacy: "public" | "friends" | "only_me"; } | { postLocation: "page"; page: string; }; type: "facebook"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; deleteAfterEnd: boolean; saveToSdCard: boolean; statusCameraLed: boolean; statusCameraOutput: string | null; countdown: boolean; description?: string | undefined; } | { type: "mpeg_dvb"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; port: number; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; saveToSdCard: boolean; statusCameraLed: boolean; statusCameraOutput: string | null; ipAddress: string; standard: "DVB" | "ATSC"; nullPacketsPaddingEnabled: boolean; nullPacketsPaddingKbps: number; videoPid: number; audioPid: number; mpegtsStreamId: number; pmtPid: number; pcrPid: number; pcrPeriodMs: number; providerName: string; serviceName: string; } | { type: "rtmp"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; saveToSdCard: boolean; statusCameraLed: boolean; statusCameraOutput: string | null; outputUrl: string; streamKey: string; streamIdentifier?: string | undefined; } | { type: "sd_card"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "windy"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "youtube"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; streamPrivacy: "public" | "unlisted" | "private"; saveToSdCard: boolean; statusCameraLed: boolean; statusCameraOutput: string | null; countdown: boolean; tags: string[]; latency: "normal" | "low" | "ultra_low"; afterEndStatus: "public" | "unlisted" | "private" | "no_change"; dvr: boolean; hasWatchdogs: boolean; enableManualControl: boolean; playlist?: string | undefined; description?: string | undefined; notificationEmail?: string[] | undefined; } | { type: "vimeo"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "twitch"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "church"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "srt"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number; }; stop: { day: number; timeS: number; }; isActive: boolean; }[]; }; } | { type: "da_cast"; audio: { source: "none"; } | { source: "microphone"; audioChannelNbr: 1 | 2; } | { source: "file"; fileName: string; filePath: string; } | { source: "url"; fileName: string; fileUrl: string; avSyncMsec: number; }; video: { inputType: "RTSP_URL" | "CSw" | "CRS"; internalVapixParameters: string; userVapixParameters: string; streamingProtocol: "RTMP" | "RTMPS" | "HLS_PUSH"; sourceUrl?: string | undefined; streamDelay?: { value: number; unit: "seconds" | "minutes" | "hours"; } | undefined; }; enabled: boolean; id: number; active: boolean; title: string; trigger: { type: "manual"; ioPort: string | null; } | { type: "onetime"; startTime: number; stopTime: number; } | { type: "recurrent"; schedule: { start: { day: number; timeS: number;