@jxstjh/jhvideo
Version:
HTML5 jhvideo base on MPEG2-TS Stream Player
43 lines (42 loc) • 1.52 kB
TypeScript
import { StreamOpt } from '../model/playerModel';
export interface RecoveryConfig {
enabled?: boolean;
maxRecoverCount?: number;
stablePlaySeconds?: number;
}
export interface RecoveryControllerOptions {
onRecover: () => boolean | void | Promise<boolean | void>;
onExhausted: () => void;
}
/**
* 管理稳定播放后的断线恢复状态。
*
* JPlayer 仍负责真正创建和销毁播放器;此控制器只负责恢复策略、
* 重试次数、稳定播放计时,以及直播/回放的恢复位置。
*/
export declare class RecoveryController {
private readonly options;
private static readonly MAX_RECOVER_COUNT;
private static readonly DEFAULT_STABLE_PLAY_SECONDS;
private static readonly MAX_STABLE_PLAY_SECONDS;
private enabled;
private maxRecoverCount;
private recoverResetSeconds;
private recoverCount;
private resetTimer;
private stablePlaying;
private recovering;
private recoveryAttemptId;
constructor(options: RecoveryControllerOptions);
configure(config: RecoveryConfig): void;
shouldRecover(errorType: string | undefined, isNetworkDead: boolean, hasPlayer: boolean): boolean;
tryRecover(onBeforeRecover?: () => void): boolean;
markPlaybackStarted(): void;
teardownSession(): void;
prepareStreamState(stream: StreamOpt, currentSeconds: number): void;
destroy(): void;
private clearResetTimer;
private handleRecoveryFailure;
private normalizeNumber;
private calculateNewBeginTime;
}