homebridge-loxone-proxy
Version:
Homebridge Dynamic Platform Plugin which exposes a Loxone System to Homekit.
56 lines • 2.42 kB
TypeScript
/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
import { CameraRecordingConfiguration, CameraRecordingDelegate, HDSProtocolSpecificErrorReason, RecordingPacket } from 'homebridge';
import type { Logger } from 'homebridge';
import { ChildProcess } from 'child_process';
import { Server } from 'net';
import { Readable } from 'stream';
import { Buffer } from 'buffer';
import { LoxonePlatform } from '../../LoxonePlatform';
export interface MP4Atom {
header: Buffer;
length: number;
type: string;
data: Buffer;
}
export interface FFMpegFragmentedMP4Session {
generator: AsyncGenerator<MP4Atom>;
cp: ChildProcess;
}
export declare const PREBUFFER_LENGTH = 4000;
export declare function listenServer(server: Server, log: Logger): Promise<number>;
export declare function readLength(readable: Readable, length: number): Promise<Buffer>;
export declare function parseFragmentedMP4(readable: Readable): AsyncGenerator<MP4Atom>;
export declare class RecordingDelegate implements CameraRecordingDelegate {
private readonly platform;
private readonly hap;
private readonly log;
private readonly videoProcessor;
private readonly streamUrl;
private readonly base64auth;
private readonly cameraName;
private preBufferSession?;
private preBuffer?;
private preBufferInitPromise?;
private currentRecordingConfiguration?;
private activeFFmpegProcesses;
private streamAbortControllers;
private closedStreams;
private recordingActive;
private shuttingDown;
constructor(platform: LoxonePlatform, streamUrl: string, base64auth: string, cameraName: string);
updateRecordingActive(active: boolean): Promise<void>;
updateRecordingConfiguration(config: CameraRecordingConfiguration | undefined): Promise<void>;
handleRecordingStreamRequest(streamId: number): AsyncGenerator<RecordingPacket>;
closeRecordingStream(streamId: number, reason?: HDSProtocolSpecificErrorReason): void;
startPreBuffer(): Promise<void>;
handleFragmentsRequests(config: CameraRecordingConfiguration, streamKey: string, abortSignal?: AbortSignal): AsyncGenerator<Buffer>;
private startFFMPegFragmetedMP4Session;
private toStreamKey;
private isStreamClosed;
}
//# sourceMappingURL=RecordingDelegate.d.ts.map