hjplayer
Version:
hjplayer, a HTML5 Player, can play flv and hls by Media Source Extension, based on typescript;
89 lines (88 loc) • 2.69 kB
TypeScript
/**
* playlist-loader
*/
import EventEmitter from 'eventemitter3';
import { PlaylistLevelType, XhrLoaderResponse, FragLoaderContext, XhrLoaderStats, ErrorData } from '../Interfaces/Loader';
import MediaConfig from '../Interfaces/MediaConfig';
export default class PlaylistLoader {
private _emitter;
/**
* 是否中断请求
*/
private _requestAbort;
/**
* 拉直播M3U8的定时器
*/
private timer;
/**
* m3u8地址
*/
url: string;
/**
* 请求m3u8地址的配置
*/
dataSource: MediaConfig;
/**
* m3u8解析返回数据
*/
private currentPlaylist;
/**
* 最新的m3u8文档内容
*/
private lastestM3U8Content;
private Tag;
constructor(dataSource: MediaConfig);
/**
* 绑定事件
* @param { String } event
* @param { Function } listener
*/
on(event: string, listener: EventEmitter.ListenerFn): void;
/**
* 取消绑定事件
* @param { String } event
* @param { Function } listener
*/
off(event: string, listener: EventEmitter.ListenerFn): void;
/**
* 初始化XHR对象, 加载M3U8文件;
*/
load(): void;
/**
* 停止,直播暂时没实现暂停
*/
stop(): void;
/**
* 加载M3U8文件成功
*/
loadSuccess(response: XhrLoaderResponse, stats: XhrLoaderStats, context: FragLoaderContext, networkDetails?: any): void;
/**
* 取消loader, 清除定时器, 移除自身绑定的事件
*/
abort(): void;
/**
* 销毁功能
*/
destroy(): void;
/**
* 处理下载的M3U8文件(普通M3U8 ts文件列表)
*/
_handleTrackOrLevelPlaylist(response: XhrLoaderResponse, stats: XhrLoaderStats, context: FragLoaderContext, networkDetails: any): void;
/**
* 处理下载的M3U8文件(清晰度选择)
*/
_handleMasterPlaylist(response: XhrLoaderResponse, stats: XhrLoaderStats, context: FragLoaderContext, networkDetails: any): void;
/**
* 处理解析M3U8文件解析错误
* @param response
* @param context
* @param reason
* @param networkDetails
* @private
*/
_handleManifestParsingError(response: XhrLoaderResponse, context: FragLoaderContext, reason: string, networkDetails: any): void;
_getResponseUrl(response: XhrLoaderResponse, context: FragLoaderContext): string;
mapContextToLevelType(context: FragLoaderContext): PlaylistLevelType;
loadError(response: ErrorData, context: FragLoaderContext, xhr: XMLHttpRequest | null): void;
loadTimeout(stats: XhrLoaderStats, context: FragLoaderContext, xhr: XMLHttpRequest | null): void;
}