homebridge-eufy-security
Version:
Control Eufy Security from homebridge.
52 lines • 2.06 kB
TypeScript
import { CameraController, CameraStreamingDelegate, PrepareStreamCallback, PrepareStreamRequest, SnapshotRequest, SnapshotRequestCallback, SRTPCryptoSuites, StreamingRequest, StreamRequestCallback } from 'homebridge';
import { Socket } from 'dgram';
import { FFmpeg } from '../utils/ffmpeg';
import { LocalLivestreamManager } from './LocalLivestreamManager';
import { TalkbackStream } from '../utils/Talkback';
import { CameraAccessory } from '../accessories/CameraAccessory';
import { Logger, ILogObj } from 'tslog';
export type SessionInfo = {
address: string;
ipv6: boolean;
videoPort: number;
videoReturnPort: number;
videoCryptoSuite: SRTPCryptoSuites;
videoSRTP: Buffer;
videoSSRC: number;
audioPort: number;
audioReturnPort: number;
audioCryptoSuite: SRTPCryptoSuites;
audioSRTP: Buffer;
audioSSRC: number;
};
type ActiveSession = {
videoProcess?: FFmpeg;
audioProcess?: FFmpeg;
returnProcess?: FFmpeg;
timeout?: NodeJS.Timeout;
socket?: Socket;
talkbackStream?: TalkbackStream;
};
export declare class StreamingDelegate implements CameraStreamingDelegate {
private camera;
private videoConfig;
private controller?;
private platform;
private device;
readonly log: Logger<ILogObj>;
private localLivestreamManager;
private snapshotManager;
pendingSessions: Map<string, SessionInfo>;
ongoingSessions: Map<string, ActiveSession>;
timeouts: Map<string, NodeJS.Timeout>;
constructor(camera: CameraAccessory);
setController(controller: CameraController): void;
getLivestreamManager(): LocalLivestreamManager;
handleSnapshotRequest(request: SnapshotRequest, callback: SnapshotRequestCallback): Promise<void>;
prepareStream(request: PrepareStreamRequest, callback: PrepareStreamCallback): Promise<void>;
private startStream;
handleStreamRequest(request: StreamingRequest, callback: StreamRequestCallback): void;
stopStream(sessionId: string): void;
}
export {};
//# sourceMappingURL=streamingDelegate.d.ts.map