@byomakase/omakase-player
Version:
## Omakase Player - Open source JavaScript framework for building frame accurate video experiences
59 lines (58 loc) • 3.1 kB
TypeScript
import { Observable, Subject } from 'rxjs';
import { Video, VideoLoadOptions } from './model';
import { BaseVideoLoader } from './video-loader';
import Hls, { AudioTracksUpdatedData, AudioTrackSwitchingData, Events as HlsEvents, HlsConfig, MediaKeySessionContext, MediaPlaylist } from 'hls.js';
import { OmpAudioTrack, OmpAudioTrackCreateType, OmpNamedEventEventName } from '../types';
import { VideoControllerApi } from './video-controller-api';
import { AudioGroup } from '../m3u8/m3u8.model';
import { M3u8File } from '../m3u8/m3u8-file';
export type HlsLicenseXhrSetupFn = (xhr: XMLHttpRequest, url: string, keyContext: MediaKeySessionContext, licenseChallenge: Uint8Array) => void | Uint8Array | Promise<Uint8Array | void>;
export interface OmpHlsConfig extends HlsConfig {
/**
* Should fetch hls.js embedded subtitles
*/
fetchManifestSubtitleTracks: boolean;
/**
* Should display hls.js subtitles
*/
subtitleDisplay: boolean;
/**
* Function that creates hls.js pre-processor function {@link HlsConfig.licenseXhrSetup} for modifying license requests (https://github.com/video-dev/hls.js/blob/master/docs/API.md#licensexhrsetup)
* If set, created function takes precedence over {@link licenseXhrSetup}
*
* @param sourceUrl
* @param options
*/
loadVideoLicenseXhrSetup?: (sourceUrl: string, options?: VideoLoadOptions | undefined) => HlsLicenseXhrSetupFn;
}
type OmpHlsEventListener = (event: any, data: any) => void;
export interface OmpHlsAudioTrackPackage {
audioTrackName: string;
audioGroup: AudioGroup;
m3u8File: M3u8File;
}
export declare class VideoHlsLoader extends BaseVideoLoader {
_eventMapping: Map<OmpNamedEventEventName, HlsEvents>;
protected _hlsConfig: Partial<OmpHlsConfig>;
protected _hls: Hls | undefined;
protected _hlsEventListenersMap: Map<OmpNamedEventEventName, OmpHlsEventListener>;
protected _onHlsAudioTracksUpdated$: Subject<AudioTracksUpdatedData>;
protected _onHlsAudioTrackSwitched$: Subject<AudioTrackSwitchingData>;
protected _videoEventBreaker$: Subject<void>;
constructor(videoController: VideoControllerApi);
loadVideo(sourceUrl: string, options?: VideoLoadOptions | undefined): Observable<Video>;
protected mapToOmpAudioTrack(mediaPlaylist: MediaPlaylist): OmpAudioTrack;
protected onHlsError(event: any, data: any): void;
setActiveAudioTrack(ompAudioTrackId: string): Observable<void>;
protected setActiveHlsAudioTrack(hlsAudioTrackId: number): Observable<void>;
exportAudioTrack(ompAudioTrackId: string): Observable<OmpAudioTrackCreateType>;
updateActiveNamedEventStreams(eventNames: OmpNamedEventEventName[]): void;
getHls(): Hls | undefined;
protected isEventSupported(eventName: OmpNamedEventEventName): boolean;
protected resolveHlsEventName(eventName: OmpNamedEventEventName): HlsEvents;
protected createHlsEventListener(eventName: OmpNamedEventEventName): OmpHlsEventListener;
protected overrideHlsMethods(): void;
protected destroyHls(): void;
destroy(): void;
}
export {};