export interface Web265JsExtraConfig { moovStartFlag?: boolean rawFps?: number autoCrop?: boolean core?: 0 | 1 coreProbePart?: number ignoreAudio?: 0 | 1 probeSize?: number } export interface Web265JsConfig { /** *The type of the file to be played, do not fill in the automatic identification */ type?: 'mp4' | 'hls' | 'ts' | 'raw265' | 'flv' /** * playback window dom id value */ player: string /** * the video window width size */ width: number /** * the video window height size */ height: number /** * player token value */ token: string extInfo?: Web265JsExtraConfig } export interface Web265JsMediaInfo { audioNone: boolean durationMs: number fps: number sampleRate: number size: { height: number width: number } videoCodec: 0 | 1 isHEVC: boolean videoType: Web265JsConfig['type'] } interface New265WebJs { onSeekFinish(): void onRender( width: number, height: number, imageBufferY: typeof Uint8Array, imageBufferB: typeof Uint8Array, imageBufferR: typeof Uint8Array ): void onLoadFinish(): void onPlayTime(videoPTS: number): void onPlayFinish(): void onCacheProcess(cPts: number): void onReadyShowDone(): void onLoadCache(): void onLoadCacheFinshed(): void onOpenFullScreen(): void onCloseFullScreen(): void do(): void pause(): void isPlaying(): boolean setRenderScreen(state: boolean): void seek(pts: number): void setVoice(volume: number): void mediaInfo(): Web265JsMediaInfo fullScreen(): void closeFullScreen(): void playNextFrame(): void snapshot(): void release(): void setPlaybackRate(rate: number): void getPlaybackRate(): number } declare type new265webJsFn = ( url: string, config: Web265JsConfig ) => New265WebJs declare global { interface Window { new265webjs: new265webJsFn } } export default class H265webjsModule { static createPlayer: (url: string, config: Web265JsConfig) => New265WebJs static clear(): void }