UNPKG

nsplayer

Version:

NSPlayer, a player which supports quality list of dash and hls

132 lines (131 loc) 6.11 kB
import { Event } from '@newstudios/common'; export declare type Size = { width: number; height: number; }; declare global { interface HTMLMediaElementEventMap { enterpictureinpicture: globalThis.Event; leavepictureinpicture: globalThis.Event; webkitplaybacktargetavailabilitychanged: WebKitPlaybackTargetAvailabilityEvent; } /** airplay */ interface WebKitPlaybackTargetAvailabilityEvent extends globalThis.Event { availability: 'available' | 'not-available'; } /** airplay */ interface Window { WebKitPlaybackTargetAvailabilityEvent?: WebKitPlaybackTargetAvailabilityEvent; } interface Document { readonly pictureInPictureElement?: HTMLVideoElement | null; } interface HTMLVideoElement { readonly webkitShowPlaybackTargetPicker?: () => void; readonly webkitSupportsFullscreen?: boolean; readonly webkitDisplayingFullscreen?: boolean; readonly webkitEnterFullscreen?: () => void; readonly webkitExitFullscreen?: () => void; } } export declare const VideoEventNameMap: { readonly onEncypted: "encrypted"; readonly onWaitingForKey: "waitingforkey"; readonly onCanPlay: "canplay"; readonly onCanPlayThrough: "canplaythrough"; readonly onCueChange: "cuechange"; readonly onDurationChange: "durationchange"; readonly onEmptied: "emptied"; readonly onEnded: "ended"; readonly onError: "error"; readonly onLoad: "load"; readonly onLoadedData: "loadeddata"; readonly onLoadedMetaData: "loadedmetadata"; readonly onLoadStart: "loadstart"; readonly onPause: "pause"; readonly onPlay: "play"; readonly onPlaying: "playing"; readonly onProgress: "progress"; readonly onRateChange: "ratechange"; readonly onSeeked: "seeked"; readonly onSeeking: "seeking"; readonly onStalled: "stalled"; readonly onSuspend: "suspend"; readonly onTimeUpdate: "timeupdate"; readonly onVolumeChange: "volumechange"; readonly onWaiting: "waiting"; readonly onEnterPictureInPicture: "enterpictureinpicture"; readonly onLeavePictureInPicture: "leavepictureinpicture"; readonly onWebkitPlaybackTargetAvailabilityChanged: "webkitplaybacktargetavailabilitychanged"; }; export declare type VideoEventNameMap = typeof VideoEventNameMap; declare type BasePlayerEventName = keyof VideoEventNameMap; export declare type BasePlayerWithEvent = { readonly [key in BasePlayerEventName]: Event<HTMLMediaElementEventMap[VideoEventNameMap[key]]>; }; export declare type VideoEventName = keyof VideoEventNameMap; export declare const VideoEventNameArray: ("onEncypted" | "onWaitingForKey" | "onCanPlay" | "onCanPlayThrough" | "onCueChange" | "onDurationChange" | "onEmptied" | "onEnded" | "onError" | "onLoad" | "onLoadedData" | "onLoadedMetaData" | "onLoadStart" | "onPause" | "onPlay" | "onPlaying" | "onProgress" | "onRateChange" | "onSeeked" | "onSeeking" | "onStalled" | "onSuspend" | "onTimeUpdate" | "onVolumeChange" | "onWaiting" | "onEnterPictureInPicture" | "onLeavePictureInPicture" | "onWebkitPlaybackTargetAvailabilityChanged")[]; export declare const Quality: { readonly Q240: "240p"; readonly Q320: "320p"; readonly Q360: "360p"; readonly Q480: "480p"; readonly Q540: "540p"; readonly Q640: "640p"; readonly Q720: "720p"; readonly Q1080: "1080p"; readonly Q1440: "1440p"; readonly Q2160: "2160p"; }; export declare type QualityMap = typeof Quality; export declare type QualityKey = keyof QualityMap; export declare type Quality = QualityMap[QualityKey]; export declare function is4K(quality: Quality): quality is '2160p'; export declare function is2K(quality: Quality): quality is '1440p'; export declare function isFHD(quality: Quality): quality is '1080p'; export declare function isHD(quality: Quality): quality is '720p'; export declare function isSD(quality: Quality): quality is '640p' | '540p'; export declare const MimeTypeMap: { readonly m3u8: readonly ["application/x-mpegURL", "application/vnd.apple.mpegURL"]; readonly mpd: readonly ["application/dash+xml"]; readonly mp4: readonly ["video/mp4"]; readonly m4s: readonly ["video/iso.segment"]; readonly m4a: readonly ["audio/mp4"]; readonly mp3: readonly ["audio/mpeg"]; readonly aac: readonly ["audio/aac"]; readonly ts: readonly ["video/mp2t"]; }; export declare type MimeTypeMap = typeof MimeTypeMap; export declare type Extension = keyof MimeTypeMap; export declare type MimeType = MimeTypeMap[Extension][number]; export declare type SupportedExtension = 'm3u8' | 'mpd' | 'mp4'; export declare type SupportedMimeType = MimeTypeMap[SupportedExtension][number]; export declare const SupportedMimeTypes: ("application/x-mpegURL" | "application/vnd.apple.mpegURL" | "application/dash+xml" | "video/mp4")[]; export declare const MimeTypes: ("application/x-mpegURL" | "application/vnd.apple.mpegURL" | "application/dash+xml" | "video/mp4" | "video/iso.segment" | "audio/mp4" | "audio/mpeg" | "audio/aac" | "video/mp2t")[]; export declare function isSupportedMimeType(mimeType: string): mimeType is SupportedMimeType; export declare function isHls(mimeType: string): mimeType is MimeTypeMap['m3u8'][number]; export declare function isDash(mimeType: string): mimeType is MimeTypeMap['mpd'][number]; export declare function isMp4(mimeType: string): mimeType is MimeTypeMap['mp4'][number]; export declare function getMimeType(src: string): MimeType | undefined; export declare function isSafari(): boolean; export declare function isMobile(): boolean; export declare function assert<T>(target: T, message?: string): asserts target is NonNullable<T>; /** * format the seconds time * @param timeInSeconds the number of seconds * @param format h:mm:ss.SSS */ export declare function formatTime(timeInSeconds: number, format: string): string; export interface Source { src: string; fps?: string; width?: number; height?: number; bitrate?: number; mime?: MimeType; } export interface ChangeDetail<T> { prev: T; next: T; } export {};