homebridge-loxone-proxy
Version:
Homebridge Dynamic Platform Plugin which exposes a Loxone System to Homekit.
46 lines • 2.21 kB
TypeScript
/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
import { CameraController, CameraRecordingConfiguration, CameraRecordingDelegate, HDSProtocolSpecificErrorReason, RecordingPacket } from 'homebridge';
import { ChildProcess } from 'child_process';
import { Socket, Server } from 'net';
import { Readable } from 'stream';
import { LoxonePlatform } from '../../LoxonePlatform';
export interface MP4Atom {
header: Buffer;
length: number;
type: string;
data: Buffer;
}
export interface FFMpegFragmentedMP4Session {
socket: Socket;
cp: ChildProcess;
generator: AsyncGenerator<MP4Atom>;
}
export declare const PREBUFFER_LENGTH = 4000;
export declare const FRAGMENTS_LENGTH = 4000;
export declare function listenServer(server: Server): 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 {
readonly platform: LoxonePlatform;
private readonly hap;
private readonly log;
private readonly cameraName;
private process;
private readonly videoProcessor;
readonly controller: CameraController | undefined;
private preBufferSession;
private preBuffer;
constructor(platform: LoxonePlatform, ip: string);
updateRecordingActive(active: boolean): void;
updateRecordingConfiguration(configuration: CameraRecordingConfiguration | undefined): void;
handleRecordingStreamRequest(streamId: number): AsyncGenerator<RecordingPacket, any, unknown>;
acknowledgeStream?(streamId: number): void;
closeRecordingStream(streamId: number, reason: HDSProtocolSpecificErrorReason | undefined): void;
startPreBuffer(): Promise<void>;
handleFragmentsRequests(configuration: CameraRecordingConfiguration): AsyncGenerator<Buffer, void, unknown>;
startFFMPegFragmetedMP4Session(ffmpegPath: string, ffmpegInput: string[], audioOutputArgs: string[], videoOutputArgs: string[]): Promise<FFMpegFragmentedMP4Session>;
}
//# sourceMappingURL=RecordingDelegate.d.ts.map