npaw-plugin-nwf
Version:
NPAW's Plugin
55 lines (54 loc) • 1.95 kB
TypeScript
import { SegmentIndex, SegmentMatchInfo } from './ManifestModel';
export interface DashTimelineEntry {
t?: number;
d: number;
r: number;
}
/**
* Template-based DASH segment index aligned with Android DashSegmentIndex.
* Supports $Number$, $Time$, $Bandwidth$, $RepresentationID$ with format tags.
*/
export default class DashSegmentIndex implements SegmentIndex {
readonly startNumber: number;
readonly isLive: boolean;
readonly hasUniqueSegmentUris = true;
readonly resolvedMediaTemplate: string;
readonly resolvedInitUri: string | undefined;
private readonly mediaTemplate;
private readonly timescale;
private readonly bandwidth;
private readonly representationId;
private readonly timeline;
private readonly presentationTimeOffset;
private readonly fixedSegmentDuration;
private readonly manifestDurationMs;
private readonly usesFixedDuration;
private readonly usesTimeTemplate;
private templateRegex;
private initRegex;
constructor(opts: {
mediaTemplate: string;
initTemplate?: string;
timescale?: number;
startNumber?: number;
bandwidth?: number;
representationId?: string;
timeline?: DashTimelineEntry[];
isLive?: boolean;
presentationTimeOffset?: number;
fixedSegmentDuration?: number;
manifestDurationMs?: number;
});
get segmentCount(): number;
get targetDurationSecs(): number;
get totalDurationSecs(): number;
getSegmentUri(segmentNumber: number): string | undefined;
getSegmentInfoForUri(chunkUri: string, byteRangeOffset?: number): SegmentMatchInfo | undefined;
matchesInitUri(chunkUri: string): boolean;
getSegmentInfoByNumber(segmentNumber: number): SegmentMatchInfo | undefined;
private buildMatchInfo;
private resolveSegment;
private findSegmentByTime;
private getTemplateRegex;
private getInitRegex;
}