@bililive-tools/manager
Version:
Batch scheduling recorders
64 lines (63 loc) • 2.33 kB
TypeScript
import EventEmitter from "node:events";
import { createRecordExtraDataController } from "../xml_stream_controller.js";
import type { RecorderCreateOpts } from "../recorder.js";
import type { TrueVideoFormat } from "../index.js";
import type { XmlStreamStats } from "../xml_stream_controller.js";
export type GetSavePath = (data: {
startTime: number;
title?: string;
extraMs?: boolean;
}) => string;
type RecorderType = Exclude<RecorderCreateOpts["recorderType"], undefined | "auto">;
export interface VideoFileCompletedPayload {
filename: string;
stats?: XmlStreamStats;
}
export declare class Segment extends EventEmitter {
extraDataController: ReturnType<typeof createRecordExtraDataController> | null;
init: boolean;
getSavePath: GetSavePath;
/** 原始的文件名,用于重命名 */
rawRecordingVideoPath: string;
/** 输出文件名名,不包含拓展名 */
outputVideoFilePath: string;
disableDanma: boolean;
videoExt: TrueVideoFormat;
options?: {
firstStartTime: number;
};
constructor(getSavePath: GetSavePath, disableDanma: boolean, videoExt: TrueVideoFormat, options?: {
firstStartTime: number;
});
private getVideoFileCompletedPayload;
handleSegmentEnd(): Promise<void>;
onSegmentStart(stderrLine: string, callBack?: {
onUpdateLiveInfo: () => Promise<{
title?: string;
cover?: string;
}>;
}): Promise<void>;
get outputFilePath(): string;
}
export declare class StreamManager extends EventEmitter {
private segment;
private extraDataController;
recordSavePath: string;
recordStartTime?: number;
hasSegment: boolean;
recorderType: RecorderType;
private videoFormat;
private callBack?;
constructor(getSavePath: GetSavePath, hasSegment: boolean, disableDanma: boolean, recorderType: RecorderType, videoFormat: TrueVideoFormat, callBack?: {
onUpdateLiveInfo: () => Promise<{
title?: string;
cover?: string;
}>;
});
handleVideoStarted(stderrLine: string): Promise<void>;
handleVideoCompleted(): Promise<void>;
getExtraDataController(): import("../xml_stream_controller.js").XmlStreamController | null;
get videoExt(): TrueVideoFormat;
get videoFilePath(): string;
}
export {};