av-kit
Version:
AVFoundation Recorder kit for Node.js
81 lines (77 loc) • 2.06 kB
text/typescript
type DeviceType = "display" | "camera" | "microphone";
type RecordingMode = "display" | "webcam";
interface Display {
id: string;
name: string;
}
interface Camera {
id: string;
name: string;
}
interface Microphone {
id: string;
name: string;
}
type DisplayRecordingItem = {
type: "display";
display: Display;
microphone?: Microphone;
shows_cursor?: boolean;
};
type WebcamRecordingItem = {
type: "webcam";
camera: Camera;
microphone?: Microphone;
};
type RecordingItem = DisplayRecordingItem | WebcamRecordingItem;
interface RecorderOptions {
output_directory: string;
items: RecordingItem[];
}
interface FileResult {
path: string;
type: RecordingMode;
deviceName?: string;
dimensions?: {
width: number;
height: number;
};
durationInSeconds?: number;
}
interface RecordingResult {
files: FileResult[];
}
declare class Recorder {
private options;
private outputDirectory;
private processManager;
private prepared;
private recording;
private recordingFiles;
constructor(options: RecorderOptions);
/**
* Prepare the recorder
*/
prepare(): Promise<void>;
/**
* Start recording
*/
start(): Promise<void>;
/**
* Stop recording and return result
*/
stop(): Promise<RecordingResult>;
/**
* Start recording a display
*/
private startDisplayRecording;
/**
* Start recording a webcam
*/
private startWebcamRecording;
}
declare function createOutputDirectory(customPath?: string): string;
declare function getDisplays(): Promise<Display[]>;
declare function getCameras(): Promise<Camera[]>;
declare function getMicrophones(): Promise<Microphone[]>;
export { type Camera, type DeviceType, type Display, type DisplayRecordingItem, type FileResult, type Microphone, Recorder, type RecorderOptions, type RecordingItem, type RecordingMode, type RecordingResult, type WebcamRecordingItem, createOutputDirectory, getCameras, getDisplays, getMicrophones };