hls.js icon indicating copy to clipboard operation
hls.js copied to clipboard

Is there a way to force a revert to primary content while playing interstitials?

Open whenmoon opened this issue 6 months ago • 12 comments

What do you want to do with Hls.js?

We need to try and find a way to force our media player to "revert" back to primary content programmatically during interstitial ad breaks. Is there currently a way to do this without manipulating the playlist? Many thanks in advance.

What have you tried so far?

Read the hls.js interstitials documentation.

whenmoon avatar May 23 '25 14:05 whenmoon

The conventional way would be to call skip() on the Interstitials manager:

https://github.com/video-dev/hls.js/blob/master/docs/API.md#hlsinterstitialsmanager

The only way to force fallback to primary from an interstitial without skipping it, would be for the assets to error. Destroying the active asset players may have the same effect. Here's an example (just note that you'll want to wait for v1.6.3 or #7263 to be merged into dev before attempting this):

hls.interstitialsManager.interstitialPlayer?.assetPlayers.forEach(
  (hlsAssetPlayer) => hlsAssetPlayer?.destroy()
);

robwalch avatar May 23 '25 16:05 robwalch

The conventional way would be to call skip() on the Interstitials manager:

https://github.com/video-dev/hls.js/blob/master/docs/API.md#hlsinterstitialsmanager

The only way to force fallback to primary from an interstitial without skipping it, would be for the assets to error. Destroying the active asset players may have the same effect. Here's an example (just note that you'll want to wait for v1.6.3 or #7263 to be merged into dev before attempting this):

hls.interstitialsManager.interstitialPlayer?.assetPlayers.forEach( (hlsAssetPlayer) => hlsAssetPlayer?.destroy() );

Hi @robwalch thanks for this response, appreciate it. Now https://github.com/video-dev/hls.js/pull/7263 has been merged I got a local build of master running in our app and have tested both of these approaches:

Calling skip() will not solve the problem since we want to fallback to the primary stream to a specified point in time during what would be interstitials, not to the primary content that will play after the interstitials have finished.

Using this example:

hls.interstitialsManager.interstitialPlayer?.assetPlayers.forEach(
  (hlsAssetPlayer) => hlsAssetPlayer?.destroy()
);

seems like it's what we want however in testing what seems to happen is that falling back does not happen at the point in time after this code has run, audio only audibly switches back after some time which seems to be around a minute for us. Using the latter approach, are there any other considerations I should take into account to revert back to the primary stream on calling hlsAssetPlayer?.destroy()? I have tried incorporating flushing the buffer but it doesn't seem to have an effect on the behaviour:

hls.trigger(Hls.Events.BUFFER_FLUSHING, {
  startOffset: 0,
  endOffset: Infinity,
  type: null,
});

whenmoon avatar May 28 '25 15:05 whenmoon

what seems to happen is that falling back does not happen at the point in time after this code has run, audio only audibly switches back after some time which seems to be around a minute for us

Can you share a sample that reproduces this issue, or debug logs? Based on the description, I am guessing that your interstitial is appending in place and that most of the asset(s) are buffered before destroying the asset players.

Destroying the players prematurely should produce an error ("Asset player destroyed unexpectedly") which invokes the error handling path that falls back to primary (handleAssetItemError).

robwalch avatar May 28 '25 17:05 robwalch

Can you share a sample that reproduces this issue, or debug logs? Based on the description, I am guessing that your interstitial is appending in place and that most of the asset(s) are buffered before destroying the asset players.

Destroying the players prematurely should produce an error ("Asset player destroyed unexpectedly") which invokes the error handling path that falls back to primary (handleAssetItemError).

Hi Rob, yes the interstitials are indeed appending in place and I am seeing the assets being destroyed - I'm not sure if it's a possibility for us to work without append in place, I'll need to look into that. I've attached two sets of logs from the player debug, the first set using as described above / defaulting to interstitialAppendInPlace: true the second set is with this set to false. However even with interstitialAppendInPlace: false, although audio switches immediately after calling asset.destroy() it seems to switch back to the primary at the resumption point / playout limit, not at the point in time at which the primary stream would have been playing had interstitials not been loaded at all (the behaviour I'm investigating to see if it's possible - this seems to be the same behaviour as calling hls.interstitialsManager.skip()). Thanks in advance: interstitialAppendInPlace: true:

[log] > [interstitials]: INTERSTITIAL_STARTED ["1748494668_1509605975": 7427.67-7547.52] append in place
iso.ts:58 💬 [LOG][hls-interstitials-player]: Interstitial Pod Started {event: InterstitialEvent, schedule: Array(39), scheduleIndex: 13}
 [log] > [interstitials]: INTERSTITIAL_ASSET_STARTED 1/6 ["1748494668_1509605975-1-1802516431" 7427.67-7442.73]
iso.ts:58 💬 [LOG][hls-interstitials-player]: Interstitial Asset Playing 1748494668_1509605975 1748494668_1509605975-1-1802516431
 [1748494668_1509605975-3-3291251112] [log] > [buffer-controller]: media source transferring
 [1748494668_1509605975-3-3291251112] [log] > [stream-controller]: Reset loading state
 [1748494668_1509605975-3-3291251112] [log] > [audio-stream-controller]: Reset loading state
 [1748494668_1509605975-3-3291251112] [log] > [subtitle-stream-controller]: Reset loading state
 [log] > [interstitials]: transfering MediaSource to HlsAssetPlayer: ["1748494668_1509605975-1-1802516431" 7427.67-7442.73] 05820104-d70a-4ba5-8160-13d278630a9f append-in-place from HlsAssetPlayer: ["1748494668_1509605975-3-3291251112" 7472.77-7502.98] d4f90739-3c1f-4e1c-b47a-ba606b298ab2 append-in-place
 [1748494668_1509605975-1-1802516431] [log] > attachMedia
 [1748494668_1509605975-1-1802516431] [log] > [buffer-controller]: transferred media source: MediaSource
 [1748494668_1509605975-1-1802516431] [log] > [buffer-controller]: attachTransferred: (bufferCodecEventsTotal 1)
