xgplayer-mp4
Version:
xgplayer plugin for mp4 transform to fmp4
133 lines (132 loc) • 4.25 kB
TypeScript
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<void>;
_isMseInit: boolean;
/**
* 销毁MSE对象 // 在重用MSE的时候,如果降级到video原生播放,单实例复用时,需要重新绑定url.所以降级到video原生的需要删除mse对象
*/
destroyMSE(): Promise<void>;
_onTimeUpdate(): void;
checkRemoveOldBitrateBuffer(): void;
_isInBuffer(item: any, gap?: number): boolean;
_loadData(): Promise<void>;
_loadDataSuccess: (data: any) => void;
bufferEndTime: number;
_onWaiting: () => void;
_waitInBufferTimer: NodeJS.Timeout;
_onSeeking: () => Promise<void>;
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<void>;
_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";