hjplayer
Version:
hjplayer, a HTML5 Player, can play flv and hls by Media Source Extension, based on typescript;
121 lines (120 loc) • 4.2 kB
TypeScript
import EventEmitter from 'eventemitter3';
import MediaInfo from './MediaInfo';
import typeSupportData from '../Interfaces/typeSupportData';
import TempNavigatorType from '../Interfaces/TempNavigator';
import Metadata from '../Interfaces/Metadata';
import ErrorData from '../Interfaces/ErrorData';
import { MediaSegment, InitSegment } from '../Interfaces/Segment';
import MediaConfig from '../Interfaces/MediaConfig';
import HJPlayerConfig from '../Interfaces/HJPlayerConfig';
import { TSExtraData } from '../Interfaces/TSExtraData';
import TSManifest from '../Interfaces/TSManifest';
declare class TransmuxingController {
/**
* 文件标签
*/
Tag: string;
/**
* 事件中心
*/
private _emitter;
/**
* 媒体设置
*/
private _mediaDataSource;
/**
* 用户设置
*/
private _config;
/**
* MediaSource对MP4, MEPG, MP3格式是否支持
*/
private typeSupported;
/**
* 上一级缓存的关于navigator的数据, 用于在worker中解码TS音视频的必要参数
*/
private navigator;
/**
* 当前播放的媒体片段的索引值, 在MediaConfig中无segment选项是 0
*/
private _currentSegmentIndex;
/**
* 媒体信息
*/
private _mediaInfo;
/**
* IO 控制器, 主要负责缓存loader发送过来的数据
*/
private _ioctl;
/**
* 未加载时 挂起的 seek 时间点
*/
private _pendingSeekTime;
/**
* 等待解决的seek时间点 (单位: 毫秒)
*/
private _pendingResolveSeekPoint;
/**
* 统计信息报告定时器
*/
private _statisticsReportTimer;
/**
* 新版解码器 待实现
*/
private _mediaCodec;
/**
* 旧版解码器
*/
private _demuxer;
/**
* 旧版转码器
*/
private _remuxer;
constructor(mediaDataSource: MediaConfig, config: HJPlayerConfig, typeSupported: typeSupportData, navigator: TempNavigatorType);
destroy(): void;
on(event: string, listener: EventEmitter.ListenerFn): void;
off(event: string, listener: EventEmitter.ListenerFn): void;
start(): void;
/**
* 加载segment
* @param { Number } segmentIndex - segment 索引值
* @param { Number } optionalFrom - 选择的开始地点
*/
_loadSegment(segmentIndex: number, optionalFrom?: number): void;
stop(): void;
_internalAbort(): void;
pause(): void;
resume(): void;
seek(milliseconds: number): void;
/**
* 根据要跳转的毫秒数和每个Segment的timestampBase的比较, 来查找相应的Segment索引值
* @param milliseconds 跳转的毫秒数
*/
_searchSegmentIndexContains(milliseconds: number): number;
/**
* 当loader第一次发送过来数据时, 先判断解码器是否能解码数据, 然后初始化解码器, 绑定事件, 否则触发错误
* @param { ArrayBuffer } data flv 是 array m3u8的loader是Uint8Array
* @param { Number } byteStart 本次收到的数据的偏移量
* @param { Number } receivedLength 累计的bytelength
* @param { Object } extraData m3u8的fragmentLoader所发出来的数据 详见 fragment-loader
*/
_onInitChunkArrival(data: ArrayBuffer, byteStart: number, extraData: TSExtraData): number;
_onMediaInfo(mediaInfo: MediaInfo): void;
_onMetaDataArrived(metadata: Metadata): void;
_onScriptDataArrived(data: any): void;
_onIOSeeked(): void;
_onIOComplete(extraData: number): void;
_onIORedirect(redirectedURL: string): void;
_onIORecoveredEarlyEof(): void;
_onIOException(type: string, info: ErrorData): void;
_onDemuxException(type: string, info: ErrorData): void;
_onRemuxerInitSegmentArrival(type: string, initSegment: InitSegment): void;
_onRemuxerMediaSegmentArrival(type: string, mediaSegment: MediaSegment): void;
_enableStatisticsReporter(): void;
_disableStatisticsReporter(): void;
_reportSegmentMediaInfo(segmentIndex: number): void;
_reportStatisticsInfo(): void;
_onManifestParsed(data: TSManifest): void;
_mediaCodecBindEvents(): void;
}
export default TransmuxingController;