required tracks: {"audio":{"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[],"ending":false,"ended":true}};
transfer tracks: {"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[],"ending":false,"ended":false}}}
 [1748494668_1509605975-1-1802516431] [log] > [buffer-controller]: checkPendingTracks (pending: 0 codec events expected: 1) {"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[{"event":"updatestart"},{"event":"updateend"},{"event":"error"}]}}
 [1748494668_1509605975-1-1802516431] [log] > [buffer-controller]: SourceBuffers created. Running queue:
video: (none)
audio: (SourceBuffer)
audiovideo: (none) }
 [log] > [level-controller]: Loading level index 3 age 9.5
 [log] > [level-controller]: live playlist 3 REFRESHED 85478--1
 [log] > [level-controller]: reload live playlist 256000bps in 9553 ms
 [log] > [stream-controller]: Level 3 loaded [83623,85478][part-85478--1], cc [0, 0] duration:18008.57600001062
 [1748494668_1509605975-1-1802516431] [log] > destroy
 [warn] > [interstitials]: INTERSTITIAL_ASSET_ERROR ["1748494668_1509605975-1-1802516431" 7427.67-7442.73] Error: Asset player destroyed unexpectedly 1748494668_1509605975-1-1802516431
overrideMethod @ hook.js:608
(anonymous) @ 
handleAssetItemError @ hls__interstitials__beta__js.js?v=6eab37a8:23505
(anonymous) @ hls__interstitials__beta__js.js?v=6eab37a8:23388
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:31323
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:21159
(anonymous) @ 
(anonymous) @ hls-js-player.ts:240
sentryWrapped @ @sentry_react.js?v=4be46cff:7450
(anonymous) @ @sentry_react.js?v=4be46cff:9956
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
advanceSchedule @ hls__interstitials__beta__js.js?v=6eab37a8:22674
setSchedulePosition @ hls__interstitials__beta__js.js?v=6eab37a8:22639
InterstitialsController.onTimeupdate @ hls__interstitials__beta__js.js?v=6eab37a8:21893
onInterstitialCueEnter @ hls__interstitials__beta__js.js?v=6eab37a8:22522
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
ID3TrackController.onEventCueEnter @ hls__interstitials__beta__js.js?v=6eab37a8:28073
sentryWrapped @ @sentry_react.js?v=4be46cff:7450Understand this warning
 [log] > [interstitials]: clear asset player "1748494668_1509605975-1-1802516431" toSegment: null
 [1748494668_1509605975-1-1802516431] [log] > [buffer-controller]: media source transferring
 [1748494668_1509605975-1-1802516431] [log] > [stream-controller]: Reset loading state
 [1748494668_1509605975-1-1802516431] [log] > [stream-controller]: ENDED->IDLE
 [1748494668_1509605975-1-1802516431] [log] > [audio-stream-controller]: Reset loading state
 [1748494668_1509605975-1-1802516431] [log] > [subtitle-stream-controller]: Reset loading state
 [log] > [interstitials]: transfer MediaSource from HlsAssetPlayer: ["1748494668_1509605975-1-1802516431" 7427.67-7442.73] 05820104-d70a-4ba5-8160-13d278630a9f append-in-place {"media":{},"mediaSource":{},"tracks":{"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[]}}}
 [1748494668_1509605975-1-1802516431] [log] > destroy
 [1748494668_1509605975-1-1802516431] [log] > detachMedia
 [1748494668_1509605975-1-1802516431] [log] > [stream-controller]: IDLE->STOPPED
 [1748494668_1509605975-1-1802516431] [log] > [subtitle-stream-controller]: IDLE->STOPPED
 [log] > [interstitials]: reset asset player "1748494668_1509605975-2-775159433" after error
 [1748494668_1509605975-2-775159433] [log] > stopLoad
 [1748494668_1509605975-2-775159433] [log] > [stream-controller]: ENDED->STOPPED
 [1748494668_1509605975-2-775159433] [log] > [subtitle-stream-controller]: IDLE->STOPPED
 [log] > [interstitials]: reset asset player "1748494668_1509605975-3-3291251112" after error
 [1748494668_1509605975-3-3291251112] [log] > stopLoad
 [1748494668_1509605975-3-3291251112] [log] > [stream-controller]: IDLE->STOPPED
 [1748494668_1509605975-3-3291251112] [log] > [subtitle-stream-controller]: IDLE->STOPPED
 [log] > [interstitials]: reset asset player "1748494668_1509605975-4-23640814" after error
 [1748494668_1509605975-4-23640814] [log] > stopLoad
 [1748494668_1509605975-4-23640814] [log] > [stream-controller]: PARSED->STOPPED
 [1748494668_1509605975-4-23640814] [log] > [subtitle-stream-controller]: IDLE->STOPPED
 [log] > [interstitials]: reset asset player "1748494668_1509605975-5-1151050540" after error
 [1748494668_1509605975-5-1151050540] [log] > stopLoad
 [1748494668_1509605975-5-1151050540] [log] > [stream-controller]: PARSED->STOPPED
 [1748494668_1509605975-5-1151050540] [log] > [subtitle-stream-controller]: IDLE->STOPPED
 [log] > [interstitials]: reset asset player "1748494668_1509605975-6-3942717003" after error
 [1748494668_1509605975-6-3942717003] [log] > stopLoad
 [1748494668_1509605975-6-3942717003] [log] > [stream-controller]: PARSED->STOPPED
 [1748494668_1509605975-6-3942717003] [log] > [subtitle-stream-controller]: IDLE->STOPPED
 [log] > [interstitials]: setSchedulePosition 13, 1
 [log] > [interstitials]: INTERSTITIAL_ASSET_STARTED 2/6 ["1748494668_1509605975-2-775159433" 7427.67-7457.71]
iso.ts:58 💬 [LOG][hls-interstitials-player]: Interstitial Asset Playing 1748494668_1509605975 1748494668_1509605975-2-775159433
 [log] > [interstitials]: using detachedData: MediaSource {"media":{},"mediaSource":{},"tracks":{"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[]}}}
 [log] > [interstitials]: transfering MediaSource to HlsAssetPlayer: ["1748494668_1509605975-2-775159433" 7427.67-7457.71] 4df4473a-395d-4d0f-aedb-c0b505a9759d append-in-place from detached MediaSource
 [1748494668_1509605975-2-775159433] [log] > attachMedia
 [1748494668_1509605975-2-775159433] [log] > [buffer-controller]: transferred media source: MediaSource
 [1748494668_1509605975-2-775159433] [log] > [buffer-controller]: attachTransferred: (bufferCodecEventsTotal 1)
required tracks: {"audio":{"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[],"ending":false,"ended":true}};
transfer tracks: {"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[]}}}
 [1748494668_1509605975-2-775159433] [log] > [stream-controller]: STOPPED->IDLE
 [1748494668_1509605975-2-775159433] [log] > [stream-controller]: IDLE->WAITING_LEVEL
 [1748494668_1509605975-2-775159433] [log] > [buffer-controller]: checkPendingTracks (pending: 0 codec events expected: 1) {"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[{"event":"updatestart"},{"event":"updateend"},{"event":"error"}]}}
 [1748494668_1509605975-2-775159433] [log] > [buffer-controller]: SourceBuffers created. Running queue:
video: (none)
audio: (SourceBuffer)
audiovideo: (none) }
 [1748494668_1509605975-1-1802516431] [log] > detachMedia
 [1748494668_1509605975-2-775159433] [log] > destroy
 [warn] > [interstitials]: INTERSTITIAL_ASSET_ERROR ["1748494668_1509605975-2-775159433" 7427.67-7457.71] Error: Asset player destroyed unexpectedly 1748494668_1509605975-2-775159433
overrideMethod @ hook.js:608
(anonymous) @ 
handleAssetItemError @ hls__interstitials__beta__js.js?v=6eab37a8:23505
(anonymous) @ hls__interstitials__beta__js.js?v=6eab37a8:23388
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:31323
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:21159
(anonymous) @ 
(anonymous) @ hls-js-player.ts:240
sentryWrapped @ @sentry_react.js?v=4be46cff:7450
setTimeout
(anonymous) @ @sentry_react.js?v=4be46cff:9956
interstitialStartedHandler @ hls-js-player.ts:233
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
advanceSchedule @ hls__interstitials__beta__js.js?v=6eab37a8:22674
setSchedulePosition @ hls__interstitials__beta__js.js?v=6eab37a8:22639
InterstitialsController.onTimeupdate @ hls__interstitials__beta__js.js?v=6eab37a8:21893
onInterstitialCueEnter @ hls__interstitials__beta__js.js?v=6eab37a8:22522
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
ID3TrackController.onEventCueEnter @ hls__interstitials__beta__js.js?v=6eab37a8:28073
sentryWrapped @ @sentry_react.js?v=4be46cff:7450Understand this warning
 [log] > [interstitials]: clear asset player "1748494668_1509605975-2-775159433" toSegment: null
 [1748494668_1509605975-2-775159433] [log] > [buffer-controller]: media source transferring
 [1748494668_1509605975-2-775159433] [log] > [stream-controller]: Reset loading state
 [1748494668_1509605975-2-775159433] [log] > [stream-controller]: WAITING_LEVEL->IDLE
 [1748494668_1509605975-2-775159433] [log] > [audio-stream-controller]: Reset loading state
 [1748494668_1509605975-2-775159433] [log] > [subtitle-stream-controller]: Reset loading state
 [log] > [interstitials]: transfer MediaSource from HlsAssetPlayer: ["1748494668_1509605975-2-775159433" 7427.67-7457.71] 4df4473a-395d-4d0f-aedb-c0b505a9759d append-in-place {"media":{},"mediaSource":{},"tracks":{"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[]}}}
 [1748494668_1509605975-2-775159433] [log] > destroy
 [1748494668_1509605975-2-775159433] [log] > detachMedia
 [1748494668_1509605975-2-775159433] [log] > [stream-controller]: IDLE->STOPPED
 [log] > [interstitials]: reset asset player "1748494668_1509605975-3-3291251112" after error
 [log] > [interstitials]: reset asset player "1748494668_1509605975-4-23640814" after error
 [log] > [interstitials]: reset asset player "1748494668_1509605975-5-1151050540" after error
 [log] > [interstitials]: reset asset player "1748494668_1509605975-6-3942717003" after error
 [log] > [interstitials]: setSchedulePosition 13, 2
 [log] > [interstitials]: INTERSTITIAL_ASSET_STARTED 3/6 ["1748494668_1509605975-3-3291251112" 7442.73-7472.94]
iso.ts:58 💬 [LOG][hls-interstitials-player]: Interstitial Asset Playing 1748494668_1509605975 1748494668_1509605975-3-3291251112
 [log] > [interstitials]: using detachedData: MediaSource {"media":{},"mediaSource":{},"tracks":{"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[]}}}
 [log] > [interstitials]: transfering MediaSource to HlsAssetPlayer: ["1748494668_1509605975-3-3291251112" 7442.73-7472.94] d4f90739-3c1f-4e1c-b47a-ba606b298ab2 append-in-place from detached MediaSource
 [1748494668_1509605975-3-3291251112] [log] > attachMedia
 [1748494668_1509605975-3-3291251112] [log] > [buffer-controller]: transferred media source: MediaSource
 [1748494668_1509605975-3-3291251112] [log] > [buffer-controller]: attachTransferred: (bufferCodecEventsTotal 1)
required tracks: {"audio":{"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[],"ending":false,"ended":false}};
transfer tracks: {"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[]}}}
 [1748494668_1509605975-3-3291251112] [log] > [stream-controller]: STOPPED->IDLE
 [1748494668_1509605975-3-3291251112] [log] > [stream-controller]: IDLE->WAITING_LEVEL
 [1748494668_1509605975-3-3291251112] [log] > [buffer-controller]: checkPendingTracks (pending: 0 codec events expected: 1) {"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[{"event":"updatestart"},{"event":"updateend"},{"event":"error"}]}}
 [1748494668_1509605975-3-3291251112] [log] > [buffer-controller]: SourceBuffers created. Running queue:
video: (none)
audio: (SourceBuffer)
audiovideo: (none) }
 [1748494668_1509605975-2-775159433] [log] > detachMedia
 [1748494668_1509605975-3-3291251112] [log] > destroy
 [warn] > [interstitials]: INTERSTITIAL_ASSET_ERROR ["1748494668_1509605975-3-3291251112" 7442.73-7472.94] Error: Asset player destroyed unexpectedly 1748494668_1509605975-3-3291251112
overrideMethod @ hook.js:608
(anonymous) @ 
handleAssetItemError @ hls__interstitials__beta__js.js?v=6eab37a8:23505
(anonymous) @ hls__interstitials__beta__js.js?v=6eab37a8:23388
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:31323
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:21159
(anonymous) @ 
(anonymous) @ hls-js-player.ts:240
sentryWrapped @ @sentry_react.js?v=4be46cff:7450
setTimeout
(anonymous) @ @sentry_react.js?v=4be46cff:9956
interstitialStartedHandler @ hls-js-player.ts:233
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
advanceSchedule @ hls__interstitials__beta__js.js?v=6eab37a8:22674
setSchedulePosition @ hls__interstitials__beta__js.js?v=6eab37a8:22639
InterstitialsController.onTimeupdate @ hls__interstitials__beta__js.js?v=6eab37a8:21893
onInterstitialCueEnter @ hls__interstitials__beta__js.js?v=6eab37a8:22522
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
ID3TrackController.onEventCueEnter @ hls__interstitials__beta__js.js?v=6eab37a8:28073
sentryWrapped @ @sentry_react.js?v=4be46cff:7450Understand this warning
 [log] > [interstitials]: clear asset player "1748494668_1509605975-3-3291251112" toSegment: null
 [1748494668_1509605975-3-3291251112] [log] > [buffer-controller]: media source transferring
 [1748494668_1509605975-3-3291251112] [log] > [stream-controller]: Reset loading state
 [1748494668_1509605975-3-3291251112] [log] > [stream-controller]: WAITING_LEVEL->IDLE
 [1748494668_1509605975-3-3291251112] [log] > [audio-stream-controller]: Reset loading state
 [1748494668_1509605975-3-3291251112] [log] > [subtitle-stream-controller]: Reset loading state
 [log] > [interstitials]: transfer MediaSource from HlsAssetPlayer: ["1748494668_1509605975-3-3291251112" 7442.73-7472.94] d4f90739-3c1f-4e1c-b47a-ba606b298ab2 append-in-place {"media":{},"mediaSource":{},"tracks":{"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[]}}}
 [1748494668_1509605975-3-3291251112] [log] > destroy
 [1748494668_1509605975-3-3291251112] [log] > detachMedia
 [1748494668_1509605975-3-3291251112] [log] > [stream-controller]: IDLE->STOPPED
 [log] > [interstitials]: reset asset player "1748494668_1509605975-4-23640814" after error
 [log] > [interstitials]: reset asset player "1748494668_1509605975-5-1151050540" after error
 [log] > [interstitials]: reset asset player "1748494668_1509605975-6-3942717003" after error
 [log] > [interstitials]: setSchedulePosition 13, 3
 [log] > [interstitials]: INTERSTITIAL_ASSET_STARTED 4/6 ["1748494668_1509605975-4-23640814" 7472.77-7487.79]
iso.ts:58 💬 [LOG][hls-interstitials-player]: Interstitial Asset Playing 1748494668_1509605975 1748494668_1509605975-4-23640814
 [log] > [interstitials]: using detachedData: MediaSource {"media":{},"mediaSource":{},"tracks":{"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[]}}}
 [log] > [interstitials]: transfering MediaSource to HlsAssetPlayer: ["1748494668_1509605975-4-23640814" 7472.77-7487.79] 7c288777-f83d-4856-9028-42583839ce48 append-in-place from detached MediaSource
 [1748494668_1509605975-4-23640814] [log] > attachMedia
 [1748494668_1509605975-4-23640814] [log] > [buffer-controller]: transferred media source: MediaSource
 [1748494668_1509605975-4-23640814] [log] > [buffer-controller]: attachTransferred: (bufferCodecEventsTotal 1)
required tracks: {"audio":{"listeners":[],"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main"}};
transfer tracks: {"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[]}}}
 [1748494668_1509605975-4-23640814] [log] > [stream-controller]: STOPPED->IDLE
 [1748494668_1509605975-4-23640814] [log] > [stream-controller]: IDLE->WAITING_LEVEL
 [1748494668_1509605975-4-23640814] [log] > [buffer-controller]: checkPendingTracks (pending: 0 codec events expected: 1) {"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[{"event":"updatestart"},{"event":"updateend"},{"event":"error"}]}}
 [1748494668_1509605975-4-23640814] [log] > [buffer-controller]: SourceBuffers created. Running queue:
video: (none)
audio: (SourceBuffer) append-audio, append-audio, async-blocker
audiovideo: (none) }
 [1748494668_1509605975-3-3291251112] [log] > detachMedia
 [1748494668_1509605975-4-23640814] [log] > destroy
 [warn] > [interstitials]: INTERSTITIAL_ASSET_ERROR ["1748494668_1509605975-4-23640814" 7472.77-7487.79] Error: Asset player destroyed unexpectedly 1748494668_1509605975-4-23640814
overrideMethod @ hook.js:608
(anonymous) @ 
handleAssetItemError @ hls__interstitials__beta__js.js?v=6eab37a8:23505
(anonymous) @ hls__interstitials__beta__js.js?v=6eab37a8:23388
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:31323
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:21159
(anonymous) @ 
(anonymous) @ hls-js-player.ts:240
sentryWrapped @ @sentry_react.js?v=4be46cff:7450
setTimeout
(anonymous) @ @sentry_react.js?v=4be46cff:9956
interstitialStartedHandler @ hls-js-player.ts:233
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
advanceSchedule @ hls__interstitials__beta__js.js?v=6eab37a8:22674
setSchedulePosition @ hls__interstitials__beta__js.js?v=6eab37a8:22639
InterstitialsController.onTimeupdate @ hls__interstitials__beta__js.js?v=6eab37a8:21893
onInterstitialCueEnter @ hls__interstitials__beta__js.js?v=6eab37a8:22522
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
ID3TrackController.onEventCueEnter @ hls__interstitials__beta__js.js?v=6eab37a8:28073
sentryWrapped @ @sentry_react.js?v=4be46cff:7450Understand this warning
 [log] > [interstitials]: clear asset player "1748494668_1509605975-4-23640814" toSegment: null
 [1748494668_1509605975-4-23640814] [warn] > [buffer-controller]: Transfering MediaSource with operations in queue updating SourceBuffer(s)
video: (none)
audio: (SourceBuffer updating) append-audio, append-audio, async-blocker
audiovideo: (none) }
overrideMethod @ hook.js:608
(anonymous) @ 
transferMedia @ hls__interstitials__beta__js.js?v=6eab37a8:16586
transferMedia @ hls__interstitials__beta__js.js?v=6eab37a8:31376
transferMedia @ hls__interstitials__beta__js.js?v=6eab37a8:21179
transferMediaFromPlayer @ hls__interstitials__beta__js.js?v=6eab37a8:22449
clearAssetPlayer @ hls__interstitials__beta__js.js?v=6eab37a8:23419
handleAssetItemError @ hls__interstitials__beta__js.js?v=6eab37a8:23527
(anonymous) @ hls__interstitials__beta__js.js?v=6eab37a8:23388
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:31323
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:21159
(anonymous) @ 
(anonymous) @ hls-js-player.ts:240
sentryWrapped @ @sentry_react.js?v=4be46cff:7450
setTimeout
(anonymous) @ @sentry_react.js?v=4be46cff:9956
interstitialStartedHandler @ hls-js-player.ts:233
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
advanceSchedule @ hls__interstitials__beta__js.js?v=6eab37a8:22674
setSchedulePosition @ hls__interstitials__beta__js.js?v=6eab37a8:22639
InterstitialsController.onTimeupdate @ hls__interstitials__beta__js.js?v=6eab37a8:21893
onInterstitialCueEnter @ hls__interstitials__beta__js.js?v=6eab37a8:22522
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
ID3TrackController.onEventCueEnter @ hls__interstitials__beta__js.js?v=6eab37a8:28073
sentryWrapped @ @sentry_react.js?v=4be46cff:7450Understand this warning
 [1748494668_1509605975-4-23640814] [log] > [buffer-controller]: media source transferring
 [1748494668_1509605975-4-23640814] [log] > [stream-controller]: Reset loading state
 [1748494668_1509605975-4-23640814] [log] > [stream-controller]: WAITING_LEVEL->IDLE
 [1748494668_1509605975-4-23640814] [log] > [audio-stream-controller]: Reset loading state
 [1748494668_1509605975-4-23640814] [log] > [subtitle-stream-controller]: Reset loading state
 [log] > [interstitials]: transfer MediaSource from HlsAssetPlayer: ["1748494668_1509605975-4-23640814" 7472.77-7487.79] 7c288777-f83d-4856-9028-42583839ce48 append-in-place {"media":{},"mediaSource":{},"tracks":{"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[],"ending":false,"ended":false}}}
 [1748494668_1509605975-4-23640814] [log] > destroy
 [1748494668_1509605975-4-23640814] [log] > detachMedia
 [1748494668_1509605975-4-23640814] [log] > [stream-controller]: IDLE->STOPPED
 [log] > [interstitials]: reset asset player "1748494668_1509605975-5-1151050540" after error
 [log] > [interstitials]: reset asset player "1748494668_1509605975-6-3942717003" after error
 [log] > [interstitials]: setSchedulePosition 13, 4
 [log] > [interstitials]: INTERSTITIAL_ASSET_STARTED 5/6 ["1748494668_1509605975-5-1151050540" 7502.98-7517.91]
iso.ts:58 💬 [LOG][hls-interstitials-player]: Interstitial Asset Playing 1748494668_1509605975 1748494668_1509605975-5-1151050540
 [log] > [interstitials]: using detachedData: MediaSource {"media":{},"mediaSource":{},"tracks":{"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[],"ending":false,"ended":false}}}
 [log] > [interstitials]: transfering MediaSource to HlsAssetPlayer: ["1748494668_1509605975-5-1151050540" 7502.98-7517.91] f6421d6a-bb6c-4133-abf0-3fbe76c7d631 append-in-place from detached MediaSource
 [1748494668_1509605975-5-1151050540] [log] > attachMedia
 [1748494668_1509605975-5-1151050540] [log] > [buffer-controller]: transferred media source: MediaSource
 [1748494668_1509605975-5-1151050540] [log] > [buffer-controller]: attachTransferred: (bufferCodecEventsTotal 1)
required tracks: {"audio":{"listeners":[],"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main"}};
transfer tracks: {"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[],"ending":false,"ended":false}}}
 [1748494668_1509605975-5-1151050540] [log] > [stream-controller]: STOPPED->IDLE
 [1748494668_1509605975-5-1151050540] [log] > [stream-controller]: IDLE->WAITING_LEVEL
 [1748494668_1509605975-5-1151050540] [log] > [buffer-controller]: checkPendingTracks (pending: 0 codec events expected: 1) {"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[{"event":"updatestart"},{"event":"updateend"},{"event":"error"}]}}
 [1748494668_1509605975-5-1151050540] [log] > [buffer-controller]: SourceBuffers created. Running queue:
video: (none)
audio: (SourceBuffer updating) async-blocker-prepend, append-audio, append-audio, async-blocker
audiovideo: (none) }
 [1748494668_1509605975-4-23640814] [log] > detachMedia
 [1748494668_1509605975-5-1151050540] [log] > destroy
 [warn] > [interstitials]: INTERSTITIAL_ASSET_ERROR ["1748494668_1509605975-5-1151050540" 7502.98-7517.91] Error: Asset player destroyed unexpectedly 1748494668_1509605975-5-1151050540
overrideMethod @ hook.js:608
(anonymous) @ 
handleAssetItemError @ hls__interstitials__beta__js.js?v=6eab37a8:23505
(anonymous) @ hls__interstitials__beta__js.js?v=6eab37a8:23388
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:31323
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:21159
(anonymous) @ 
(anonymous) @ hls-js-player.ts:240
sentryWrapped @ @sentry_react.js?v=4be46cff:7450
setTimeout
(anonymous) @ @sentry_react.js?v=4be46cff:9956
interstitialStartedHandler @ hls-js-player.ts:233
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
advanceSchedule @ hls__interstitials__beta__js.js?v=6eab37a8:22674
setSchedulePosition @ hls__interstitials__beta__js.js?v=6eab37a8:22639
InterstitialsController.onTimeupdate @ hls__interstitials__beta__js.js?v=6eab37a8:21893
onInterstitialCueEnter @ hls__interstitials__beta__js.js?v=6eab37a8:22522
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
ID3TrackController.onEventCueEnter @ hls__interstitials__beta__js.js?v=6eab37a8:28073
sentryWrapped @ @sentry_react.js?v=4be46cff:7450Understand this warning
 [log] > [interstitials]: clear asset player "1748494668_1509605975-5-1151050540" toSegment: null
 [1748494668_1509605975-5-1151050540] [warn] > [buffer-controller]: Transfering MediaSource with operations in queue updating SourceBuffer(s)
video: (none)
audio: (SourceBuffer updating) async-blocker-prepend, append-audio, append-audio, async-blocker
audiovideo: (none) }
overrideMethod @ hook.js:608
(anonymous) @ 
transferMedia @ hls__interstitials__beta__js.js?v=6eab37a8:16586
transferMedia @ hls__interstitials__beta__js.js?v=6eab37a8:31376
transferMedia @ hls__interstitials__beta__js.js?v=6eab37a8:21179
transferMediaFromPlayer @ hls__interstitials__beta__js.js?v=6eab37a8:22449
clearAssetPlayer @ hls__interstitials__beta__js.js?v=6eab37a8:23419
handleAssetItemError @ hls__interstitials__beta__js.js?v=6eab37a8:23527
(anonymous) @ hls__interstitials__beta__js.js?v=6eab37a8:23388
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:31323
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:21159
(anonymous) @ 
(anonymous) @ hls-js-player.ts:240
sentryWrapped @ @sentry_react.js?v=4be46cff:7450
setTimeout
(anonymous) @ @sentry_react.js?v=4be46cff:9956
interstitialStartedHandler @ hls-js-player.ts:233
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
advanceSchedule @ hls__interstitials__beta__js.js?v=6eab37a8:22674
setSchedulePosition @ hls__interstitials__beta__js.js?v=6eab37a8:22639
InterstitialsController.onTimeupdate @ hls__interstitials__beta__js.js?v=6eab37a8:21893
onInterstitialCueEnter @ hls__interstitials__beta__js.js?v=6eab37a8:22522
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
ID3TrackController.onEventCueEnter @ hls__interstitials__beta__js.js?v=6eab37a8:28073
sentryWrapped @ @sentry_react.js?v=4be46cff:7450Understand this warning
 [1748494668_1509605975-5-1151050540] [log] > [buffer-controller]: media source transferring
 [1748494668_1509605975-5-1151050540] [log] > [stream-controller]: Reset loading state
 [1748494668_1509605975-5-1151050540] [log] > [stream-controller]: WAITING_LEVEL->IDLE
 [1748494668_1509605975-5-1151050540] [log] > [audio-stream-controller]: Reset loading state
 [1748494668_1509605975-5-1151050540] [log] > [subtitle-stream-controller]: Reset loading state
 [log] > [interstitials]: transfer MediaSource from HlsAssetPlayer: ["1748494668_1509605975-5-1151050540" 7502.98-7517.91] f6421d6a-bb6c-4133-abf0-3fbe76c7d631 append-in-place {"media":{},"mediaSource":{},"tracks":{"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[]}}}
 [1748494668_1509605975-5-1151050540] [log] > destroy
 [1748494668_1509605975-5-1151050540] [log] > detachMedia
 [1748494668_1509605975-5-1151050540] [log] > [stream-controller]: IDLE->STOPPED
 [log] > [interstitials]: reset asset player "1748494668_1509605975-6-3942717003" after error
 [log] > [interstitials]: setSchedulePosition 13, 5
 [log] > [interstitials]: INTERSTITIAL_ASSET_STARTED 6/6 ["1748494668_1509605975-6-3942717003" 7517.99-7698.01]
iso.ts:58 💬 [LOG][hls-interstitials-player]: Interstitial Asset Playing 1748494668_1509605975 1748494668_1509605975-6-3942717003
 [log] > [interstitials]: using detachedData: MediaSource {"media":{},"mediaSource":{},"tracks":{"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[]}}}
 [log] > [interstitials]: transfering MediaSource to HlsAssetPlayer: ["1748494668_1509605975-6-3942717003" 7517.99-7698.01] 488f6c49-8006-4ebd-b518-3a7dc07401f7 append-in-place from detached MediaSource
 [1748494668_1509605975-6-3942717003] [log] > attachMedia
 [1748494668_1509605975-6-3942717003] [log] > [buffer-controller]: transferred media source: MediaSource
 [1748494668_1509605975-6-3942717003] [log] > [buffer-controller]: attachTransferred: (bufferCodecEventsTotal 1)
required tracks: {"audio":{"listeners":[],"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main"}};
transfer tracks: {"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[]}}}
 [1748494668_1509605975-6-3942717003] [log] > [stream-controller]: STOPPED->IDLE
 [1748494668_1509605975-6-3942717003] [log] > [stream-controller]: IDLE->WAITING_LEVEL
 [1748494668_1509605975-6-3942717003] [log] > [buffer-controller]: checkPendingTracks (pending: 0 codec events expected: 1) {"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[{"event":"updatestart"},{"event":"updateend"},{"event":"error"}]}}
 [1748494668_1509605975-6-3942717003] [log] > [buffer-controller]: SourceBuffers created. Running queue:
video: (none)
audio: (SourceBuffer updating) async-blocker-prepend, append-audio, append-audio, async-blocker
audiovideo: (none) }
 [1748494668_1509605975-5-1151050540] [log] > detachMedia
 [1748494668_1509605975-6-3942717003] [log] > destroy
 [warn] > [interstitials]: INTERSTITIAL_ASSET_ERROR ["1748494668_1509605975-6-3942717003" 7517.99-7698.01] Error: Asset player destroyed unexpectedly 1748494668_1509605975-6-3942717003
overrideMethod @ hook.js:608
(anonymous) @ 
handleAssetItemError @ hls__interstitials__beta__js.js?v=6eab37a8:23505
(anonymous) @ hls__interstitials__beta__js.js?v=6eab37a8:23388
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:31323
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:21159
(anonymous) @ 
(anonymous) @ hls-js-player.ts:240
sentryWrapped @ @sentry_react.js?v=4be46cff:7450
setTimeout
(anonymous) @ @sentry_react.js?v=4be46cff:9956
interstitialStartedHandler @ hls-js-player.ts:233
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
advanceSchedule @ hls__interstitials__beta__js.js?v=6eab37a8:22674
setSchedulePosition @ hls__interstitials__beta__js.js?v=6eab37a8:22639
InterstitialsController.onTimeupdate @ hls__interstitials__beta__js.js?v=6eab37a8:21893
onInterstitialCueEnter @ hls__interstitials__beta__js.js?v=6eab37a8:22522
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
ID3TrackController.onEventCueEnter @ hls__interstitials__beta__js.js?v=6eab37a8:28073
sentryWrapped @ @sentry_react.js?v=4be46cff:7450Understand this warning
 [log] > [interstitials]: clear asset player "1748494668_1509605975-6-3942717003" toSegment: null
 [1748494668_1509605975-6-3942717003] [warn] > [buffer-controller]: Transfering MediaSource with operations in queue updating SourceBuffer(s)
video: (none)
audio: (SourceBuffer updating) async-blocker-prepend, append-audio, append-audio, async-blocker
audiovideo: (none) }
overrideMethod @ hook.js:608
(anonymous) @ 
transferMedia @ hls__interstitials__beta__js.js?v=6eab37a8:16586
transferMedia @ hls__interstitials__beta__js.js?v=6eab37a8:31376
transferMedia @ hls__interstitials__beta__js.js?v=6eab37a8:21179
transferMediaFromPlayer @ hls__interstitials__beta__js.js?v=6eab37a8:22449
clearAssetPlayer @ hls__interstitials__beta__js.js?v=6eab37a8:23419
handleAssetItemError @ hls__interstitials__beta__js.js?v=6eab37a8:23527
(anonymous) @ hls__interstitials__beta__js.js?v=6eab37a8:23388
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:31323
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:21159
(anonymous) @ 
(anonymous) @ hls-js-player.ts:240
sentryWrapped @ @sentry_react.js?v=4be46cff:7450
setTimeout
(anonymous) @ @sentry_react.js?v=4be46cff:9956
interstitialStartedHandler @ hls-js-player.ts:233
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
advanceSchedule @ hls__interstitials__beta__js.js?v=6eab37a8:22674
setSchedulePosition @ hls__interstitials__beta__js.js?v=6eab37a8:22639
InterstitialsController.onTimeupdate @ hls__interstitials__beta__js.js?v=6eab37a8:21893
onInterstitialCueEnter @ hls__interstitials__beta__js.js?v=6eab37a8:22522
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
ID3TrackController.onEventCueEnter @ hls__interstitials__beta__js.js?v=6eab37a8:28073
sentryWrapped @ @sentry_react.js?v=4be46cff:7450Understand this warning
 [1748494668_1509605975-6-3942717003] [log] > [buffer-controller]: media source transferring
 [1748494668_1509605975-6-3942717003] [log] > [stream-controller]: Reset loading state
 [1748494668_1509605975-6-3942717003] [log] > [stream-controller]: WAITING_LEVEL->IDLE
 [1748494668_1509605975-6-3942717003] [log] > [audio-stream-controller]: Reset loading state
 [1748494668_1509605975-6-3942717003] [log] > [subtitle-stream-controller]: Reset loading state
 [log] > [interstitials]: transfer MediaSource from HlsAssetPlayer: ["1748494668_1509605975-6-3942717003" 7517.99-7698.01] 488f6c49-8006-4ebd-b518-3a7dc07401f7 append-in-place {"media":{},"mediaSource":{},"tracks":{"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[]}}}
 [1748494668_1509605975-6-3942717003] [log] > destroy
 [1748494668_1509605975-6-3942717003] [log] > detachMedia
 [1748494668_1509605975-6-3942717003] [log] > [stream-controller]: IDLE->STOPPED
 [log] > [interstitials]: INTERSTITIALS_UPDATED (19): ["1748489311_127552254" 2070.66-2162.43],["1748490275_2836678328" 3033.81-3154.30],["1748491069_1912760437" 3827.80-4007.77],["1748492108_464674875" 4867.11-4956.84],["1748492882_2663548334" 5640.92-5763.46],["1748493783_233561775" 6542.55-6722.52],["1748494668_1509605975" 7427.67-7547.52],["1748495887_1076397039" 8646.57-8739.63],["1748496480_3578671164" 9239.72-9360.17],["1748497614_3192933030" 10372.95-10552.92],["1748498268_1218350034" 11027.54-11147.48],["1748499482_1313001341" 12241.24-12331.52],["1748500082_2022524205" 12840.87-12963.29],["1748501213_3955417995" 13972.65-14152.66],["1748501868_3901594804" 14627.50-14747.48],["1748503081_45150723" 15840.64-15930.88],["1748503681_4013658622" 16440.75-16560.68],["1748504815_1743136749" 17574.36-17754.33],["1748505469_1869247371" 18227.93-18347.86]
Schedule: [primary: 0.00-2070.66],["1748489311_127552254": 2070.66-2162.43],[primary: 2162.43-3033.81],["1748490275_2836678328": 3033.81-3154.30],[primary: 3154.30-3827.80],["1748491069_1912760437": 3827.80-4007.77],[primary: 4007.77-4867.11],["1748492108_464674875": 4867.11-4956.84],[primary: 4956.84-5640.92],["1748492882_2663548334": 5640.92-5763.46],[primary: 5763.46-6542.55],["1748493783_233561775": 6542.55-6722.52],[primary: 6722.52-7427.67],["1748494668_1509605975": 7427.67-7532.93],[primary: 7547.52-8646.57],["1748495887_1076397039": 8646.57-8739.63],[primary: 8739.63-9239.72],["1748496480_3578671164": 9239.72-9360.17],[primary: 9360.17-10372.95],["1748497614_3192933030": 10372.95-10552.92],[primary: 10552.92-11027.54],["1748498268_1218350034": 11027.54-11147.48],[primary: 11147.48-12241.24],["1748499482_1313001341": 12241.24-12316.46],[primary: 12331.52-12840.87],["1748500082_2022524205": 12840.87-12963.29],[primary: 12963.29-13972.65],["1748501213_3955417995": 13972.65-14152.66],[primary: 14152.66-14627.50],["1748501868_3901594804": 14627.50-14747.48],[primary: 14747.48-15840.64],["1748503081_45150723": 15840.64-15930.88],[primary: 15930.88-16440.75],["1748503681_4013658622": 16440.75-16560.68],[primary: 16560.68-17574.36],["1748504815_1743136749": 17574.36-17754.33],[primary: 17754.33-18227.93],["1748505469_1869247371": 18227.93-18347.86],[primary: 18347.86-Infinity] pos: 7437.633209
 [log] > [interstitials]: INTERSTITIALS_BUFFERED_TO_BOUNDARY [primary: 7547.52-8646.57] (-14.59 remaining)
 [log] > [interstitials]: using detachedData: MediaSource {"media":{},"mediaSource":{},"tracks":{"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[]}}}
 [log] > [interstitials]: transfering MediaSource to Primary from detached MediaSource
 [log] > attachMedia
 [log] > [buffer-controller]: transferred media source: MediaSource
 [log] > [buffer-controller]: attachTransferred: (bufferCodecEventsTotal 1)
required tracks: {"audio":{"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[],"ending":false,"ended":false}};
transfer tracks: {"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[]}}}
 [log] > [buffer-controller]: checkPendingTracks (pending: 0 codec events expected: 1) {"audio":{"buffer":{},"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main","listeners":[{"event":"updatestart"},{"event":"updateend"},{"event":"error"}]}}
 [log] > [buffer-controller]: SourceBuffers created. Running queue:
video: (none)
audio: (SourceBuffer updating) async-blocker-prepend
audiovideo: (none) }
 [log] > startLoad(7547.519999991415, <skip seek to start>)
 [log] > [level-controller]: reload live playlist 256000bps in 3573 ms
 [log] > [stream-controller]: IDLE->STOPPED
 [log] > [stream-controller]: STOPPED->IDLE
 [log] > [stream-controller]: Loading key for 84328 of [83623-85478], level 3
 [log] > [stream-controller]: IDLE->KEY_LOADING
 [log] > [stream-controller]: Loading main sn: 84328 of level 3 (frag:[7486.549-7496.363]) cc: 0 [83623-85478], target: 7492.296
 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
 [log] > [subtitle-stream-controller]: IDLE->STOPPED
 [log] > [subtitle-stream-controller]: STOPPED->IDLE
 [log] > [interstitials]: setSchedulePosition 14, undefined
 [log] > [interstitials]: INTERSTITIAL_ENDED ["1748494668_1509605975" 7427.67-7547.52] ["1748494668_1509605975": 7427.67-7532.93]
iso.ts:58 💬 [LOG][hls-interstitials-player]: Interstitial Pod Ended {event: InterstitialEvent, schedule: Array(39), scheduleIndex: 14}
 [log] > startLoad(7547.519999991415)
 [log] > [level-controller]: reload live playlist 256000bps in 3572 ms
 [log] > [stream-controller]: FRAG_LOADING->STOPPED
 [log] > [stream-controller]: STOPPED->IDLE
 [log] > [stream-controller]: Loading main sn: 84328 of level 3 (frag:[7486.549-7496.363]) cc: 0 [83623-85478], target: 7492.296
 [log] > [stream-controller]: IDLE->FRAG_LOADING
 [log] > [subtitle-stream-controller]: IDLE->STOPPED
 [log] > [subtitle-stream-controller]: STOPPED->IDLE
 [log] > [interstitials]: resuming [primary: 7547.52-8646.57]
 [log] > startLoad(7547.519999991415)
 [log] > [level-controller]: reload live playlist 256000bps in 3571 ms
 [log] > [stream-controller]: FRAG_LOADING->STOPPED
 [log] > [stream-controller]: STOPPED->IDLE
 [log] > [stream-controller]: Loading main sn: 84328 of level 3 (frag:[7486.549-7496.363]) cc: 0 [83623-85478], target: 7492.296
 [log] > [stream-controller]: IDLE->FRAG_LOADING
 [log] > [subtitle-stream-controller]: IDLE->STOPPED
 [log] > [subtitle-stream-controller]: STOPPED->IDLE
 [log] > [interstitials]: INTERSTITIALS_PRIMARY_RESUMED [primary: 7547.52-8646.57]
 [1748494668_1509605975-6-3942717003] [log] > detachMedia
 [log] > [transmuxer-interface]: Starting new transmux session for main sn: 84328 level: 3 id: 1
        discontinuity: true
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 7486.549333324416
        initSegmentChange: true
 [log] > [stream-controller]: Loaded main sn: 84328 of level 3
 [log] > ADTS sync word found !
 [log] > [mp4-remuxer]: ISGenerated flag reset
 [log] > [mp4-remuxer]: initPTS & initDTS reset
 [log] > [mp4-remuxer]: reset next timestamp
 [log] > manifest codec:mp4a.40.2, parsed codec:mp4a.40.2, channels:2, rate:48000 (ADTS object type:2 sampling index:3)
 [log] > [stream-controller]: FRAG_LOADING->PARSING
 [log] > [stream-controller]: Init audio buffer, container:audio/mp4, codecs[selected/level/parsed]=[mp4a.40.2/mp4a.40.2/mp4a.40.2]
 [log] > [buffer-controller]: BUFFER_CODECS: "audio" (current SB count 1)
 [log] > [transmuxer.ts]: Flushed main sn: 84328 of level 3
 [log] > [stream-controller]: PARSING->PARSED
 [log] > [stream-controller]: Parsed main sn: 84328 of level 3 (frag:[7486.549-7496.363])
 [log] > [stream-controller]: Buffered main sn: 84328 of level 3 (frag:[7486.549-7496.363] > buffer:[7340.757-7496.363])
 [log] > [stream-controller]: PARSED->IDLE
 [log] > [stream-controller]: Loading main sn: 84329 of level 3 (frag:[7496.363-7506.176]) cc: 0 [83623-85478], target: 7496.363
 [log] > [stream-controller]: IDLE->FRAG_LOADING
 [log] > [stream-controller]: Loaded main sn: 84329 of level 3
 [log] > [stream-controller]: FRAG_LOADING->PARSING
 [log] > [transmuxer.ts]: Flushed main sn: 84329 of level 3
 [log] > [stream-controller]: PARSING->PARSED
 [log] > [stream-controller]: Parsed main sn: 84329 of level 3 (frag:[7496.363-7506.176])
 [log] > [stream-controller]: Buffered main sn: 84329 of level 3 (frag:[7496.363-7506.176] > buffer:[7340.757-7506.176])
 [log] > [stream-controller]: PARSED->IDLE
 [log] > [level-controller]: Loading level index 3 age 9.6
 [log] > [level-controller]: live playlist 3 REFRESHED 85479--1
 [log] > [level-controller]: reload live playlist 256000bps in 9714 ms
 [log] > [stream-controller]: Level 3 loaded [83624,8547

interstitialAppendInPlace: false:

[log] > [interstitials]: INTERSTITIAL_STARTED ["1748497614_3192933030": 8610.73-8790.70]
iso.ts:58 💬 [LOG][hls-interstitials-player]: Interstitial Pod Started {event: InterstitialEvent, schedule: Array(43), scheduleIndex: 19}
 [log] > [interstitials]: INTERSTITIAL_ASSET_STARTED 1/6 ["1748497614_3192933030-1-1151050540" 8610.73-8625.66]
iso.ts:58 💬 [LOG][hls-interstitials-player]: Interstitial Asset Playing 1748497614_3192933030 1748497614_3192933030-1-1151050540
 [log] > detachMedia
 [log] > [buffer-controller]: media source detaching
 [log] > [stream-controller]: IDLE->STOPPED
 [log] > [subtitle-stream-controller]: IDLE->STOPPED
 [log] > [interstitials]: attaching media to HlsAssetPlayer: ["1748497614_3192933030-1-1151050540" 8610.73-8625.66] 536b162f-84d0-4c89-9b02-f8d73c28fadf  from Primary
 [1748497614_3192933030-1-1151050540] [log] > attachMedia
 [1748497614_3192933030-1-1151050540] [log] > [buffer-controller]: created media source: MediaSource
iso.ts:58 ❗ [WARN]: No mapping found for event: {type: 'waiting', playhead: 0, durationSec: NaN, livePointSec: 18291.502, totalDurationSec: 18003.66933334624, …}
overrideMethod @ hook.js:608
(anonymous) @ 
(anonymous) @ iso.ts:58
handleEvents @ index.ts:498
(anonymous) @ event-manager.ts:33
emit @ event-manager.ts:32
handleEvent @ base-player.ts:195
sentryWrapped @ @sentry_react.js?v=4be46cff:7450
waiting
playWithCatch @ hls__interstitials__beta__js.js?v=6eab37a8:21778
advanceSchedule @ hls__interstitials__beta__js.js?v=6eab37a8:22719
setSchedulePosition @ hls__interstitials__beta__js.js?v=6eab37a8:22639
InterstitialsController.onTimeupdate @ hls__interstitials__beta__js.js?v=6eab37a8:21893
sentryWrapped @ @sentry_react.js?v=4be46cff:7450Understand this warning
 [1748497614_3192933030-1-1151050540] [log] > [buffer-controller]: Media source opened
 [1748497614_3192933030-1-1151050540] [log] > [buffer-controller]: Updating MediaSource duration to 14.933
 [1748497614_3192933030-1-1151050540] [log] > [buffer-controller]: checkPendingTracks (pending: 1 codec events expected: 1) {"audio":{"listeners":[],"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main"}}
 [1748497614_3192933030-1-1151050540] [log] > [buffer-controller]: creating sourceBuffer(audio/mp4;codecs=mp4a.40.2) Queued {"listeners":[],"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main"}
 [1748497614_3192933030-1-1151050540] [log] > [buffer-controller]: SourceBuffers created. Running queue:
video: (none)
audio: (SourceBuffer) append-audio, append-audio, async-blocker
audiovideo: (none) }
 [1748497614_3192933030-1-1151050540] [log] > [stream-controller]: Buffered main sn: 0 of level 3 (frag:[0.000-9.813] > buffer:[0.000-9.813])
 [1748497614_3192933030-1-1151050540] [log] > [stream-controller]: PARSED->IDLE
 [1748497614_3192933030-1-1151050540] [log] > [stream-controller]: Loading main sn: 1 of level 3 (frag:[9.813-14.933]) cc: 0 [0-1], target: 9.813
 [1748497614_3192933030-1-1151050540] [log] > [stream-controller]: IDLE->FRAG_LOADING
 [1748497614_3192933030-1-1151050540] [log] > [stream-controller]: FRAG_LOADING->PARSING
 [1748497614_3192933030-1-1151050540] [log] > [stream-controller]: Loaded main sn: 1 of level 3
 [1748497614_3192933030-1-1151050540] [log] > [transmuxer.ts]: Flushed main sn: 1 of level 3
 [1748497614_3192933030-1-1151050540] [log] > [stream-controller]: PARSING->PARSED
 [1748497614_3192933030-1-1151050540] [log] > [stream-controller]: Parsed main sn: 1 of level 3 (frag:[9.813-14.933])
 [1748497614_3192933030-1-1151050540] [log] > [stream-controller]: Buffered main sn: 1 of level 3 (frag:[9.813-14.933] > buffer:[0.000-14.933])
 [1748497614_3192933030-1-1151050540] [log] > [stream-controller]: PARSED->IDLE
 [1748497614_3192933030-1-1151050540] [log] > [buffer-controller]: audio buffer reached EOS
 [1748497614_3192933030-1-1151050540] [log] > [buffer-controller]: Queueing EOS
 [1748497614_3192933030-1-1151050540] [log] > [stream-controller]: IDLE->ENDED
 [1748497614_3192933030-1-1151050540] [log] > [buffer-controller]: Calling mediaSource.endOfStream()
 [log] > [interstitials]: buffered to end of asset HlsAssetPlayer: ["1748497614_3192933030-1-1151050540" 8610.73-8625.66] 536b162f-84d0-4c89-9b02-f8d73c28fadf
 [1748497614_3192933030-1-1151050540] [log] > [buffer-controller]: Media source ended
 [log] > [level-controller]: Loading level index 3 age 9.6
 [log] > [level-controller]: live playlist 3 REFRESHED 85629--1
 [log] > [level-controller]: reload live playlist 256000bps in 9562 ms
 [log] > [stream-controller]: Level 3 loaded [83773,85629][part-85629--1], cc [0, 0] duration:18009.386666677598
 [log] > [interstitials]: INTERSTITIALS_UPDATED (21): ["1748489311_127552254" 337.88-429.65],["1748490275_2836678328" 1271.59-1392.09],["1748491069_1912760437" 2065.58-2245.55],["1748492108_464674875" 3104.90-3194.62],["1748492882_2663548334" 3878.70-4001.24],["1748493783_233561775" 4780.33-4960.30],["1748494668_1509605975" 5665.45-5785.30],["1748495887_1076397039" 6884.35-6977.41],["1748496480_3578671164" 7477.50-7597.95],["1748497614_3192933030" 8610.73-8790.70],["1748498268_1218350034" 9265.32-9385.26],["1748499482_1313001341" 10479.02-10569.30],["1748500082_2022524205" 11078.66-11201.07],["1748501213_3955417995" 12210.43-12390.44],["1748501868_3901594804" 12865.28-12985.26],["1748503081_45150723" 14078.42-14168.66],["1748503681_4013658622" 14678.53-14798.46],["1748504815_1743136749" 15812.14-15992.11],["1748505469_1869247371" 16465.71-16585.64],["1748506681_4253124790" 17678.46-17768.15],["1748507282_596167262" 18278.57-18400.97]
Schedule: [primary: 0.00-337.88],["1748489311_127552254": 337.88-429.65],[primary: 429.65-1271.59],["1748490275_2836678328": 1271.59-1392.09],[primary: 1392.09-2065.58],["1748491069_1912760437": 2065.58-2245.55],[primary: 2245.55-3104.90],["1748492108_464674875": 3104.90-3194.62],[primary: 3194.62-3878.70],["1748492882_2663548334": 3878.70-4001.24],[primary: 4001.24-4780.33],["1748493783_233561775": 4780.33-4960.30],[primary: 4960.30-5665.45],["1748494668_1509605975": 5665.45-5785.30],[primary: 5785.30-6884.35],["1748495887_1076397039": 6884.35-6977.41],[primary: 6977.41-7477.50],["1748496480_3578671164": 7477.50-7597.95],[primary: 7597.95-8610.73],["1748497614_3192933030": 8610.73-8790.70],[primary: 8790.70-9265.32],["1748498268_1218350034": 9265.32-9385.26],[primary: 9385.26-10479.02],["1748499482_1313001341": 10479.02-10569.30],[primary: 10569.30-11078.66],["1748500082_2022524205": 11078.66-11201.07],[primary: 11201.07-12210.43],["1748501213_3955417995": 12210.43-12390.44],[primary: 12390.44-12865.28],["1748501868_3901594804": 12865.28-12985.26],[primary: 12985.26-14078.42],["1748503081_45150723": 14078.42-14168.66],[primary: 14168.66-14678.53],["1748503681_4013658622": 14678.53-14798.46],[primary: 14798.46-15812.14],["1748504815_1743136749": 15812.14-15992.11],[primary: 15992.11-16465.71],["1748505469_1869247371": 16465.71-16585.64],[primary: 16585.64-17678.46],["1748506681_4253124790": 17678.46-17768.15],[primary: 17768.15-18278.57],["1748507282_596167262": 18278.57-18400.97],[primary: 18400.97-Infinity] pos: 8610.73066666041
 [1748497614_3192933030-1-1151050540] [log] > destroy
 [warn] > [interstitials]: INTERSTITIAL_ASSET_ERROR ["1748497614_3192933030-1-1151050540" 8610.73-8625.66] Error: Asset player destroyed unexpectedly 1748497614_3192933030-1-1151050540
overrideMethod @ hook.js:608
(anonymous) @ 
handleAssetItemError @ hls__interstitials__beta__js.js?v=6eab37a8:23505
(anonymous) @ hls__interstitials__beta__js.js?v=6eab37a8:23388
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:31323
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:21159
(anonymous) @ 
(anonymous) @ hls-js-player.ts:240
sentryWrapped @ @sentry_react.js?v=4be46cff:7450
setTimeout
(anonymous) @ @sentry_react.js?v=4be46cff:9956
interstitialStartedHandler @ hls-js-player.ts:233
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
advanceSchedule @ hls__interstitials__beta__js.js?v=6eab37a8:22674
setSchedulePosition @ hls__interstitials__beta__js.js?v=6eab37a8:22639
InterstitialsController.onTimeupdate @ hls__interstitials__beta__js.js?v=6eab37a8:21893
sentryWrapped @ @sentry_react.js?v=4be46cff:7450Understand this warning
 [log] > [interstitials]: clear asset player "1748497614_3192933030-1-1151050540" toSegment: null
 [1748497614_3192933030-1-1151050540] [log] > destroy
 [1748497614_3192933030-1-1151050540] [log] > detachMedia
 [1748497614_3192933030-1-1151050540] [log] > [buffer-controller]: media source detaching
 [1748497614_3192933030-1-1151050540] [log] > [stream-controller]: ENDED->STOPPED
 [1748497614_3192933030-1-1151050540] [log] > [subtitle-stream-controller]: IDLE->STOPPED
 [log] > [interstitials]: setSchedulePosition 19, 1
 [log] > [interstitials]: INTERSTITIAL_ASSET_STARTED 2/6 ["1748497614_3192933030-2-1802516431" 8625.66-8640.73]
iso.ts:58 💬 [LOG][hls-interstitials-player]: Interstitial Asset Playing 1748497614_3192933030 1748497614_3192933030-2-1802516431
 [log] > [interstitials]: attaching media to HlsAssetPlayer: ["1748497614_3192933030-2-1802516431" 8625.66-8640.73] b9a7240a-3bd8-495b-9e11-7647a2190e88  from detached media
 [1748497614_3192933030-2-1802516431] [log] > attachMedia
 [1748497614_3192933030-2-1802516431] [log] > [buffer-controller]: created media source: MediaSource
 [1748497614_3192933030-1-1151050540] [log] > detachMedia
 [1748497614_3192933030-2-1802516431] [log] > destroy
 [warn] > [interstitials]: INTERSTITIAL_ASSET_ERROR ["1748497614_3192933030-2-1802516431" 8625.66-8640.73] Error: Asset player destroyed unexpectedly 1748497614_3192933030-2-1802516431
overrideMethod @ hook.js:608
(anonymous) @ 
handleAssetItemError @ hls__interstitials__beta__js.js?v=6eab37a8:23505
(anonymous) @ hls__interstitials__beta__js.js?v=6eab37a8:23388
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:31323
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:21159
(anonymous) @ 
(anonymous) @ hls-js-player.ts:240
sentryWrapped @ @sentry_react.js?v=4be46cff:7450
setTimeout
(anonymous) @ @sentry_react.js?v=4be46cff:9956
interstitialStartedHandler @ hls-js-player.ts:233
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
advanceSchedule @ hls__interstitials__beta__js.js?v=6eab37a8:22674
setSchedulePosition @ hls__interstitials__beta__js.js?v=6eab37a8:22639
InterstitialsController.onTimeupdate @ hls__interstitials__beta__js.js?v=6eab37a8:21893
sentryWrapped @ @sentry_react.js?v=4be46cff:7450Understand this warning
 [log] > [interstitials]: clear asset player "1748497614_3192933030-2-1802516431" toSegment: null
 [1748497614_3192933030-2-1802516431] [log] > destroy
 [1748497614_3192933030-2-1802516431] [log] > detachMedia
 [1748497614_3192933030-2-1802516431] [log] > [buffer-controller]: media source detaching
 [1748497614_3192933030-2-1802516431] [log] > [stream-controller]: PARSED->STOPPED
 [1748497614_3192933030-2-1802516431] [log] > [subtitle-stream-controller]: IDLE->STOPPED
 [log] > [interstitials]: setSchedulePosition 19, 2
 [log] > [interstitials]: INTERSTITIAL_ASSET_STARTED 3/6 ["1748497614_3192933030-3-23640814" 8640.73-8655.74]
iso.ts:58 💬 [LOG][hls-interstitials-player]: Interstitial Asset Playing 1748497614_3192933030 1748497614_3192933030-3-23640814
 [log] > [interstitials]: attaching media to HlsAssetPlayer: ["1748497614_3192933030-3-23640814" 8640.73-8655.74] 8ac947d9-a2ed-42ad-90a0-b36cea81cb11  from detached media
 [1748497614_3192933030-3-23640814] [log] > attachMedia
 [1748497614_3192933030-3-23640814] [log] > [buffer-controller]: created media source: MediaSource
 [1748497614_3192933030-2-1802516431] [log] > detachMedia
 [1748497614_3192933030-3-23640814] [log] > destroy
 [warn] > [interstitials]: INTERSTITIAL_ASSET_ERROR ["1748497614_3192933030-3-23640814" 8640.73-8655.74] Error: Asset player destroyed unexpectedly 1748497614_3192933030-3-23640814
overrideMethod @ hook.js:608
(anonymous) @ 
handleAssetItemError @ hls__interstitials__beta__js.js?v=6eab37a8:23505
(anonymous) @ hls__interstitials__beta__js.js?v=6eab37a8:23388
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:31323
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:21159
(anonymous) @ 
(anonymous) @ hls-js-player.ts:240
sentryWrapped @ @sentry_react.js?v=4be46cff:7450
setTimeout
(anonymous) @ @sentry_react.js?v=4be46cff:9956
interstitialStartedHandler @ hls-js-player.ts:233
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
advanceSchedule @ hls__interstitials__beta__js.js?v=6eab37a8:22674
setSchedulePosition @ hls__interstitials__beta__js.js?v=6eab37a8:22639
InterstitialsController.onTimeupdate @ hls__interstitials__beta__js.js?v=6eab37a8:21893
sentryWrapped @ @sentry_react.js?v=4be46cff:7450Understand this warning
 [log] > [interstitials]: clear asset player "1748497614_3192933030-3-23640814" toSegment: null
 [1748497614_3192933030-3-23640814] [log] > destroy
 [1748497614_3192933030-3-23640814] [log] > detachMedia
 [1748497614_3192933030-3-23640814] [log] > [buffer-controller]: media source detaching
 [1748497614_3192933030-3-23640814] [log] > [stream-controller]: PARSED->STOPPED
 [1748497614_3192933030-3-23640814] [log] > [subtitle-stream-controller]: IDLE->STOPPED
 [log] > [interstitials]: setSchedulePosition 19, 3
 [log] > [interstitials]: INTERSTITIAL_ASSET_STARTED 4/6 ["1748497614_3192933030-4-3291251112" 8655.74-8685.95]
iso.ts:58 💬 [LOG][hls-interstitials-player]: Interstitial Asset Playing 1748497614_3192933030 1748497614_3192933030-4-3291251112
 [log] > [interstitials]: attaching media to HlsAssetPlayer: ["1748497614_3192933030-4-3291251112" 8655.74-8685.95] fa3310f9-d1a6-4b33-b0b0-56b3f9521df0  from detached media
 [1748497614_3192933030-4-3291251112] [log] > attachMedia
 [1748497614_3192933030-4-3291251112] [log] > [buffer-controller]: created media source: MediaSource
 [1748497614_3192933030-3-23640814] [log] > detachMedia
 [1748497614_3192933030-4-3291251112] [log] > destroy
 [warn] > [interstitials]: INTERSTITIAL_ASSET_ERROR ["1748497614_3192933030-4-3291251112" 8655.74-8685.95] Error: Asset player destroyed unexpectedly 1748497614_3192933030-4-3291251112
overrideMethod @ hook.js:608
(anonymous) @ 
handleAssetItemError @ hls__interstitials__beta__js.js?v=6eab37a8:23505
(anonymous) @ hls__interstitials__beta__js.js?v=6eab37a8:23388
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:31323
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:21159
(anonymous) @ 
(anonymous) @ hls-js-player.ts:240
sentryWrapped @ @sentry_react.js?v=4be46cff:7450
setTimeout
(anonymous) @ @sentry_react.js?v=4be46cff:9956
interstitialStartedHandler @ hls-js-player.ts:233
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
advanceSchedule @ hls__interstitials__beta__js.js?v=6eab37a8:22674
setSchedulePosition @ hls__interstitials__beta__js.js?v=6eab37a8:22639
InterstitialsController.onTimeupdate @ hls__interstitials__beta__js.js?v=6eab37a8:21893
sentryWrapped @ @sentry_react.js?v=4be46cff:7450Understand this warning
 [log] > [interstitials]: clear asset player "1748497614_3192933030-4-3291251112" toSegment: null
 [1748497614_3192933030-4-3291251112] [log] > destroy
 [1748497614_3192933030-4-3291251112] [log] > detachMedia
 [1748497614_3192933030-4-3291251112] [log] > [buffer-controller]: media source detaching
 [1748497614_3192933030-4-3291251112] [log] > [stream-controller]: PARSED->STOPPED
 [1748497614_3192933030-4-3291251112] [log] > [subtitle-stream-controller]: IDLE->STOPPED
 [log] > [interstitials]: setSchedulePosition 19, 4
 [log] > [interstitials]: INTERSTITIAL_ASSET_STARTED 5/6 ["1748497614_3192933030-5-775159433" 8685.95-8715.99]
iso.ts:58 💬 [LOG][hls-interstitials-player]: Interstitial Asset Playing 1748497614_3192933030 1748497614_3192933030-5-775159433
 [log] > [interstitials]: attaching media to HlsAssetPlayer: ["1748497614_3192933030-5-775159433" 8685.95-8715.99] 70f066ec-f902-4190-a9e9-9b610a6e2867  from detached media
 [1748497614_3192933030-5-775159433] [log] > attachMedia
 [1748497614_3192933030-5-775159433] [log] > [buffer-controller]: created media source: MediaSource
 [1748497614_3192933030-4-3291251112] [log] > detachMedia
 [1748497614_3192933030-5-775159433] [log] > destroy
 [warn] > [interstitials]: INTERSTITIAL_ASSET_ERROR ["1748497614_3192933030-5-775159433" 8685.95-8715.99] Error: Asset player destroyed unexpectedly 1748497614_3192933030-5-775159433
overrideMethod @ hook.js:608
(anonymous) @ 
handleAssetItemError @ hls__interstitials__beta__js.js?v=6eab37a8:23505
(anonymous) @ hls__interstitials__beta__js.js?v=6eab37a8:23388
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:31323
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:21159
(anonymous) @ 
(anonymous) @ hls-js-player.ts:240
sentryWrapped @ @sentry_react.js?v=4be46cff:7450
setTimeout
(anonymous) @ @sentry_react.js?v=4be46cff:9956
interstitialStartedHandler @ hls-js-player.ts:233
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
advanceSchedule @ hls__interstitials__beta__js.js?v=6eab37a8:22674
setSchedulePosition @ hls__interstitials__beta__js.js?v=6eab37a8:22639
InterstitialsController.onTimeupdate @ hls__interstitials__beta__js.js?v=6eab37a8:21893
sentryWrapped @ @sentry_react.js?v=4be46cff:7450Understand this warning
 [log] > [interstitials]: clear asset player "1748497614_3192933030-5-775159433" toSegment: null
 [1748497614_3192933030-5-775159433] [log] > destroy
 [1748497614_3192933030-5-775159433] [log] > detachMedia
 [1748497614_3192933030-5-775159433] [log] > [buffer-controller]: media source detaching
 [1748497614_3192933030-5-775159433] [log] > [stream-controller]: PARSED->STOPPED
 [1748497614_3192933030-5-775159433] [log] > [subtitle-stream-controller]: IDLE->STOPPED
 [log] > [interstitials]: INTERSTITIALS_BUFFERED_TO_BOUNDARY [primary: 8790.70-9265.32] (-0.00 remaining)
 [log] > startLoad(8790.698666660748)
 [log] > [level-controller]: reload live playlist 256000bps in 5079 ms
 [log] > [stream-controller]: STOPPED->IDLE
 [log] > [stream-controller]: Loading key for 84644 of [83773-85629], level 3
 [log] > [stream-controller]: IDLE->KEY_LOADING
 [log] > [stream-controller]: Loading main sn: 84644 of level 3 (frag:[8790.699-8800.512]) cc: 0 [83773-85629], target: 8790.699
 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
 [log] > [subtitle-stream-controller]: STOPPED->IDLE
 [log] > [interstitials]: setSchedulePosition 20, undefined
 [log] > [interstitials]: INTERSTITIAL_ENDED ["1748497614_3192933030" 8610.73-8790.70] ["1748497614_3192933030": 8610.73-8790.70]
iso.ts:58 💬 [LOG][hls-interstitials-player]: Interstitial Pod Ended {event: InterstitialEvent, schedule: Array(43), scheduleIndex: 20}
 [log] > startLoad(8790.698666660748)
 [log] > [level-controller]: reload live playlist 256000bps in 5078 ms
 [log] > [stream-controller]: FRAG_LOADING->STOPPED
 [log] > [stream-controller]: STOPPED->IDLE
 [log] > [subtitle-stream-controller]: IDLE->STOPPED
 [log] > [subtitle-stream-controller]: STOPPED->IDLE
 [log] > [interstitials]: resuming [primary: 8790.70-9265.32]
 [log] > [interstitials]: attaching media to Primary from detached media
 [log] > attachMedia
 [log] > [buffer-controller]: created media source: MediaSource
 [log] > [interstitials]: INTERSTITIALS_PRIMARY_RESUMED [primary: 8790.70-9265.32]
 [1748497614_3192933030-5-775159433] [log] > detachMedia
 [warn] > [stream-controller]: Fragment 84644 of level 3 was aborted
overrideMethod @ hook.js:608
(anonymous) @ 
handleFragLoadAborted @ hls__interstitials__beta__js.js?v=6eab37a8:8486
handleFragLoadError @ hls__interstitials__beta__js.js?v=6eab37a8:7991
(anonymous) @ hls__interstitials__beta__js.js?v=6eab37a8:7951
Promise.catch
_doFragLoad @ hls__interstitials__beta__js.js?v=6eab37a8:7951
_loadFragForPlayback @ hls__interstitials__beta__js.js?v=6eab37a8:7653
loadFragment @ hls__interstitials__beta__js.js?v=6eab37a8:7640
loadFragment @ hls__interstitials__beta__js.js?v=6eab37a8:29456
doTickIdle @ hls__interstitials__beta__js.js?v=6eab37a8:29445
doTick @ hls__interstitials__beta__js.js?v=6eab37a8:29348
tick @ hls__interstitials__beta__js.js?v=6eab37a8:5275
startLoad @ hls__interstitials__beta__js.js?v=6eab37a8:29299
startLoad @ hls__interstitials__beta__js.js?v=6eab37a8:31433
startLoadingPrimaryAt @ hls__interstitials__beta__js.js?v=6eab37a8:22823
preloadPrimary @ hls__interstitials__beta__js.js?v=6eab37a8:23104
bufferedToItem @ hls__interstitials__beta__js.js?v=6eab37a8:23094
updateBufferedPos @ hls__interstitials__beta__js.js?v=6eab37a8:23013
checkBuffer @ hls__interstitials__beta__js.js?v=6eab37a8:22985
advanceAfterAssetEnded @ hls__interstitials__beta__js.js?v=6eab37a8:22568
handleAssetItemError @ hls__interstitials__beta__js.js?v=6eab37a8:23541
(anonymous) @ hls__interstitials__beta__js.js?v=6eab37a8:23388
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:31323
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:21159
(anonymous) @ 
(anonymous) @ hls-js-player.ts:240
sentryWrapped @ @sentry_react.js?v=4be46cff:7450
setTimeout
(anonymous) @ @sentry_react.js?v=4be46cff:9956
interstitialStartedHandler @ hls-js-player.ts:233
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
advanceSchedule @ hls__interstitials__beta__js.js?v=6eab37a8:22674
setSchedulePosition @ hls__interstitials__beta__js.js?v=6eab37a8:22639
InterstitialsController.onTimeupdate @ hls__interstitials__beta__js.js?v=6eab37a8:21893
sentryWrapped @ @sentry_react.js?v=4be46cff:7450Understand this warning
iso.ts:58 ❗ [WARN]: No mapping found for event: {type: 'waiting', playhead: 0, durationSec: NaN, livePointSec: 18301.502, totalDurationSec: 18003.66933334624, …}
overrideMethod @ hook.js:608
(anonymous) @ 
(anonymous) @ iso.ts:58
handleEvents @ index.ts:498
(anonymous) @ event-manager.ts:33
emit @ event-manager.ts:32
handleEvent @ base-player.ts:195
sentryWrapped @ @sentry_react.js?v=4be46cff:7450
waiting
playWithCatch @ hls__interstitials__beta__js.js?v=6eab37a8:21778
advanceSchedule @ hls__interstitials__beta__js.js?v=6eab37a8:22724
setSchedulePosition @ hls__interstitials__beta__js.js?v=6eab37a8:22639
advanceAfterAssetEnded @ hls__interstitials__beta__js.js?v=6eab37a8:22570
handleAssetItemError @ hls__interstitials__beta__js.js?v=6eab37a8:23541
(anonymous) @ hls__interstitials__beta__js.js?v=6eab37a8:23388
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:31323
destroy @ hls__interstitials__beta__js.js?v=6eab37a8:21159
(anonymous) @ 
(anonymous) @ hls-js-player.ts:240
sentryWrapped @ @sentry_react.js?v=4be46cff:7450
setTimeout
(anonymous) @ @sentry_react.js?v=4be46cff:9956
interstitialStartedHandler @ hls-js-player.ts:233
emit @ hls__interstitials__beta__js.js?v=6eab37a8:8857
emit @ hls__interstitials__beta__js.js?v=6eab37a8:31289
trigger @ hls__interstitials__beta__js.js?v=6eab37a8:31293
advanceSchedule @ hls__interstitials__beta__js.js?v=6eab37a8:22674
setSchedulePosition @ hls__interstitials__beta__js.js?v=6eab37a8:22639
InterstitialsController.onTimeupdate @ hls__interstitials__beta__js.js?v=6eab37a8:21893
sentryWrapped @ @sentry_react.js?v=4be46cff:7450Understand this warning
 [log] > [buffer-controller]: Media source opened
 [log] > [buffer-controller]: Updating MediaSource duration to 18347.264
 [log] > [buffer-controller]: checkPendingTracks (pending: 0 codec events expected: 1) {}
 [info] > [abr]: buffer is empty, optimal quality level 3
 [log] > [stream-controller]: Loading main sn: 84644 of level 3 (frag:[8790.699-8800.512]) cc: 0 [83773-85629], target: 8790.699
 [log] > [stream-controller]: IDLE->FRAG_LOADING
 [log] > [transmuxer-interface]: Starting new transmux session for main sn: 84644 level: 3 id: 1
        discontinuity: true
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 8790.698666660748
        initSegmentChange: true
 [log] > [stream-controller]: Loaded main sn: 84644 of level 3
 [log] > ADTS sync word found !
 [log] > [mp4-remuxer]: ISGenerated flag reset
 [log] > [mp4-remuxer]: initPTS & initDTS reset
 [log] > [mp4-remuxer]: reset next timestamp
 [log] > manifest codec:mp4a.40.2, parsed codec:mp4a.40.2, channels:2, rate:48000 (ADTS object type:2 sampling index:3)
 [log] > [stream-controller]: FRAG_LOADING->PARSING
 [log] > [stream-controller]: Init audio buffer, container:audio/mp4, codecs[selected/level/parsed]=[mp4a.40.2/mp4a.40.2/mp4a.40.2]
 [log] > [buffer-controller]: BUFFER_CODECS: "audio" (current SB count 0)
 [log] > [buffer-controller]: checkPendingTracks (pending: 1 codec events expected: 1) {"audio":{"listeners":[],"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main"}}
 [log] > [buffer-controller]: creating sourceBuffer(audio/mp4;codecs=mp4a.40.2) {"listeners":[],"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main"}
 [log] > [buffer-controller]: SourceBuffers created. Running queue:
video: (none)
audio: (SourceBuffer)
audiovideo: (none) }
 [log] > [transmuxer.ts]: Flushed main sn: 84644 of level 3
 [log] > [stream-controller]: PARSING->PARSED
 [log] > [stream-controller]: Parsed main sn: 84644 of level 3 (frag:[8790.699-8800.512])
 [log] > [stream-controller]: Buffered main sn: 84644 of level 3 (frag:[8790.699-8800.512] > buffer:[8790.699-8800.512])
 [log] > [stream-controller]: PARSED->IDLE
 [log] > [stream-controller]: seek to target start position 8790.698666660748 from current time 0 buffer start 8790.698645
 [log] > [stream-controller]: Loading main sn: 84645 of level 3 (frag:[8800.512-8810.325]) cc: 0 [83773-85629], target: 8800.512
 [log] > [stream-controller]: IDLE->FRAG_LOADING
 [log] > [stream-controller]: media seeking to 8790.699, state: FRAG_LOADING
 [log] > [audio-stream-controller]: media seeking to 8790.699, state: STOPPED
 [log] > [subtitle-stream-controller]: media seeking to 8790.699, state: IDLE
 [log] > [stream-controller]: Media seeked to 8790.712
 [log] > [stream-controller]: Loaded main sn: 84645 of level 3
 [log] > [stream-controller]: FRAG_LOADING->PARSING
 [log] > [transmuxer.ts]: Flushed main sn: 84645 of level 3
 [log] > [stream-controller]: PARSING->PARSED
 [log] > [stream-controller]: Parsed main sn: 84645 of level 3 (frag:[8800.512-8810.325])
 [log] > [stream-controller]: Buffered main sn: 84645 of level 3 (frag:[8800.512-8810.325] > buffer:[8790.699-8810.325])
 [log] > [stream-controller]: PARSED->IDLE
 [log] > [stream-controller]: Loading main sn: 84646 of level 3 (frag:[8810.325-8820.139]) cc: 0 [83773-85629], target: 8810.325
 [log] > [stream-controller]: IDLE->FRAG_LOADING
 [log] > [stream-controller]: Loaded main sn: 84646 of level 3
 [log] > [stream-controller]: FRAG_LOADING->PARSING
 [log] > [transmuxer.ts]: Flushed main sn: 84646 of level 3
 [log] > [stream-controller]: PARSING->PARSED
 [log] > [stream-controller]: Parsed main sn: 84646 of level 3 (frag:[8810.325-8820.139])
 [log] > [stream-controller]: Buffered main sn: 84646 of level 3 (frag:[8810.325-8820.139] > buffer:[8790.699-8820.139])
 [log] > [stream-controller]: PARSED->IDLE
 [log] > [stream-controller]: Loading main sn: 84647 of level 3 (frag:[8820.139-8829.952]) cc: 0 [83773-85629], target: 8820.139
 [log] > [stream-controller]: IDLE->FRAG_LOADING
 [log] > [stream-controller]: Loaded main sn: 84647 of level 3
 [log] > [stream-controller]: FRAG_LOADING->PARSING
 [log] > [transmuxer.ts]: Flushed main sn: 84647 of level 3
 [log] > [stream-controller]: PARSING->PARSED
 [log] > [stream-controller]: Parsed main sn: 84647 of level 3 (frag:[8820.139-8829.952])
 [log] > [stream-controller]: Buffered main sn: 84647 of level 3 (frag:[8820.139-8829.952] > buffer:[8790.699-8829.952])
 [log] > [stream-controller]: PARSED->IDLE
 [log] > [stream-controller]: Loading main sn: 84648 of level 3 (frag:[8829.952-8839.765]) cc: 0 [83773-85629], target: 8829.952
 [log] > [stream-controller]: IDLE->FRAG_LOADING
 [log] > [stream-controller]: Loaded main sn: 84648 of level 3
 [log] > [stream-controller]: FRAG_LOADING->PARSING
 [log] > [transmuxer.ts]: Flushed main sn: 84648 of level 3
 [log] > [stream-controller]: PARSING->PARSED
 [log] > [stream-controller]: Parsed main sn: 84648 of level 3 (frag:[8829.952-8839.765])
 [log] > [stream-controller]: Buffered main sn: 84648 of level 3 (frag:[8829.952-8839.765] > buffer:[8790.699-8839.765])
 [log] > [stream-controller]: PARSED->IDLE
 [log] > [stream-controller]: Loading main sn: 84649 of level 3 (frag:[8839.765-8849.579]) cc: 0 [83773-85629], target: 8839.765
 [log] > [stream-controller]: IDLE->FRAG_LOADING
 [log] > [stream-controller]: Loaded main sn: 84649 of level 3
 [log] > [stream-controller]: FRAG_LOADING->PARSING
 [log] > [transmuxer.ts]: Flushed main sn: 84649 of level 3
 [log] > [stream-controller]: PARSING->PARSED
 [log] > [stream-controller]: Parsed main sn: 84649 of level 3 (frag:[8839.765-8849.579])
 [log] > [stream-controller]: Buffered main sn: 84649 of level 3 (frag:[8839.765-8849.579] > buffer:[8790.699-8849.579])
 [log] > [stream-controller]: PARSED->IDLE
 [log] > [stream-controller]: Loading main sn: 84650 of level 3 (frag:[8849.579-8859.392]) cc: 0 [83773-85629], target: 8849.579
 [log] > [stream-controller]: IDLE->FRAG_LOADING
 [log] > [stream-controller]: Loaded main sn: 84650 of level 3
 [log] > [stream-controller]: FRAG_LOADING->PARSING
 [log] > [transmuxer.ts]: Flushed main sn: 84650 of level 3
 [log] > [stream-controller]: PARSING->PARSED
 [log] > [stream-controller]: Parsed main sn: 84650 of level 3 (frag:[8849.579-8859.392])
 [log] > [stream-controller]: Buffered main sn: 84650 of level 3 (frag:[8849.579-8859.392] > buffer:[8790.699-8859.392])
 [log] > [stream-controller]: PARSED->IDLE
 [log] > [level-controller]: Loading level index 3 age 9.6
 [log] > [level-controller]: live playlist 3 REFRESHED 85630--1
 [log] > [level-controller]: reload live playlist 256000bps in 9702 ms

whenmoon avatar May 29 '25 09:05 whenmoon

it seems to switch back to the primary at the resumption point / playout limit

Does your interstitial have a resumption offset attribute? The default is to use the duration of the interstitial as the resumption offset. We should be using the total of all asset durations, ignoring those that errored. If you specify a resumption offset however, it will be honored once the interstitial has begun.

robwalch avatar May 29 '25 14:05 robwalch

I do see a resumptionOffset being logged here:

this._hls?.interstitialsManager?.interstitialPlayer?.assetPlayers.forEach(
          hlsAssetPlayer => {
            if (hlsAssetPlayer) {
              console.log('resumptionOffset', hlsAssetPlayer.interstitial.resumptionOffset);
            }
            return hlsAssetPlayer?.destroy();
          },
        );

I am expecting that by assigning a resumeOffset like this:

this._hls?.interstitialsManager?.interstitialPlayer?.assetPlayers.forEach(
          hlsAssetPlayer => {
            if (hlsAssetPlayer) {
              hlsAssetPlayer.interstitial.resumeOffset = -100;
            }
            return hlsAssetPlayer?.destroy();
          },
        );

I can update the resumptionOffset. However, when I log the updated offset and see it, calling destroy still seems to resume playback at the original resumptionOffset

whenmoon avatar May 30 '25 13:05 whenmoon

I do see a resumptionOffset being logged here:

resumptionOffset is the calculated resumption offset (either Interstitial X-RESUME-OFFSET or duration (plus cumulativeDuration of abutting interstitials)).

I am expecting that by assigning a resumeOffset like this:

Changing the parsed X-RESUME-OFFSET (this.resumeOffset) will only have unexpected results. It is primarily used at the time of playlist parsing to build a schedule. Modifying it after the fact is not supported.

Avoid using X-RESUME-OFFSET with Live HLS unless you need precise join times for DVR playback and are OK with impossible resume offsets being ignored at the live edge (when the asset duration or playout ends up being a different value and the only available join time is the edge).

calling destroy still seems to resume playback at the original resumptionOffset

That is likely the start time of the next primary item in the schedule:

Schedule:

  [primary: 0.00-2070.66],
  ["1748489311_127552254": 2070.66-2162.43],
  [primary: 2162.43-3033.81],

/*****   3033.81 - 6722.52   *****/

  [primary: 6722.52-7427.67],
  ["1748494668_1509605975": 7427.67-7532.93],
  [primary: 7547.52-8646.57],  // starts 15 seconds after the end time of the interstitial suggesting a lot of skipped slate

/*****   8646.57 - 18227.93   *****/

  ["1748505469_1869247371": 18227.93-18347.86],
  [primary: 18347.86-Infinity] 

pos: 7437.633209`

However, after #7263, what we expect to happen when all interstitial assets error, is for the schedule to update, such that the interstitial has a zero-length range.

I'll need to reproduce this to see why the schedule and position is advancing through the destroyed assets. Sample HLS Date Range tags and asset lists would help. Can you share those?

robwalch avatar Jun 02 '25 18:06 robwalch

Hi Rob, thanks for the response. Here are some sample tags with an asset list, let me know if more info is required:

#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:10 #EXT-X-MEDIA-SEQUENCE:7101 #EXT-X-PROGRAM-DATE-TIME:2025-06-03T10:37:58.644Z #EXT-X-KEY:METHOD=AES-128,URI=“..."

Primary segment before interstitial #EXTINF:9.813333333, 2025154/10/4510_430.aac

Prefetch signal for interstitial #EXT-X-DATERANGE:ID="prefetch_1748947523_3707025557",START-DATE="2025-06-03T10:45:20.244Z",END-DATE="2025-06-03T10:45:23.743Z",X-PREFETCH-DURATION="180",X-PREFETCH-ID="1748947523_3707025557" #EXTINF:3.498666667, 2025154/10/4520_244.aac

Interstitial marker #EXT-X-DATERANGE:ID="1748947523_3707025557",CLASS="com.apple.hls.interstitial",START-DATE="2025-06-03T10:45:23.743Z",PLANNED-DURATION=180,X-ASSET-LIST="awsp://interstitial/req?_HLS_interstitial_id=1748947523_3707025557&_pod_duration=180",X-SNAP="OUT,IN",X-TIMELINE-OCCUPIES="RANGE",X-TIMELINE-STYLE="HIGHLIGHT",X-CONTENT-MAY-VARY="YES" #EXTINF:9.813333333, 2025154/10/4523_742.aac #EXTINF:9.813333333, 2025154/10/4533_556.aac #EXTINF:9.813333334, 2025154/10/4543_369.aac #EXTINF:9.813333333, 2025154/10/4553_182.aac

More interstitial segments (truncated for brevity)...

Interstitial end marker #EXT-X-DATERANGE:ID="1748947523_3707025557",CLASS="com.apple.hls.interstitial",START-DATE="2025-06-03T10:45:23.743Z",END-DATE="2025-06-03T10:48:23.668Z",X-PLAYOUT-LIMIT=179.925333333,X-RESUME-OFFSET=179.925333333 #EXTINF:3.285333333, 2025154/10/4820_382.aac

whenmoon avatar Jun 03 '25 16:06 whenmoon

Thanks @whenmoon,

Can you also share a sample of the asset-list?

Is it returning a total asset duration of 179.925333333?

Why include X-RESUME-OFFSET in a live playlist? Have you tested with and without across HLS clients?

robwalch avatar Jun 03 '25 17:06 robwalch

Based on the logs, the issue seems to be that the interstitial has started, as each asset errors out, playback is advancing to the next. I'm not sure how the timeline position advanced during the teardown (from 7427.67 to 7437.633209). One guess is that you have 15 second assets and one advanced enough for it's duration to be taken into account when advancing the schedule on error.

robwalch avatar Jun 03 '25 17:06 robwalch

It makes sense to destroy the assets in reverse order down to the active asset. This should prevent the water-falling from one asset to the next that we're seeing in your logs.

This works for me with interstitial assets appending in place (X-RESUME-OFFSET had no effect when all assets are destroyed). The micro-seek on append is to flush the rendering pipeline of the current ad segments that are playing. Pausing playback on the buffering asset also helps prevent any further buffered ad playback following the interruption.

const interstitialPlayer = hls.interstitialsManager?.interstitialPlayer;
if (interstitialPlayer) {
  const assetPlayers = interstitialPlayer.assetPlayers;
  const playingIndex = interstitialPlayer.playingIndex;
  hls.once(Hls.Events.BUFFER_APPENDED, () => {
    hls.media.currentTime -= 0.001; // flush the rendering pipeline of ad content
  });
  for (let i = assetPlayers.length; i >= playingIndex; i--) {
    const assetPlayer = assetPlayers[i];
    if (assetPlayer) {
      assetPlayer.hls?.media?.pause(); // media belongs to the buffering asset, not the playing asset when appending in place
      assetPlayer.destroy();
    }
  }
}

This method works for me with interstitialAppendInPlace set either way, and I can run it before or after the interstitial has started playing (before, so long as we're buffered to the next interstitial boundary and the asset list is loaded with interstitialPlayer instantiated). The seek and pause may not be necessary with interstitialAppendInPlace: false as the MediaSource will be torn down in that mode.

robwalch avatar Jun 03 '25 22:06 robwalch

Hi @robwalch, really appreciate this, reversing the order of calling destroy on the asset players was enough to get this working for me. I did hear some audio when seeking after destroy, but moving that into the BUFFER_APPENDED handler solved that too. 🙏🏼

whenmoon avatar Jun 04 '25 14:06 whenmoon