export default class Mp4Plugin extends BasePlugin { static get defaultConfig(): { maxBufferLength: number; minBufferLength: number; disableBufferBreakCheck: boolean; waitingTimeOut: number; waitingInBufferTimeOut: number; waitJampBufferMaxCnt: number; tickInSeconds: number; reqOptions: any; closeDowngrade: boolean; preferMMS: boolean; }; static get version(): any; constructor(options: any); mp4: MP4; mse: MSE; _waitAdjustTimeCnt: number; _lastCheckTime: number; _removeBuffeEndTime: number; _pendingPromises: any[]; attachEvents(): void; detachEvents(): void; /** * 代理播放器的相关API * platNext、_startInit */ _proxyPlayer(): void; _playerStartInit(url: any): void; _initPromise: ProxyPromise; useVideoLoad: boolean; initMp4(): ProxyPromise; _curLoadSegmentIdx: any; _onMp4DataCallBack: () => void; _onMp4MetaReady: (meta: any) => void; setConfig(newConfig: any): void; /** * 播放下一个 * @param { any } newConfig 播放器 */ playNext(newConfig: any): void; _defInited: boolean; _MSEError: boolean; checkDegrade(error: any): boolean; _onMp4Error: (err: any) => void; _errorHandler(err: any): void; /** * @@description 降级到video播放 */ _startDegradedPlayback(err: any, preState: any): void; _currentTime: any; __onmetadataHandle: any; _addPendingPromise(p: any): void; _removePendingPromise(p: any): void; _cancelPendingPromises(): void; _removeAndRejectInitPromise(error: any): void; /** * 初始化MSE信息 * @param {*} mp4 * @param {*} meta * @param {*} promise * @param {*} preloadTimeCache */ _initMse(meta: any): Promise; _isMseInit: boolean; /** * 销毁MSE对象 // 在重用MSE的时候,如果降级到video原生播放,单实例复用时,需要重新绑定url.所以降级到video原生的需要删除mse对象 */ destroyMSE(): Promise; _onTimeUpdate(): void; checkRemoveOldBitrateBuffer(): void; _isInBuffer(item: any, gap?: number): boolean; _loadData(): Promise; _loadDataSuccess: (data: any) => void; bufferEndTime: number; _onWaiting: () => void; _waitInBufferTimer: NodeJS.Timeout; _onSeeking: () => Promise; endofstream: boolean; _appendInitSeg(initSeg: any): void; _appendBuffer(codec: any, buffer: any, context: {}, state: any): void; /** *清除sourcebuffer中播放过的数据 */ _checkRemoveSourceBuffer(sourceBufferRange: any, currentTime: any, mustClear: any): void; _removeBufferTimer: NodeJS.Timeout; _checkRemoveBufferLastTime: number; /** * 检查是否播放完成 * @returns {Boolean} */ _isEnded(): boolean; /** * 切换播放源,用于同一个视频的不同播放源切换 * @param { string || Array<{ src: string, [propName: string]: any; // 扩展定义}> } url */ switchURL(definitionInfo: any): void; oldChangeDefinition(to: any, from: any): void; _changeDefState: { currentTime: any; paused: boolean; }; _changeDefineCanPlay: any; changeDefineCanPlay: (currentTime: any, paused: any, from: any, to: any) => void; changeDefinition: (to: any, from: any) => Promise; _isChangeDefinition: boolean; /** * 卡顿超时检查启用 * 卡顿超过一定时间则至直接降级处理 */ _loadStuckCheck(): void; _bufferBreakFlag: number; _bufferBreakTimer: any; _lastCurrentTime: any; get isDestroy(): boolean; _replayHook: () => boolean; _retryHook: () => boolean; _stopProgress(): void; _hasStartProgress: boolean; _requestTimer: any; _startProgress(): void; log(message: any, ...optionalParams: any[]): void; /** * 重置当前插件的状态 */ _reset(): void; _unloadVideo(): void; } import { BasePlugin } from "xgplayer"; import MP4 from "./mp4"; import { MSE } from "../../xgplayer-streaming-shared/es/mse"; import ProxyPromise from "./util/proxy-promise";