import type FlvJs from 'flv.zv.js'; import type Hls, { HlsConfig } from 'hls.js'; import type React from 'react'; import type Api from './api'; import type VideoEventInstance from './event'; export type FlvPlayerConfig = { mediaDataSource: FlvJs.MediaDataSource; config: FlvJs.Config; }; export interface ISinglePlayerProps { url?: string; className?: string; children?: React.ReactNode; muted?: boolean; scale?: boolean; autoPlay?: boolean; playsInline?: boolean; preload?: string; poster?: string; loop?: boolean; type?: 'flv' | 'hls' | 'native'; hideContrallerBar?: boolean; isLive?: boolean; rightExtContents?: React.ReactNode; rightMidExtContents?: React.ReactNode; leftExtContents?: React.ReactNode; leftMidExtContents?: React.ReactNode; customTimeLine?: React.ReactNode; errorReloadTimer?: number; flvConfig?: FlvPlayerConfig; hlsConfig?: HlsConfig; reload?: () => void; onCanPlayerInit?: () => void; videoEvents?: CustomEvent[]; playerEvents?: CustomEvent[]; } type OmitPlayerProps = 'customTimeLine' | 'onCanPlayerInit' | 'isLive' | 'reload' | 'type'; export interface IFrontendPlayerProps extends Omit { begin?: number; end?: number; onSeek(time: number): void; } export interface ISegmentPlayerProps extends Omit { segments?: ISegmentType[]; begin?: number; } export const SinglePlayer: React.FunctionComponent; export const FrontendPlayer: React.FunctionComponent; export const SegmentPlayer: React.FunctionComponent; export interface EventName { RELOAD: 'reload'; //手动视频重载 RELOAD_FAIL: 'reloadFail'; // 视频出错,重连失败 RELOAD_SUCCESS: 'reloadSuccess'; //视频出错,重连成功 ERROR: 'error'; //视频出错 ERROR_RELOAD: 'errorRload'; //视频出错,自动重连 HISTORY_PLAY_END: 'historyPlayEnd'; //历史视频列表播放结束 SEEK: 'seek'; //跳跃播放时间 TRANSFORM: 'transform'; //视频容器缩放 CHANGE_PLAY_INDEX: 'changePlayIndex'; //历史视频列表播放索引改变 HIDE_CONTRALLER: 'hideContraller'; SHOW_CONTRALLER: 'showContraller'; CLEAR_ERROR_TIMER: 'clearErrorTimer'; } export type EventInfo = { type: string; listener: ((...args: any) => void)[]; }; export type ExportPlayerType = { video: HTMLVideoElement; container: HTMLElement; api: Api; event: VideoEventInstance; plugins: [FlvJs.Player, Hls]; }; export interface ISegmentType { url?: string; duration: number; } export type CustomEvent = [string, () => void];