camstreamerlib
Version:
Helper library for CamStreamer ACAP applications.
630 lines (629 loc) • 23.3 kB
TypeScript
/// <reference types="node" />
import { IClient, TBlobResponse, TResponse } from './internal/types';
import { ImageType, TCoordinates, TField, TFile, TFileType, TStorage, TWidget } from './types/CamOverlayAPI';
export declare const BASE_URL = "/local/camoverlay/api";
export declare class CamOverlayAPI<Client extends IClient<TResponse> = IClient<TResponse>> {
private client;
constructor(client: Client);
static getProxyUrlPath: () => string;
static getFilePreviewPath: (path: string) => string;
checkCameraTime(): Promise<boolean>;
getNetworkCameraList(): Promise<{
name: string;
ip: string;
}[]>;
wsAuthorization(): Promise<string>;
getMjpegStreamImage(mjpegUrl: string): Promise<TBlobResponse<Client>>;
listFiles(fileType: TFileType): Promise<{
path: string;
name: string;
storage: "url" | "flash" | "SD0" | "ftp" | "samba";
}[]>;
uploadFile(fileType: TFileType, formData: FormData, storage: TStorage): Promise<void>;
removeFile(fileType: TFileType, fileParams: TFile): Promise<void>;
getFileStorage(fileType: TFileType): Promise<{
type: "url" | "flash" | "SD0" | "ftp" | "samba";
state: string;
}[]>;
getFilePreviewFromCamera(path: string): Promise<TBlobResponse<Client>>;
updateInfoticker(serviceID: number, text: string): Promise<void>;
setEnabled(serviceID: number, enabled: boolean): Promise<void>;
isEnabled(serviceID: number): Promise<boolean>;
getSingleWidget(serviceId: number): Promise<{
name: "customGraphics";
enabled: 0 | 1;
id: number;
width: number;
height: number;
automationType: "time" | "manual" | "schedule" | `input${number}`;
cameraList: number[];
customName: string;
coordSystem: "top_left" | "top" | "top_right" | "left" | "center" | "right" | "bottom_left" | "bottom" | "bottom_right";
pos_x: number;
pos_y: number;
clockFormat: "12h" | "24h";
background: "custom" | "image";
image: string;
customAreaColor: string;
customAreaWidth: number;
customAreaHeight: number;
customAreaCorners: "sharp" | "rounded";
mappingZones: ({
type: "plain";
name: string;
pos_x: number;
pos_y: number;
wrapText: boolean;
textLines: number;
textWidth: number;
textAlign: "A_LEFT" | "A_CENTER" | "A_RIGHT";
textVerticalAlign: "VA_TOP" | "VA_CENTER" | "VA_BOTTOM";
textColor: string;
font: string;
fontSize: number;
switchingTime: number;
text?: {
source: string;
active: boolean;
}[] | undefined;
} | {
type: "countdown";
name: string;
pos_x: number;
pos_y: number;
wrapText: boolean;
textLines: number;
textWidth: number;
textAlign: "A_LEFT" | "A_CENTER" | "A_RIGHT";
textVerticalAlign: "VA_TOP" | "VA_CENTER" | "VA_BOTTOM";
textColor: string;
font: string;
fontSize: number;
switchingTime: number;
settings: {
startDate: number;
targetDate: number;
countdown: boolean;
countup: boolean;
displayDay: boolean;
displayHour: boolean;
displayMinute: boolean;
displaySeconds: boolean;
idleText: string;
hideZeros: boolean;
delimiter: "colon" | "letters";
suffixSeconds: string;
suffixMinute: string;
suffixHour: string;
suffixDay: string;
loop: boolean;
loopPeriod: number;
waitingPeriod: number;
};
text?: {
source: string;
active: boolean;
}[] | undefined;
})[];
schedule?: string | undefined;
invertInput?: boolean | undefined;
camera?: number | undefined;
zIndex?: number | undefined;
} | {
name: "images";
enabled: 0 | 1;
id: number;
width: number;
height: number;
automationType: "time" | "manual" | "schedule" | `input${number}`;
cameraList: number[];
customName: string;
overlayList: {
duration: number;
active: boolean;
coordSystem: "top_left" | "top" | "top_right" | "left" | "center" | "right" | "bottom_left" | "bottom" | "bottom_right";
pos_x: number;
pos_y: number;
imgPath: string;
imgName: string;
scale: number;
fps?: number | undefined;
}[];
schedule?: string | undefined;
invertInput?: boolean | undefined;
camera?: number | undefined;
zIndex?: number | undefined;
} | {
name: "accuweather";
enabled: 0 | 1;
id: number;
width: number;
height: number;
automationType: "time" | "manual" | "schedule" | `input${number}`;
cameraList: number[];
customName: string;
coordSystem: "top_left" | "top" | "top_right" | "left" | "center" | "right" | "bottom_left" | "bottom" | "bottom_right";
pos_x: number;
pos_y: number;
scale: number;
font: string;
location: string;
locationName: string;
title: string;
bgStartColor: "237,143,73,0.93" | "0,0,0,0.75" | "31,32,73,0.9" | "76,94,127,0.95";
bgEndColor: "0,0,0,0.75" | "234,181,89,0.93" | "73,96,213,0.9" | "140,150,168,0.95";
clockType: "12h" | "24h";
lang: "en-us" | "fr-fr" | "ja-jp" | "pt-pt" | "es-es" | "de-de" | "ko-kr" | "zh-hk" | "zh-cn" | "nl-nl" | "cs-cz" | "ru-ru" | "sv-se";
units: "Metric" | "Imperial";
layout: "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "13";
schedule?: string | undefined;
invertInput?: boolean | undefined;
camera?: number | undefined;
zIndex?: number | undefined;
} | {
name: "infoticker";
enabled: 0 | 1;
id: number;
width: number;
height: number;
source: string;
automationType: "time" | "manual" | "schedule" | `input${number}`;
cameraList: number[];
customName: string;
coordSystem: "top" | "bottom";
pos_y: number;
textColor: string;
font: string;
fontSize: number;
switchingTime: number;
clockType: "12h" | "24h";
showClock: 0 | 1;
bgColor: string;
weatherLocation: string;
weatherLocationName: string;
weatherLang: "en-us" | "fr-fr" | "ja-jp" | "pt-pt" | "es-es" | "de-de" | "ko-kr" | "zh-hk" | "zh-cn" | "nl-nl" | "cs-cz" | "ru-ru" | "sv-se";
weatherUnits: "Metric" | "Imperial";
numberOfLines: number;
crawlLeft: boolean;
crawlSpeed: number;
sourceType: "url" | "text";
schedule?: string | undefined;
invertInput?: boolean | undefined;
camera?: number | undefined;
zIndex?: number | undefined;
} | {
name: "pip";
enabled: 0 | 1;
id: number;
width: number;
height: number;
fps: number;
automationType: "time" | "manual" | "schedule" | `input${number}`;
cameraList: number[];
customName: string;
coordSystem: "top_left" | "top" | "top_right" | "left" | "center" | "right" | "bottom_left" | "bottom" | "bottom_right";
pos_x: number;
pos_y: number;
scale: number;
screenSize: number;
compression: number;
source_type: "axis_camera" | "mjpeg_url";
mjpeg_url: string;
camera_ip: string;
camera_port: number;
camera_user: string;
camera_pass: string;
camera_width: number;
camera_height: number;
camera_view_area: string;
camera_overlay_params: "overlays=off" | "overlays=all" | "overlays=text" | "overlays=image" | "overlays=application";
rotate: 0 | 90 | 180 | 270;
dewarping: {
enabled: boolean;
rectangle: [number, number][];
aspectRatioCorrection: number;
};
borderColor: string;
borderWidth: number;
schedule?: string | undefined;
invertInput?: boolean | undefined;
camera?: number | undefined;
zIndex?: number | undefined;
} | {
type: "map" | "image" | "compass";
name: "ptzCompass";
enabled: 0 | 1;
id: number;
width: number;
height: number;
automationType: "time" | "manual" | "schedule" | `input${number}`;
cameraList: number[];
customName: string;
coordSystem: "top_left" | "top" | "top_right" | "left" | "center" | "right" | "bottom_left" | "bottom" | "bottom_right";
pos_x: number;
pos_y: number;
scale: number;
image: string;
northPan: number;
cameraPosX: number;
cameraPosY: number;
colorScheme: "black" | "white" | "orange";
schedule?: string | undefined;
invertInput?: boolean | undefined;
camera?: number | undefined;
zIndex?: number | undefined;
generalLng?: number | undefined;
generalLat?: number | undefined;
generalZoom?: number | undefined;
generalMapType?: string | undefined;
generalIframeWidth?: number | undefined;
generalIframeHeight?: number | undefined;
generalAddress?: string | undefined;
} | {
name: "ptz";
enabled: 0 | 1;
id: number;
width: number;
height: number;
automationType: "time" | "manual" | "schedule" | `input${number}`;
cameraList: number[];
customName: string;
ptz_positions: Record<string, {
loop: boolean;
overlayList: {
duration: number;
coordSystem: "top_left" | "top" | "top_right" | "left" | "center" | "right" | "bottom_left" | "bottom" | "bottom_right";
pos_x: number;
pos_y: number;
imgPath: string;
imgName: string;
scale: number;
}[];
}>;
schedule?: string | undefined;
invertInput?: boolean | undefined;
camera?: number | undefined;
zIndex?: number | undefined;
} | {
name: "screenSharing";
enabled: 0 | 1;
id: number;
width: number;
height: number;
fps: number;
automationType: "time" | "manual" | "schedule" | `input${number}`;
cameraList: number[];
customName: string;
coordSystem: "top_left" | "top" | "top_right" | "left" | "center" | "right" | "bottom_left" | "bottom" | "bottom_right";
pos_x: number;
pos_y: number;
screenSize: number;
schedule?: string | undefined;
invertInput?: boolean | undefined;
camera?: number | undefined;
zIndex?: number | undefined;
} | {
name: "web_camera";
enabled: 0 | 1;
id: number;
width: number;
height: number;
fps: number;
automationType: "time" | "manual" | "schedule" | `input${number}`;
cameraList: number[];
customName: string;
coordSystem: "top_left" | "top" | "top_right" | "left" | "center" | "right" | "bottom_left" | "bottom" | "bottom_right";
pos_x: number;
pos_y: number;
screenSize: number;
schedule?: string | undefined;
invertInput?: boolean | undefined;
camera?: number | undefined;
zIndex?: number | undefined;
}>;
getWidgets(): Promise<({
name: "customGraphics";
enabled: 0 | 1;
id: number;
width: number;
height: number;
automationType: "time" | "manual" | "schedule" | `input${number}`;
cameraList: number[];
customName: string;
coordSystem: "top_left" | "top" | "top_right" | "left" | "center" | "right" | "bottom_left" | "bottom" | "bottom_right";
pos_x: number;
pos_y: number;
clockFormat: "12h" | "24h";
background: "custom" | "image";
image: string;
customAreaColor: string;
customAreaWidth: number;
customAreaHeight: number;
customAreaCorners: "sharp" | "rounded";
mappingZones: ({
type: "plain";
name: string;
pos_x: number;
pos_y: number;
wrapText: boolean;
textLines: number;
textWidth: number;
textAlign: "A_LEFT" | "A_CENTER" | "A_RIGHT";
textVerticalAlign: "VA_TOP" | "VA_CENTER" | "VA_BOTTOM";
textColor: string;
font: string;
fontSize: number;
switchingTime: number;
text?: {
source: string;
active: boolean;
}[] | undefined;
} | {
type: "countdown";
name: string;
pos_x: number;
pos_y: number;
wrapText: boolean;
textLines: number;
textWidth: number;
textAlign: "A_LEFT" | "A_CENTER" | "A_RIGHT";
textVerticalAlign: "VA_TOP" | "VA_CENTER" | "VA_BOTTOM";
textColor: string;
font: string;
fontSize: number;
switchingTime: number;
settings: {
startDate: number;
targetDate: number;
countdown: boolean;
countup: boolean;
displayDay: boolean;
displayHour: boolean;
displayMinute: boolean;
displaySeconds: boolean;
idleText: string;
hideZeros: boolean;
delimiter: "colon" | "letters";
suffixSeconds: string;
suffixMinute: string;
suffixHour: string;
suffixDay: string;
loop: boolean;
loopPeriod: number;
waitingPeriod: number;
};
text?: {
source: string;
active: boolean;
}[] | undefined;
})[];
schedule?: string | undefined;
invertInput?: boolean | undefined;
camera?: number | undefined;
zIndex?: number | undefined;
} | {
name: "images";
enabled: 0 | 1;
id: number;
width: number;
height: number;
automationType: "time" | "manual" | "schedule" | `input${number}`;
cameraList: number[];
customName: string;
overlayList: {
duration: number;
active: boolean;
coordSystem: "top_left" | "top" | "top_right" | "left" | "center" | "right" | "bottom_left" | "bottom" | "bottom_right";
pos_x: number;
pos_y: number;
imgPath: string;
imgName: string;
scale: number;
fps?: number | undefined;
}[];
schedule?: string | undefined;
invertInput?: boolean | undefined;
camera?: number | undefined;
zIndex?: number | undefined;
} | {
name: "accuweather";
enabled: 0 | 1;
id: number;
width: number;
height: number;
automationType: "time" | "manual" | "schedule" | `input${number}`;
cameraList: number[];
customName: string;
coordSystem: "top_left" | "top" | "top_right" | "left" | "center" | "right" | "bottom_left" | "bottom" | "bottom_right";
pos_x: number;
pos_y: number;
scale: number;
font: string;
location: string;
locationName: string;
title: string;
bgStartColor: "237,143,73,0.93" | "0,0,0,0.75" | "31,32,73,0.9" | "76,94,127,0.95";
bgEndColor: "0,0,0,0.75" | "234,181,89,0.93" | "73,96,213,0.9" | "140,150,168,0.95";
clockType: "12h" | "24h";
lang: "en-us" | "fr-fr" | "ja-jp" | "pt-pt" | "es-es" | "de-de" | "ko-kr" | "zh-hk" | "zh-cn" | "nl-nl" | "cs-cz" | "ru-ru" | "sv-se";
units: "Metric" | "Imperial";
layout: "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "13";
schedule?: string | undefined;
invertInput?: boolean | undefined;
camera?: number | undefined;
zIndex?: number | undefined;
} | {
name: "infoticker";
enabled: 0 | 1;
id: number;
width: number;
height: number;
source: string;
automationType: "time" | "manual" | "schedule" | `input${number}`;
cameraList: number[];
customName: string;
coordSystem: "top" | "bottom";
pos_y: number;
textColor: string;
font: string;
fontSize: number;
switchingTime: number;
clockType: "12h" | "24h";
showClock: 0 | 1;
bgColor: string;
weatherLocation: string;
weatherLocationName: string;
weatherLang: "en-us" | "fr-fr" | "ja-jp" | "pt-pt" | "es-es" | "de-de" | "ko-kr" | "zh-hk" | "zh-cn" | "nl-nl" | "cs-cz" | "ru-ru" | "sv-se";
weatherUnits: "Metric" | "Imperial";
numberOfLines: number;
crawlLeft: boolean;
crawlSpeed: number;
sourceType: "url" | "text";
schedule?: string | undefined;
invertInput?: boolean | undefined;
camera?: number | undefined;
zIndex?: number | undefined;
} | {
name: "pip";
enabled: 0 | 1;
id: number;
width: number;
height: number;
fps: number;
automationType: "time" | "manual" | "schedule" | `input${number}`;
cameraList: number[];
customName: string;
coordSystem: "top_left" | "top" | "top_right" | "left" | "center" | "right" | "bottom_left" | "bottom" | "bottom_right";
pos_x: number;
pos_y: number;
scale: number;
screenSize: number;
compression: number;
source_type: "axis_camera" | "mjpeg_url";
mjpeg_url: string;
camera_ip: string;
camera_port: number;
camera_user: string;
camera_pass: string;
camera_width: number;
camera_height: number;
camera_view_area: string;
camera_overlay_params: "overlays=off" | "overlays=all" | "overlays=text" | "overlays=image" | "overlays=application";
rotate: 0 | 90 | 180 | 270;
dewarping: {
enabled: boolean;
rectangle: [number, number][];
aspectRatioCorrection: number;
};
borderColor: string;
borderWidth: number;
schedule?: string | undefined;
invertInput?: boolean | undefined;
camera?: number | undefined;
zIndex?: number | undefined;
} | {
type: "map" | "image" | "compass";
name: "ptzCompass";
enabled: 0 | 1;
id: number;
width: number;
height: number;
automationType: "time" | "manual" | "schedule" | `input${number}`;
cameraList: number[];
customName: string;
coordSystem: "top_left" | "top" | "top_right" | "left" | "center" | "right" | "bottom_left" | "bottom" | "bottom_right";
pos_x: number;
pos_y: number;
scale: number;
image: string;
northPan: number;
cameraPosX: number;
cameraPosY: number;
colorScheme: "black" | "white" | "orange";
schedule?: string | undefined;
invertInput?: boolean | undefined;
camera?: number | undefined;
zIndex?: number | undefined;
generalLng?: number | undefined;
generalLat?: number | undefined;
generalZoom?: number | undefined;
generalMapType?: string | undefined;
generalIframeWidth?: number | undefined;
generalIframeHeight?: number | undefined;
generalAddress?: string | undefined;
} | {
name: "ptz";
enabled: 0 | 1;
id: number;
width: number;
height: number;
automationType: "time" | "manual" | "schedule" | `input${number}`;
cameraList: number[];
customName: string;
ptz_positions: Record<string, {
loop: boolean;
overlayList: {
duration: number;
coordSystem: "top_left" | "top" | "top_right" | "left" | "center" | "right" | "bottom_left" | "bottom" | "bottom_right";
pos_x: number;
pos_y: number;
imgPath: string;
imgName: string;
scale: number;
}[];
}>;
schedule?: string | undefined;
invertInput?: boolean | undefined;
camera?: number | undefined;
zIndex?: number | undefined;
} | {
name: "screenSharing";
enabled: 0 | 1;
id: number;
width: number;
height: number;
fps: number;
automationType: "time" | "manual" | "schedule" | `input${number}`;
cameraList: number[];
customName: string;
coordSystem: "top_left" | "top" | "top_right" | "left" | "center" | "right" | "bottom_left" | "bottom" | "bottom_right";
pos_x: number;
pos_y: number;
screenSize: number;
schedule?: string | undefined;
invertInput?: boolean | undefined;
camera?: number | undefined;
zIndex?: number | undefined;
} | {
name: "web_camera";
enabled: 0 | 1;
id: number;
width: number;
height: number;
fps: number;
automationType: "time" | "manual" | "schedule" | `input${number}`;
cameraList: number[];
customName: string;
coordSystem: "top_left" | "top" | "top_right" | "left" | "center" | "right" | "bottom_left" | "bottom" | "bottom_right";
pos_x: number;
pos_y: number;
screenSize: number;
schedule?: string | undefined;
invertInput?: boolean | undefined;
camera?: number | undefined;
zIndex?: number | undefined;
})[]>;
updateSingleWidget(widget: TWidget): Promise<void>;
updateWidgets(widgets: TWidget[]): Promise<void>;
updateCGText(serviceID: number, fields: TField[]): Promise<void>;
updateCGImagePos(serviceID: number, coordinates?: TCoordinates, x?: number, y?: number): Promise<void>;
updateCGImage(serviceID: number, path: string, coordinates?: TCoordinates, x?: number, y?: number): Promise<void>;
updateCGImageFromData(serviceID: number, imageType: ImageType, imageData: Buffer, coordinates?: TCoordinates, x?: number, y?: number): Promise<void>;
private promiseCGUpdate;
private _get;
private _post;
private _getBlob;
private parseBlobResponse;
private _postUrlEncoded;
private _postJsonEncoded;
}