LL-HLS MPEG-TS KLV metadata is lost between parts in hls.js 1.7.1
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 16.9k
- Forks
- 2.8k
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 27
Description
What version of HLS.js are you using?
1.7.1
What browser (including version) are you using?
153.0.8010.37 (Official Build) (64-bit)
What OS (including version) are you using?
Windows 11 x64
Test stream
A stream using this Truck.ts video with embedded KLV metadata: https://www.arcgis.com/home/item.html?id=55ec6f32d5e342fcbfba376ca2cc409a#overview, with audio stripped out. Here are specific proped key elements of the .ts file: stream 0: codec_long_name: "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10" codec_type: "video" pix_fmt: "yuv420p" stream 1: codec_long_name: "SMPTE 336M Key-Length-Value (KLV) metadata" codec_type: "data" codec_tag_string: "KLVA", "format": { "nb_streams": 2, "nb_programs": 1, "format_name": "mpegts", "format_long_name": "MPEG-TS (MPEG-2 Transport Stream)", "start_time": "5.353911", "duration": "149.649489", "size": "96365980", "bit_rate": "5151556", "probe_score": 50 }
Configuration
{
debug: true,
enableWorker: true,
lowLatencyMode: true, <---- Change this between true or false to see observed behavior.
manifestLoadPolicy: {
default: {
maxTimeToFirstByteMs: null,
maxLoadTimeMs: 20000,
timeoutRetry: {
maxNumRetry: 5,
retryDelayMs: 0,
maxRetryDelayMs: 0
},
errorRetry: {
maxNumRetry: 5,
retryDelayMs: 1000,
maxRetryDelayMs: 8000
}
}
},
startOnSegmentBoundary: true,
liveSyncDuration: 0.5,
liveMaxLatencyDuration: 10,
highBufferWatchdogPeriod: 3,
maxLiveSyncPlaybackRate: 2,
startFragPrefetch: false,
forceKeyFrameOnDiscontinuity: false,
liveDurationInfinity: false,
liveSyncMode: 'buffered',
enableEmsgKLVMetadata: true
}
Additional player setup steps
No response
Checklist
- The issue observed is not already reported by searching on Github under https://github.com/video-dev/hls.js/issues
- The issue occurs in the stable client (latest release) on https://hlsjs.video-dev.org/demo and not just on my page
- The issue occurs in the latest client (main branch) on https://hlsjs-dev.video-dev.org/demo and not just on my page
- The stream has correct Access-Control-Allow-Origin headers (CORS)
- There are no network errors such as 404s in the browser console when trying to play the stream
Steps to reproduce
Confirming klv metadata is parsed and available when lowLatencyMode is false:
- Play a stream that has KLV metadata embedded with lowLatencyMode set to false in the HLS Config.
- Observe that KLV metadata (
FRAG_PARSING_METADATA) is parsed and available for use.
From the logs, a snippet of this looks like this:
main-PQQNIDTS.js:7643 [log] > [stream-controller]: Loading main sn: 5 of main playlist 0 (frag:[20.01998888888889-24.023999999999887]) cc: 0 [2-5], target: 20.01998888888889
main-PQQNIDTS.js:7643 [log] > [stream-controller]: IDLE->FRAG_LOADING
main-PQQNIDTS.js:7643 [log] > [stream-controller]: load progress main sn: 5 of main playlist 0 (frag:[20.01998888888889-24.023999999999887]) chunk: 1
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > KLV metadata PID found: 257
main-PQQNIDTS.js:7643 [log] > [stream-controller]: FRAG_LOADING->PARSING
main-PQQNIDTS.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 5 of main playlist 0 cc: 0 offset: -13.3619 bytes: 2503073
main-PQQNIDTS.js:7669 FRAG_PARSING_METADATA {sn: 5, part: Us, level: 0, samples: Array(18), id3Samples: {…}, …}
main-PQQNIDTS.js:7643 [log] > [stream-controller]: Loaded main sn: 5 of main playlist 0 (bytes 2584248)
main-PQQNIDTS.js:7643 [log] > [stream-controller]: load complete main sn: 5 of main playlist 0 (frag:[20.01998888888889-24.023999999999887])
main-PQQNIDTS.js:7643 [log] > [transmuxer.ts]: Flushed main sn: 5 of main playlist 0
main-PQQNIDTS.js:7643 [log] > [stream-controller]: update level timing main sn: 5 of main playlist 0 (frag:[20.01998888888889-24.023999999999887])
main-PQQNIDTS.js:7643 [log] > [stream-controller]: PARSING->PARSED
main-PQQNIDTS.js:7643 [log] > [stream-controller]: Parsed main sn: 5 of main playlist 0 (frag:[20.02-24.02402222222222])
main-PQQNIDTS.js:7643 [log] > [stream-controller]: Buffered main sn: 5 of main playlist 0 (frag:[20.02-24.02402222222222]) > buffer:[0.000-24.024])
main-PQQNIDTS.js:7643 [log] > [stream-controller]: PARSED->IDLE
Confirming klv metadata is NOT parsed and available when lowLatencyMode is true:
- Play a stream that has KLV metadata embedded with lowLatencyMode set to true in the HLS config.
- Observe that KLV metadata (
FRAG_PARSING_METADATA) is NOT parsed and is NOT available for use.
From the logs, a snippet of this looks like this:
main-NRDO6RC7.js:7643 [log] > [stream-controller]: Loading main sn: 1 part: 0 (20/21) of main playlist 0 (part:[4.004011111111-4.2042]INDEPENDENT=YES) cc: 0 [0-0], target: 8.007977 range:0-261320
main-NRDO6RC7.js:7643 [log] > [stream-controller]: IDLE->FRAG_LOADING
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 1 part: 0 of main playlist 0 (part:[4.004011111111-4.2042]INDEPENDENT=YES) chunk: 1
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7643 [warn] > [mp4-remuxer]: AVC: 4004 ms (-360357dts) overlapping between fragments detected at 4.004
[... shortened stacktrace... se full logs further down for details...]
main-NRDO6RC7.js:7643 [log] > [mp4-remuxer]: Video: Initial PTS/DTS adjusted: 21370/21370, delta: -4004 ms
main-NRDO6RC7.js:7643 [log] > [stream-controller]: FRAG_LOADING->PARSING
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 1 p: 0 of main playlist 0 cc: 0 offset: -13.3619 bytes: 254378
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 1 part: 1 of main playlist 0 (part:[4.2042-4.4044]INDEPENDENT=NO) chunk: 2
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7643 [warn] > [mp4-remuxer]: AVC: 4004 ms (-360359dts) overlapping between fragments detected at 4.204
[... shortened stacktrace... se full logs further down for details...]
main-NRDO6RC7.js:7643 [log] > [mp4-remuxer]: Video: Initial PTS/DTS adjusted: 21570/21570, delta: -4004 ms
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 1 p: 1 of main playlist 0 cc: 0 offset: -13.3619 bytes: 100184
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load complete main sn: 1 part: 1 of main playlist 0 (part:[4.2042-4.4044]INDEPENDENT=NO)
main-NRDO6RC7.js:7643 [log] > [transmuxer.ts]: Flushed main sn: 1 part: 1 of main playlist 0
main-NRDO6RC7.js:7643 [log] > [stream-controller]: update level timing main sn: 1 part: 1 of main playlist 0 (part:[4.2042-4.4044]INDEPENDENT=NO)
main-NRDO6RC7.js:7643 [log] > [stream-controller]: PARSING->PARSED
main-NRDO6RC7.js:7643 [log] > [stream-controller]: Parsed main sn: 1 part: 1 of main playlist 0 (part:[4.2042-4.4044]INDEPENDENT=NO)
main-NRDO6RC7.js:7643 [log] > [stream-controller]: Buffered main sn: 1 part: 1 of main playlist 0 (part:[4.2042-4.4044]INDEPENDENT=NO) > buffer:[0.000-8.408])
main-NRDO6RC7.js:7643 [log] > [stream-controller]: PARSED->IDLE
Expected behaviour
KLV MISB support was added in 1.7.0 in https://github.com/video-dev/hls.js/pull/7668
For a MPEG-TS stream containing KLV on PID 257, hls.js should emit parsed metadata to the application through:
Hls.Events.FRAG_PARSING_METADATA
This should work when loading both complete HLS fragments and LL-HLS partial segments (#EXT-X-PART), with KLV metadata samples having usable timestamps.
What actually happened?
With lowLatencyMode: false, hls.js:
- Detects KLV PID 257 repeatedly while parsing each approximately 4-second MPEG-TS fragment.
- Emits the application metadata event.
- Provides metadata samples to the application.
With lowLatencyMode: true, hls.js:
- Loads partial segments through the loadPart path.
- Detects KLV PID 257 in those LL-HLS parts.
- Does not produce a corresponding
FRAG_PARSING_METADATAevent in the supplied LL-HLS log excerpts.
Suspected cause
With lowLatencyMode: true, hls.js 1.7.1 detects the MPEG-TS KLV PID but often does not emit Hls.Events.FRAG_PARSING_METADATA.
The cause is in the TS demuxer’s KLV PES buffering. KLV data is stored only in a local variable for one demux() call, rather than being retained between LL-HLS part loads. Since LL-HLS parts are short, a KLV PES commonly spans calls, so it is discarded before it can be parsed and emitted.
TSDemuxer.demux() initializes KLV PES data to null for every call:
let klvData: ElementaryStreamData | null = null;
hls.js-1.7.1/src/demux/tsdemuxer.ts:264
The demuxer appends KLV TS payload to this local value:
if (klvData) {
klvData.data.push(data.subarray(offset, start + PACKET_LENGTH));
klvData.size += start + PACKET_LENGTH - offset;
}
hls.js-1.7.1/src/demux/tsdemuxer.ts:398
However, unlike video, audio, and ID3 PES data, the KLV data is not persisted at the end of demux():
videoTrack.pesData = videoData;
audioTrack.pesData = audioData;
id3Track.pesData = id3Data;
hls.js-1.7.1/src/demux/tsdemuxer.ts:488
There is no corresponding KLV assignment.
On the next LL-HLS part, klvData is again initialized to null. Therefore, the next KLV PES start cannot parse the preceding PES:
if (klvData && (pes = parsePES(klvData, this.logger))) {
this.parseKlvPES(id3Track, pes);
}
hls.js-1.7.1/src/demux/tsdemuxer.ts:392
Console output
Debug Logs
Debug = true, and added further logging for the Hls.Events.FRAG_PARSING_METADATA consisting of these specific console logging:
hls.on(Hls.Events.FRAG_PARSING_METADATA, (event, data) => {
console.log('FRAG_PARSING_METADATA', {
sn: data.frag?.sn,
part: data.frag,
level: data.frag?.level,
samples: data.samples,
id3Samples: data,
rawData: data
});
});
hls.on(Hls.Events.ERROR, (event, data) => {
console.error('HLS ERROR', {
type: data.type,
details: data.details,
fatal: data.fatal,
reason: data.reason,
frag: data.frag
? {
sn: data.frag.sn,
part: data.frag,
start: data.frag.start,
duration: data.frag.duration
}
: undefined
});
});
Logs when lowLatencyMode: True (The failure scenario) ->
main-NRDO6RC7.js:7628 [log] > Debug logs enabled for "Hls instance" in hls.js version 1.7.1
main-NRDO6RC7.js:7669 [log] > attachMedia
main-NRDO6RC7.js:7652 [log] > [buffer-controller]: created media source: MediaSource
main-NRDO6RC7.js:7652 [log] > [buffer-controller]: Media source opened
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: checkPendingTracks (pending: 0 codec events expected: 0) {}
main-NRDO6RC7.js:7669 [log] > stopLoad
main-NRDO6RC7.js:7669 [log] > loadSource:http://confidential/playlist.m3u8
main-NRDO6RC7.js:7668 [log] > [interstitials]: clear schedule state
main-NRDO6RC7.js:7667 [log] > [stream-controller]: Trigger BUFFER_RESET
main-NRDO6RC7.js:7669 [log] > [level-controller]: manifest loaded, 1 level(s) found, first bitrate: 0
main-NRDO6RC7.js:7652 [log] > [buffer-controller]: 1 bufferCodec event(s) expected.
main-NRDO6RC7.js:7669 [log] > auto startLoad with configured startPosition -1
main-NRDO6RC7.js:7669 [log] > startLoad(-1)
main-NRDO6RC7.js:7669 [log] > [level-controller]: Switching to level 0 (SDR @0) from level -1
main-NRDO6RC7.js:7649 [log] > [level-controller]: reload live playlist 0bps in 3993 ms
main-NRDO6RC7.js:7643 [log] > [stream-controller]: STOPPED->IDLE
main-NRDO6RC7.js:7643 [log] > [subtitle-stream-controller]: STOPPED->IDLE
main-NRDO6RC7.js:7649 [log] > [level-controller]: live playlist 0 REFRESHED 1 - 1
main-NRDO6RC7.js:7649 [log] > [level-controller]: reload live playlist 0bps in 3992 ms
main-NRDO6RC7.js:7667 [log] > [stream-controller]: Level 0 loaded [0,0][part-1-1], cc [0, 0] duration:4.4044
main-NRDO6RC7.js:7643 [log] > [stream-controller]: Live playlist sliding: 0 start-sn: 0->0 fragments: 1
main-NRDO6RC7.js:7643 [log] > [stream-controller]: Setting startPosition to -1 to start at live edge 3.9113999999999995
main-NRDO6RC7.js:7668 [log] > [interstitials]: setSchedulePosition 0, undefined ([primary: 0.00-Infinity]) pos: 3.9124
main-NRDO6RC7.js:7668 [log] > [interstitials]: INTERSTITIALS_BUFFERED_TO_BOUNDARY [primary: 0.00-Infinity]
main-NRDO6RC7.js:7668 [log] > [interstitials]: resuming [primary: 0.00-Infinity]
main-NRDO6RC7.js:7668 [log] > [interstitials]: [attachPrimary] Advancing timeline position to 3.9124
main-NRDO6RC7.js:7668 [log] > [interstitials]: Start loading primary @3.9124 bufferedPos: 3.9124 startPosition: 3.9134 skip seek: undefined has enough false loadingEnabled: true bufferingEnabled: true
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: Updating MediaSource duration to 4.404
main-NRDO6RC7.js:7643 [log] > [stream-controller]: LL-Part loading ON for initial live fragment
main-NRDO6RC7.js:7643 [log] > [stream-controller]: Setting startPosition to 3.9143999999999997 next load 3.9143999999999997 (from -1) based on next load start. live edge: 3.9143999999999997 live frag start: 0 playlist start: 0 buffer pos: 3.9113999999999995
main-NRDO6RC7.js:7643 [log] > [stream-controller]: Loading main sn: 0 part: 0 (0/21) of main playlist 0 (part:[0-0.2002]INDEPENDENT=YES) cc: 0 [0-0], target: 3.9113999999999995 range:0-262260
main-NRDO6RC7.js:7643 [log] > [stream-controller]: IDLE->FRAG_LOADING
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 0 of main playlist 0 (part:[0-0.2002]INDEPENDENT=YES) chunk: 1
main-NRDO6RC7.js:7643 [log] > [transmuxer-interface]: Starting new transmux session for main sn: 0 part: 0 main playlist: 0 id: 1
discontinuity: true
trackSwitch: true
contiguous: false
accurateTimeOffset: false
timeOffset: 0
initSegmentChange: true
main-NRDO6RC7.js:7643 [log] > Using n
main-NRDO6RC7.js:7643 [log] > Using js
main-NRDO6RC7.js:7643 [log] > [mp4-remuxer]: ISGenerated flag reset
main-NRDO6RC7.js:7643 [log] > [mp4-remuxer]: Reset initPTS: null > null
main-NRDO6RC7.js:7643 [log] > [mp4-remuxer]: reset next timestamp
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7643 [log] > [mp4-remuxer]: Found initPTS at playlist time: 0 offset: 13.3619 (1202571/90000) trackId: 1
main-NRDO6RC7.js:7643 [log] > [stream-controller]: FRAG_LOADING->PARSING
main-NRDO6RC7.js:7667 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[/avc1.420029]
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: BUFFER_CODECS: "video" (current SB count 0)
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: checkPendingTracks (pending: 1 codec events expected: 1) {"video":{"listeners":[],"codec":"avc1.420029","container":"video/mp4","metadata":{"width":1920,"height":1080},"id":"main"}}
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: creating sourceBuffer(video/mp4;codecs=avc1.420029) {"listeners":[],"codec":"avc1.420029","container":"video/mp4","metadata":{"width":1920,"height":1080},"id":"main"}
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: SourceBuffers created. Running queue:
video: (SourceBuffer)
audio: (none)
audiovideo: (none) }
main-NRDO6RC7.js:1613 Loaded video buffer for codec avc1.420029, feed: 'test'.
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 of main playlist 0 cc: 0 offset: undefined bytes: 727
main-NRDO6RC7.js:7649 [log] > [audio-stream-controller]: InitPTS for cc: 0 found from main: 13.3619 (1202571/90000) trackId: 1
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 0 of main playlist 0 cc: 0 offset: -13.3619 bytes: 255480
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 1 of main playlist 0 (part:[0.2002-0.4004]INDEPENDENT=NO) chunk: 2
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 1 of main playlist 0 cc: 0 offset: -13.3619 bytes: 100642
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: Updating video SourceBuffer timestampOffset to -13.3619 (sn: 0 cc: 0)
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 2 of main playlist 0 (part:[0.4004-0.600611111111]INDEPENDENT=NO) chunk: 3
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 2 of main playlist 0 cc: 0 offset: -13.3619 bytes: 105534
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 3 of main playlist 0 (part:[0.600611111111-0.8008111111109999]INDEPENDENT=NO) chunk: 4
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 3 of main playlist 0 cc: 0 offset: -13.3619 bytes: 108992
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 4 of main playlist 0 (part:[0.8008111111109999-1.001]INDEPENDENT=NO) chunk: 5
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 4 of main playlist 0 cc: 0 offset: -13.3619 bytes: 111576
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 5 of main playlist 0 (part:[1.001-1.2011999999999998]INDEPENDENT=NO) chunk: 6
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7643 [warn] > [mp4-remuxer]: AVC: 0 ms (-2dts) overlapping between fragments detected at 1.001
remuxVideo @ main-NRDO6RC7.js:7643
remux @ main-NRDO6RC7.js:7643
transmuxUnencrypted @ main-NRDO6RC7.js:7643
transmux @ main-NRDO6RC7.js:7643
push @ main-NRDO6RC7.js:7643
push @ main-NRDO6RC7.js:7649
_handleFragmentLoadProgress @ main-NRDO6RC7.js:7667
s @ main-NRDO6RC7.js:7643
onSuccess @ main-NRDO6RC7.js:7638
readystatechange @ main-NRDO6RC7.js:7669
Ke @ polyfills-B7LGQ2G6.js:1
invokeTask @ polyfills-B7LGQ2G6.js:1
onInvokeTask @ main-NRDO6RC7.js:4
invokeTask @ polyfills-B7LGQ2G6.js:1
runTask @ polyfills-B7LGQ2G6.js:1
invokeTask @ polyfills-B7LGQ2G6.js:1
Z @ polyfills-B7LGQ2G6.js:1
j @ polyfills-B7LGQ2G6.js:1
Y @ polyfills-B7LGQ2G6.js:1
XMLHttpRequest.send
P @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
onScheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleMacroTask @ polyfills-B7LGQ2G6.js:1
xe @ polyfills-B7LGQ2G6.js:1
(anonymous) @ polyfills-B7LGQ2G6.js:1
n.<computed> @ polyfills-B7LGQ2G6.js:1
openAndSendXhr @ main-NRDO6RC7.js:7669
loadInternal @ main-NRDO6RC7.js:7669
load @ main-NRDO6RC7.js:7669
(anonymous) @ main-NRDO6RC7.js:7638
k @ polyfills-B7LGQ2G6.js:2
loadPart @ main-NRDO6RC7.js:7638
d @ main-NRDO6RC7.js:7643
(anonymous) @ main-NRDO6RC7.js:7643
invoke @ polyfills-B7LGQ2G6.js:1
onInvoke @ main-NRDO6RC7.js:4
invoke @ polyfills-B7LGQ2G6.js:1
run @ polyfills-B7LGQ2G6.js:1
(anonymous) @ polyfills-B7LGQ2G6.js:2
invokeTask @ polyfills-B7LGQ2G6.js:1
onInvokeTask @ main-NRDO6RC7.js:4
invokeTask @ polyfills-B7LGQ2G6.js:1
runTask @ polyfills-B7LGQ2G6.js:1
$ @ polyfills-B7LGQ2G6.js:1
invokeTask @ polyfills-B7LGQ2G6.js:1
Z @ polyfills-B7LGQ2G6.js:1
j @ polyfills-B7LGQ2G6.js:1
Y @ polyfills-B7LGQ2G6.js:1
XMLHttpRequest.send
P @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
onScheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleMacroTask @ polyfills-B7LGQ2G6.js:1
xe @ polyfills-B7LGQ2G6.js:1
(anonymous) @ polyfills-B7LGQ2G6.js:1
n.<computed> @ polyfills-B7LGQ2G6.js:1
openAndSendXhr @ main-NRDO6RC7.js:7669
loadInternal @ main-NRDO6RC7.js:7669
load @ main-NRDO6RC7.js:7669
(anonymous) @ main-NRDO6RC7.js:7638
k @ polyfills-B7LGQ2G6.js:2
loadPart @ main-NRDO6RC7.js:7638
d @ main-NRDO6RC7.js:7643
(anonymous) @ main-NRDO6RC7.js:7643
invoke @ polyfills-B7LGQ2G6.js:1
onInvoke @ main-NRDO6RC7.js:4
invoke @ polyfills-B7LGQ2G6.js:1
run @ polyfills-B7LGQ2G6.js:1
(anonymous) @ polyfills-B7LGQ2G6.js:2
invokeTask @ polyfills-B7LGQ2G6.js:1
onInvokeTask @ main-NRDO6RC7.js:4
invokeTask @ polyfills-B7LGQ2G6.js:1
runTask @ polyfills-B7LGQ2G6.js:1
$ @ polyfills-B7LGQ2G6.js:1
invokeTask @ polyfills-B7LGQ2G6.js:1
Z @ polyfills-B7LGQ2G6.js:1
j @ polyfills-B7LGQ2G6.js:1
Y @ polyfills-B7LGQ2G6.js:1
XMLHttpRequest.send
P @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
onScheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleMacroTask @ polyfills-B7LGQ2G6.js:1
xe @ polyfills-B7LGQ2G6.js:1
(anonymous) @ polyfills-B7LGQ2G6.js:1
n.<computed> @ polyfills-B7LGQ2G6.js:1
openAndSendXhr @ main-NRDO6RC7.js:7669
loadInternal @ main-NRDO6RC7.js:7669
load @ main-NRDO6RC7.js:7669
(anonymous) @ main-NRDO6RC7.js:7638
k @ polyfills-B7LGQ2G6.js:2
loadPart @ main-NRDO6RC7.js:7638
d @ main-NRDO6RC7.js:7643
(anonymous) @ main-NRDO6RC7.js:7643
invoke @ polyfills-B7LGQ2G6.js:1
onInvoke @ main-NRDO6RC7.js:4
invoke @ polyfills-B7LGQ2G6.js:1
run @ polyfills-B7LGQ2G6.js:1
(anonymous) @ polyfills-B7LGQ2G6.js:2
invokeTask @ polyfills-B7LGQ2G6.js:1
onInvokeTask @ main-NRDO6RC7.js:4
invokeTask @ polyfills-B7LGQ2G6.js:1
runTask @ polyfills-B7LGQ2G6.js:1
$ @ polyfills-B7LGQ2G6.js:1
invokeTask @ polyfills-B7LGQ2G6.js:1
Z @ polyfills-B7LGQ2G6.js:1
j @ polyfills-B7LGQ2G6.js:1
Y @ polyfills-B7LGQ2G6.js:1
XMLHttpRequest.send
P @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
onScheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleMacroTask @ polyfills-B7LGQ2G6.js:1
xe @ polyfills-B7LGQ2G6.js:1
(anonymous) @ polyfills-B7LGQ2G6.js:1
n.<computed> @ polyfills-B7LGQ2G6.js:1
openAndSendXhr @ main-NRDO6RC7.js:7669
loadInternal @ main-NRDO6RC7.js:7669
load @ main-NRDO6RC7.js:7669
(anonymous) @ main-NRDO6RC7.js:7638
k @ polyfills-B7LGQ2G6.js:2
loadPart @ main-NRDO6RC7.js:7638
d @ main-NRDO6RC7.js:7643
(anonymous) @ main-NRDO6RC7.js:7643
invoke @ polyfills-B7LGQ2G6.js:1
onInvoke @ main-NRDO6RC7.js:4
invoke @ polyfills-B7LGQ2G6.js:1
run @ polyfills-B7LGQ2G6.js:1
(anonymous) @ polyfills-B7LGQ2G6.js:2
invokeTask @ polyfills-B7LGQ2G6.js:1
onInvokeTask @ main-NRDO6RC7.js:4
invokeTask @ polyfills-B7LGQ2G6.js:1
runTask @ polyfills-B7LGQ2G6.js:1
$ @ polyfills-B7LGQ2G6.js:1
invokeTask @ polyfills-B7LGQ2G6.js:1
Z @ polyfills-B7LGQ2G6.js:1
j @ polyfills-B7LGQ2G6.js:1
Y @ polyfills-B7LGQ2G6.js:1
XMLHttpRequest.send
P @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
onScheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleMacroTask @ polyfills-B7LGQ2G6.js:1
xe @ polyfills-B7LGQ2G6.js:1
(anonymous) @ polyfills-B7LGQ2G6.js:1
n.<computed> @ polyfills-B7LGQ2G6.js:1
openAndSendXhr @ main-NRDO6RC7.js:7669
loadInternal @ main-NRDO6RC7.js:7669
load @ main-NRDO6RC7.js:7669
(anonymous) @ main-NRDO6RC7.js:7638
k @ polyfills-B7LGQ2G6.js:2
loadPart @ main-NRDO6RC7.js:7638
d @ main-NRDO6RC7.js:7643
(anonymous) @ main-NRDO6RC7.js:7643
invoke @ polyfills-B7LGQ2G6.js:1
onInvoke @ main-NRDO6RC7.js:4
invoke @ polyfills-B7LGQ2G6.js:1
run @ polyfills-B7LGQ2G6.js:1
(anonymous) @ polyfills-B7LGQ2G6.js:2
invokeTask @ polyfills-B7LGQ2G6.js:1
onInvokeTask @ main-NRDO6RC7.js:4
invokeTask @ polyfills-B7LGQ2G6.js:1
runTask @ polyfills-B7LGQ2G6.js:1
$ @ polyfills-B7LGQ2G6.js:1
invokeTask @ polyfills-B7LGQ2G6.js:1
Z @ polyfills-B7LGQ2G6.js:1
j @ polyfills-B7LGQ2G6.js:1
Y @ polyfills-B7LGQ2G6.js:1
XMLHttpRequest.send
P @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
onScheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleMacroTask @ polyfills-B7LGQ2G6.js:1
xe @ polyfills-B7LGQ2G6.js:1
(anonymous) @ polyfills-B7LGQ2G6.js:1
n.<computed> @ polyfills-B7LGQ2G6.js:1
openAndSendXhr @ main-NRDO6RC7.js:7669
loadInternal @ main-NRDO6RC7.js:7669
load @ main-NRDO6RC7.js:7669
(anonymous) @ main-NRDO6RC7.js:7638
k @ polyfills-B7LGQ2G6.js:2
loadPart @ main-NRDO6RC7.js:7638
d @ main-NRDO6RC7.js:7643
(anonymous) @ main-NRDO6RC7.js:7643
k @ polyfills-B7LGQ2G6.js:2
doFragPartsLoad @ main-NRDO6RC7.js:7643
_doFragLoad @ main-NRDO6RC7.js:7643
_loadFragForPlayback @ main-NRDO6RC7.js:7643
loadFragment @ main-NRDO6RC7.js:7643
loadFragment @ main-NRDO6RC7.js:7667
doTickIdle @ main-NRDO6RC7.js:7667
doTick @ main-NRDO6RC7.js:7667
tick @ main-NRDO6RC7.js:7638
onLevelLoaded @ main-NRDO6RC7.js:7667
B0.a.emit @ main-NRDO6RC7.js:7643
emit @ main-NRDO6RC7.js:7669
trigger @ main-NRDO6RC7.js:7669
handlePlaylistLoaded @ main-NRDO6RC7.js:7669
handleTrackOrLevelPlaylist @ main-NRDO6RC7.js:7669
onSuccess @ main-NRDO6RC7.js:7669
readystatechange @ main-NRDO6RC7.js:7669
Ke @ polyfills-B7LGQ2G6.js:1
invokeTask @ polyfills-B7LGQ2G6.js:1
onInvokeTask @ main-NRDO6RC7.js:4
invokeTask @ polyfills-B7LGQ2G6.js:1
runTask @ polyfills-B7LGQ2G6.js:1
invokeTask @ polyfills-B7LGQ2G6.js:1
Z @ polyfills-B7LGQ2G6.js:1
j @ polyfills-B7LGQ2G6.js:1
Y @ polyfills-B7LGQ2G6.js:1
XMLHttpRequest.send
P @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
onScheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleTask @ polyfills-B7LGQ2G6.js:1
scheduleMacroTask @ polyfills-B7LGQ2G6.js:1
xe @ polyfills-B7LGQ2G6.js:1
(anonymous) @ polyfills-B7LGQ2G6.js:1
n.<computed> @ polyfills-B7LGQ2G6.js:1
openAndSendXhr @ main-NRDO6RC7.js:7669
loadInternal @ main-NRDO6RC7.js:7669
load @ main-NRDO6RC7.js:7669
load @ main-NRDO6RC7.js:7669
onManifestLoading @ main-NRDO6RC7.js:7669
B0.a.emit @ main-NRDO6RC7.js:7643
emit @ main-NRDO6RC7.js:7669
trigger @ main-NRDO6RC7.js:7669
loadSource @ main-NRDO6RC7.js:7669
(anonymous) @ main-NRDO6RC7.js:7669
next @ main-NRDO6RC7.js:3
_next @ main-NRDO6RC7.js:3
next @ main-NRDO6RC7.js:3
(anonymous) @ main-NRDO6RC7.js:3
Xd._next @ main-NRDO6RC7.js:3
next @ main-NRDO6RC7.js:3
(anonymous) @ main-NRDO6RC7.js:3
Xd._next @ main-NRDO6RC7.js:3
next @ main-NRDO6RC7.js:3
(anonymous) @ main-NRDO6RC7.js:3
Xd._next @ main-NRDO6RC7.js:3
next @ main-NRDO6RC7.js:3
(anonymous) @ main-NRDO6RC7.js:3
Xd._next @ main-NRDO6RC7.js:3
next @ main-NRDO6RC7.js:3
(anonymous) @ main-NRDO6RC7.js:3
Kc$6 @ main-NRDO6RC7.js:3
next @ main-NRDO6RC7.js:3
next @ main-NRDO6RC7.js:3
(anonymous) @ main-NRDO6RC7.js:7669
next @ main-NRDO6RC7.js:3
_next @ main-NRDO6RC7.js:3
next @ main-NRDO6RC7.js:3
(anonymous) @ main-NRDO6RC7.js:3
Xd._next @ main-NRDO6RC7.js:3
next @ main-NRDO6RC7.js:3
(anonymous) @ main-NRDO6RC7.js:3
Xd._next @ main-NRDO6RC7.js:3
next @ main-NRDO6RC7.js:3
(anonymous) @ main-NRDO6RC7.js:3
Kc$6 @ main-NRDO6RC7.js:3
next @ main-NRDO6RC7.js:3
onMessage @ main-NRDO6RC7.js:1614
next @ main-NRDO6RC7.js:3
_next @ main-NRDO6RC7.js:3
next @ main-NRDO6RC7.js:3
(anonymous) @ main-NRDO6RC7.js:3
Kc$6 @ main-NRDO6RC7.js:3
next @ main-NRDO6RC7.js:3
s.onmessage @ main-NRDO6RC7.js:1613
Ke @ polyfills-B7LGQ2G6.js:1
invokeTask @ polyfills-B7LGQ2G6.js:1
onInvokeTask @ main-NRDO6RC7.js:4
invokeTask @ polyfills-B7LGQ2G6.js:1
runTask @ polyfills-B7LGQ2G6.js:1
invokeTask @ polyfills-B7LGQ2G6.js:1
Z @ polyfills-B7LGQ2G6.js:1
j @ polyfills-B7LGQ2G6.js:1
Y @ polyfills-B7LGQ2G6.js:1
main-NRDO6RC7.js:7643 [log] > [mp4-remuxer]: Video: Initial PTS/DTS adjusted: 14363/14363, delta: 0 ms
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 5 of main playlist 0 cc: 0 offset: -13.3619 bytes: 114458
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 6 of main playlist 0 (part:[1.2011999999999998-1.4013999999999998]INDEPENDENT=NO) chunk: 7
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7643 [warn] > [mp4-remuxer]: AVC: 0 ms (-2dts) overlapping between fragments detected at 1.201
[...MORE STACKTRACE similar as lines 77-368...]
main-NRDO6RC7.js:7643 [log] > [mp4-remuxer]: Video: Initial PTS/DTS adjusted: 14563/14563, delta: 0 ms
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 6 of main playlist 0 cc: 0 offset: -13.3619 bytes: 116806
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 7 of main playlist 0 (part:[1.4013999999999998-1.6016111111109999]INDEPENDENT=NO) chunk: 8
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 7 of main playlist 0 cc: 0 offset: -13.3619 bytes: 118459
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 8 of main playlist 0 (part:[1.6016111111109999-1.8018111111109998]INDEPENDENT=NO) chunk: 9
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 8 of main playlist 0 cc: 0 offset: -13.3619 bytes: 119743
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 9 of main playlist 0 (part:[1.8018111111109998-2.002011111111]INDEPENDENT=NO) chunk: 10
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 9 of main playlist 0 cc: 0 offset: -13.3619 bytes: 120758
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 10 of main playlist 0 (part:[2.002011111111-2.2022]INDEPENDENT=NO) chunk: 11
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 10 of main playlist 0 cc: 0 offset: -13.3619 bytes: 121566
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 11 of main playlist 0 (part:[2.2022-2.4024]INDEPENDENT=NO) chunk: 12
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7643 [warn] > [mp4-remuxer]: AVC: 0 ms (-2dts) overlapping between fragments detected at 2.202
[...MORE STACKTRACE similar as lines 77-368...]
main-NRDO6RC7.js:7643 [log] > [mp4-remuxer]: Video: Initial PTS/DTS adjusted: 15564/15564, delta: 0 ms
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 11 of main playlist 0 cc: 0 offset: -13.3619 bytes: 122340
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 12 of main playlist 0 (part:[2.4024-2.602611111111]INDEPENDENT=NO) chunk: 13
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 12 of main playlist 0 cc: 0 offset: -13.3619 bytes: 122857
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 13 of main playlist 0 (part:[2.602611111111-2.802811111111]INDEPENDENT=NO) chunk: 14
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 13 of main playlist 0 cc: 0 offset: -13.3619 bytes: 123147
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 14 of main playlist 0 (part:[2.802811111111-3.0030111111110003]INDEPENDENT=NO) chunk: 15
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 14 of main playlist 0 cc: 0 offset: -13.3619 bytes: 123422
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 15 of main playlist 0 (part:[3.0030111111110003-3.2032000000000003]INDEPENDENT=NO) chunk: 16
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 15 of main playlist 0 cc: 0 offset: -13.3619 bytes: 123858
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 16 of main playlist 0 (part:[3.2032000000000003-3.4034000000000004]INDEPENDENT=NO) chunk: 17
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7643 [warn] > [mp4-remuxer]: AVC: 0 ms (-2dts) overlapping between fragments detected at 3.203
[...MORE STACKTRACE similar as lines 77-368...]
main-NRDO6RC7.js:7643 [log] > [mp4-remuxer]: Video: Initial PTS/DTS adjusted: 16565/16565, delta: 0 ms
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 16 of main playlist 0 cc: 0 offset: -13.3619 bytes: 123959
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 17 of main playlist 0 (part:[3.4034000000000004-3.6036000000000006]INDEPENDENT=NO) chunk: 18
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 17 of main playlist 0 cc: 0 offset: -13.3619 bytes: 124143
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 18 of main playlist 0 (part:[3.6036000000000006-3.8038111111110005]INDEPENDENT=NO) chunk: 19
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 18 of main playlist 0 cc: 0 offset: -13.3619 bytes: 124258
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 19 of main playlist 0 (part:[3.8038111111110005-4.004011111111001]INDEPENDENT=NO) chunk: 20
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 19 of main playlist 0 cc: 0 offset: -13.3619 bytes: 124223
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load complete main sn: 0 part: 19 of main playlist 0 (part:[3.8038111111110005-4.004011111111001]INDEPENDENT=NO)
main-NRDO6RC7.js:7643 [log] > [transmuxer.ts]: Flushed main sn: 0 part: 19 of main playlist 0
main-NRDO6RC7.js:7643 [log] > [stream-controller]: update level timing main sn: 0 part: 19 of main playlist 0 (part:[3.8038111111110005-4.004011111111001]INDEPENDENT=NO)
main-NRDO6RC7.js:7643 [log] > [stream-controller]: PARSING->PARSED
main-NRDO6RC7.js:7643 [log] > [stream-controller]: Parsed main sn: 0 part: 19 of main playlist 0 (part:[3.8038111111110005-4.004011111111001]INDEPENDENT=NO)
main-NRDO6RC7.js:7643 [log] > [stream-controller]: Buffered main sn: 0 part: 19 of main playlist 0 (part:[3.8038111111110005-4.004011111111001]INDEPENDENT=NO) > buffer:[0.000-4.004])
main-NRDO6RC7.js:7643 [log] > [stream-controller]: PARSED->IDLE
main-NRDO6RC7.js:7667 [log] > [stream-controller]: adjusting start position by -3.9143999999999997 to match buffer start
main-NRDO6RC7.js:7643 [log] > [stream-controller]: Loading main sn: 0 part: 0 (0/21) of main playlist 0 (part:[0-0.2002]INDEPENDENT=YES) cc: 0 [0-0], target: 4.003999 range:0-262260
main-NRDO6RC7.js:7643 [log] > [stream-controller]: IDLE->FRAG_LOADING
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 0 of main playlist 0 (part:[0-0.2002]INDEPENDENT=YES) chunk: 21
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7643 [warn] > [mp4-remuxer]: AVC: 4004 ms (-360360dts) overlapping between fragments detected at 0.000
[...MORE STACKTRACE similar as lines 77-368...]
main-NRDO6RC7.js:7643 [log] > [mp4-remuxer]: Video: Initial PTS/DTS adjusted: 17366/17366, delta: -4004 ms
main-NRDO6RC7.js:7643 [log] > [stream-controller]: FRAG_LOADING->PARSING
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 0 of main playlist 0 cc: 0 offset: -13.3619 bytes: 255480
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 1 of main playlist 0 (part:[0.2002-0.4004]INDEPENDENT=NO) chunk: 22
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
main-NRDO6RC7.js:7643 [warn] > [mp4-remuxer]: AVC: 4004 ms (-360361dts) overlapping between fragments detected at 0.200
[...MORE STACKTRACE similar as lines 77-368...]
main-NRDO6RC7.js:7643 [log] > [mp4-remuxer]: Video: Initial PTS/DTS adjusted: 17566/17566, delta: -4004 ms
main-NRDO6RC7.js:7654 [log] > [buffer-controller]: queuing "video" append sn: 0 p: 1 of main playlist 0 cc: 0 offset: -13.3619 bytes: 100642
main-NRDO6RC7.js:7643 [log] > [stream-controller]: load progress main sn: 0 part: 2 of main playlist 0 (part:[0.4004-0.600611111111]INDEPENDENT=NO) chunk: 23
main-NRDO6RC7.js:7643 [log] > KLV metadata PID found: 257
Chrome media internals output
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in src/demux/tsdemuxer.ts at the KLV handling in demux(), including the local klvData variable and the persisted video, audio, and ID3 PES data. Reproduce the supplied MPEG-TS stream with lowLatencyMode enabled and compare it with complete-fragment playback. Done means KLV samples spanning LL-HLS parts are parsed and Hls.Events.FRAG_PARSING_METADATA is emitted with usable timestamps.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- audio-video-rtc
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 74/100