UNPKG

@jxstjh/jhvideo

Version:

HTML5 jhvideo base on MPEG2-TS Stream Player

282 lines (281 loc) 7.96 kB
import { PlayerMode, StreamOpt, StreamSpeed, StyleSize } from "./model/playerModel"; import GlobalClient from "./globalClient.js"; interface AudioFormatInfo { codec: any; initCodec: any; mediaInfoCodec: any; originalCodec: any; sampleRate: any; channelCount: any; mimeType: any; playerType: 'video' | 'webgl'; mediaElement: { muted: boolean; paused: boolean; readyState: number; currentTime: number; buffered: Array<{ start: number; end: number; }>; } | null; mseAudio: { sourceBufferReady: boolean; sourceBufferUpdating: boolean; pendingSegments: number; buffered: Array<{ start: number; end: number; }>; mediaSourceReadyState: any; segmentStats: any; demuxStats: any; } | null; } export declare class JPlayerMediaRecorder { mediaElement: unknown; private recorder; emitter: any; private timer$; private $stop; private subscriptiontimer; constructor(mediaElement: unknown, time: any); on(event: any, listener: any): void; off(event: any, listener: any): void; start(): void; stop(): void; destroy(): void; } export declare class JPlayer { el: HTMLElement; playerMode?: PlayerMode; static get version(): any; static isSupported(): any; private features; private globalClient; private nippleIns; private timelineIns; private e; private vid; private prefixName; private _rootHammertime; private vel; private cel; private wrapperel; private joystickele; private videoWrapperEl; private streamOpt; private playUrl; private streamId; private contextMenu; private rectBlock; private playerIns; private _lastMediaInfo; private _currentTime; private _audioCtrl; private _videoStream; private lastDecodedFrame; private readonly MAX_OPEN_STREAM_RETRY_COUNT; private recoveryController; private interactionController?; _talkCtrl: any; _vodPlayer: any; private osdTimeId; private _canPlayTimer; private videoRatio; private playerOnCanPlay; private _playing; private _ptzing; private _ptzLoad; private _drawing; private _setting; private _seeking; _ptzSpeed: number; private _isFullScreen; private _offsetObj; private _ponitDragClick; private _begintime; private _endtime; private _offsetTime; private _loading; private _recording; private _maxRetryTime; private _size; private _timer; private mediaRecorder; private $resize; private $click; private $dblclick; private $mouseenter; private $mouseout; private $mousemove; private $mousewheel; private $contextmenu; private $mousedown; private $mouseup; private _isMouseUp; private subscriptionWrapList$; private subscriptionToolbarList$; private $ptzSubject; private _liveFlow; private _OSDTime; emitter: any; private zoomScale; private _sequence; private _passageRepeat; private set sequence(value); get mediaInfo(): any; /** * 返回当前实际播放链路中的音频格式。 * mediaInfo 可能不包含 PCM 转码后的音频信息,因此这里同时检查 * MSE 初始化段和 WASM/PCM 播放参数。 */ get audioInfo(): AudioFormatInfo; private getAudioFormatInfo; private logAudioFormatOnUnmute; get loading(): boolean; get playerType(): "webgl" | "video"; set playerType(type: "webgl" | "video"); set loading(v: boolean); set styleSize(size: StyleSize); get size(): StyleSize; get seeking(): boolean; set seeking(v: boolean); get recording(): boolean; set recording(v: boolean); set messageError(err: any); private set loadingTxt(value); set error(v: any); get isFullScreen(): boolean; set isFullScreen(v: boolean); get speed(): string; get durationT(): number; set playing(v: boolean); get playing(): boolean; get ptzing(): boolean; set ptzing(v: boolean); private get setting(); private set setting(value); get zooming(): boolean; set zooming(v: boolean); get streamSpeed(): StreamSpeed; set streamSpeed(v: StreamSpeed); set offsetTime(v: number); private get isMobile(); constructor(globalClient: GlobalClient, el: HTMLElement, playerMode?: PlayerMode); private initHammer; on(event: any, listener: any): void; private emitPlayerError; init(stream?: StreamOpt): Promise<boolean>; getFeatureList(): any; initObservables(): void; unSubscribeObservables(): void; unSubscribeToolbarObservables(): void; initDom(): void; initToolBar(): void; creatPlayer(): Promise<any>; private startOsdTimeUpdater; /** * @deprecated 仅保留旧调用兼容,请使用播放器内部的 OSD 更新生命周期。 */ updateOsdTimeThrottle(): void; switchStream(streamNO: number): void; requestInfo(url: string): { url: string; aisleId: string; headers: { "Content-Type": string; Authorization: string; }; }; /** * 归一化重试次数配置。 * 允许下游通过 init 传入,但最终不会超过播放器内部允许的最大值。 */ private normalizeRetryCount; sendCmdPtz(cmd: number, operate?: { index: number; name?: string; state?: number; }): Promise<void>; sendCmdDirection(direction: number): Promise<any>; sendCmdPreset({ index, name, state }: { index: number; name?: string; state?: number; }): Promise<any>; openStream(stream: StreamOpt): Promise<any>; private initContextMenu; private getRightMenu; private bindEvents; private unBindEvents; setFullScreen(value?: boolean): void; private fullScreenHandler; private setMCPosition; private getPtzPosition; /** * 3 2 1 * 4 * 0 * 5 6 7 * */ private getPtzPositionFlag; private appendMockCursor; private showToolbars; private hideToolbars; private showSettingMenu; private hideSettingMenu; hideContextMenu(): void; private checkEleSize; private addPtzClass; private clearPtzClass; play(isGive?: boolean): void; pause(): void; private resetPlayerStatus; refresh(streamOpt?: StreamOpt): Promise<boolean>; toggleVod(streamOpt?: StreamOpt): Promise<boolean>; private setCanvasSize; /** * 绘制矩形框 **/ private switchDraw; private videoIsOriginalState; private toggleDraw; drawBtnHandle(e: any): void; private setRectRatio; getShape(): Promise<any>; setFillRatio(): void; resetRatio(): void; ratioAdjust(W?: number, H?: number): void; record(time?: number): Promise<void>; /** * 抓取解复用前的 WebSocket 原始码流,用于音视频诊断。 * 为避免调试数据长期占用内存,单次最长限制为 60 秒。 */ captureRawStream(seconds?: number): Promise<Blob>; screenshot(): void; toggleSetting(): void; togglePtz(): void; toggleZoom(): void; private emptyVideoDom; private emptyVideoTool; toggleVodOrigin(e: any): void; toggleVodOriginForNumber(vod: number): void; private updateProcess; private updateTimeLine; private updateProcessBarView; private updateProcessClockView; private getOffetTime; private getOffetClientTime; private getOffetX; initNipple(): void; sendPtzCmd(cmd: any, param?: number): void; sendAudio(): any; destroyNipple(): void; close(): void; private teardownPlaybackSession; clearOsdTimeId(): void; destroy(): void; private destroyMediaRecorder; } export default JPlayer;