Vodafone STB | VOD streams won't reach ENDED state
We've noticed some peculiar behaviour on a specific device. It concerns a (Vodafone) STB, on which VOD streams can't seem to reach the ENDED state on almost all occasions. This happens when trickplaying (seeking) to the 'end' or by letting the stream play until the end.
We have a custom build of RxPlayer, based on version 4 (4.3.0-dev.2025012900). I've collected some logs from a VOD stream which has a duration of 7741.28. The player doesn't seem to get past position 7741.034666 in this case. Note that this postion is not the same for each scenario, it differs slightly.
GC: cleaning range from SegmentSink 7730 7730.722666
AVSB: receiving order to remove data from the SourceBuffer video 7730 7730.722666
SBI: receiving order to remove data from the SourceBuffer video 7730 7730.722666
SBI: removing data from SourceBuffer video 7730 7730.722666
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
GC: cleaning range from SegmentSink 7729.6 7730.722666
AVSB: receiving order to remove data from the SourceBuffer audio 7729.6 7730.722666
SBI: receiving order to remove data from the SourceBuffer audio 7729.6 7730.722666
SBI: removing data from SourceBuffer audio 7729.6 7730.722666
Init: MediaSource opened
Init: Reacting to MediaSource open in duration updater
Init: MediaSource re-opened while end-of-stream is active
Init: Trying to call endOfStream
Init: Waiting SourceBuffers to be updated before calling endOfStream.
Init: Trying to call endOfStream
Init: Triggering end of stream
SI: synchronizing video buffered ranges: 7732-7741.28
SI: 1 segments GCed. video
SI: current video inventory timeline: 7732.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7730.730666-7741.28
SI: 1 segments GCed. audio
SI: Segment partially GCed at the start audio 7729.983999 7730.730666
SI: current audio inventory timeline: 7730.73|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Init: Reacting to MediaSource ended in duration updater
API: current media element state tick event timeupdate position 7736.640021 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 4 pendingPosition
API: current playback timeline: 7732.00|==9.28==|7741.28 ^7736.640021 timeupdate
SI: synchronizing video buffered ranges: 7732-7741.28
SI: current video inventory timeline: 7732.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7730.730666-7741.28
SI: current audio inventory timeline: 7730.73|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
GC: cleaning range from SegmentSink 7730.730666 7731.640021
AVSB: receiving order to remove data from the SourceBuffer audio 7730.730666 7731.640021
SBI: receiving order to remove data from the SourceBuffer audio 7730.730666 7731.640021
SBI: removing data from SourceBuffer audio 7730.730666 7731.640021
Init: MediaSource opened
Init: Reacting to MediaSource open in duration updater
Init: MediaSource re-opened while end-of-stream is active
Init: Trying to call endOfStream
Init: Waiting SourceBuffers to be updated before calling endOfStream.
Init: Trying to call endOfStream
Init: Triggering end of stream
SI: synchronizing audio buffered ranges: 7731.648-7741.28
SI: Segment partially GCed at the start audio 7730.730666 7731.648
SI: current audio inventory timeline: 7731.65|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Init: Reacting to MediaSource ended in duration updater
API: current media element state tick event timeupdate position 7737.770666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 4 pendingPosition
API: current playback timeline: 7732.00|==9.28==|7741.28 ^7737.770666 timeupdate
SI: synchronizing video buffered ranges: 7732-7741.28
SI: current video inventory timeline: 7732.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7731.648-7741.28
SI: current audio inventory timeline: 7731.65|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
GC: cleaning range from SegmentSink 7732 7732.770666
AVSB: receiving order to remove data from the SourceBuffer video 7732 7732.770666
SBI: receiving order to remove data from the SourceBuffer video 7732 7732.770666
SBI: removing data from SourceBuffer video 7732 7732.770666
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
GC: cleaning range from SegmentSink 7731.648 7732.770666
AVSB: receiving order to remove data from the SourceBuffer audio 7731.648 7732.770666
SBI: receiving order to remove data from the SourceBuffer audio 7731.648 7732.770666
SBI: removing data from SourceBuffer audio 7731.648 7732.770666
Init: MediaSource opened
Init: Reacting to MediaSource open in duration updater
Init: MediaSource re-opened while end-of-stream is active
Init: Trying to call endOfStream
Init: Waiting SourceBuffers to be updated before calling endOfStream.
Init: Trying to call endOfStream
Init: Triggering end of stream
SI: synchronizing video buffered ranges: 7734-7741.28
SI: 1 segments GCed. video
SI: current video inventory timeline: 7734.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7732.778666-7741.28
SI: 1 segments GCed. audio
SI: Segment partially GCed at the start audio 7731.989333 7732.778666
SI: current audio inventory timeline: 7732.78|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Init: Reacting to MediaSource ended in duration updater
API: current media element state tick event timeupdate position 7738.666644 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 4 pendingPosition
API: current playback timeline: 7734.00|==7.28==|7741.28 ^7738.666644 timeupdate
SI: synchronizing video buffered ranges: 7734-7741.28
SI: current video inventory timeline: 7734.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7732.778666-7741.28
SI: current audio inventory timeline: 7732.78|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
GC: cleaning range from SegmentSink 7732.778666 7733.666644
AVSB: receiving order to remove data from the SourceBuffer audio 7732.778666 7733.666644
SBI: receiving order to remove data from the SourceBuffer audio 7732.778666 7733.666644
SBI: removing data from SourceBuffer audio 7732.778666 7733.666644
Init: MediaSource opened
Init: Reacting to MediaSource open in duration updater
Init: Trying to call endOfStream
Init: Waiting SourceBuffers to be updated before calling endOfStream.
Init: MediaSource re-opened while end-of-stream is active
Init: Trying to call endOfStream
Init: Triggering end of stream
SI: synchronizing audio buffered ranges: 7733.674666-7741.28
SI: Segment partially GCed at the start audio 7732.778666 7733.674666
SI: current audio inventory timeline: 7733.67|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Init: Reacting to MediaSource ended in duration updater
API: current media element state tick event timeupdate position 7739.776021 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 4 pendingPosition
API: current playback timeline: 7734.00|==7.28==|7741.28 ^7739.776021 timeupdate
SI: synchronizing video buffered ranges: 7734-7741.28
SI: current video inventory timeline: 7734.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7733.674666-7741.28
SI: current audio inventory timeline: 7733.67|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
GC: cleaning range from SegmentSink 7734 7734.776021
AVSB: receiving order to remove data from the SourceBuffer video 7734 7734.776021
SBI: receiving order to remove data from the SourceBuffer video 7734 7734.776021
SBI: removing data from SourceBuffer video 7734 7734.776021
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
GC: cleaning range from SegmentSink 7733.674666 7734.776021
AVSB: receiving order to remove data from the SourceBuffer audio 7733.674666 7734.776021
SBI: receiving order to remove data from the SourceBuffer audio 7733.674666 7734.776021
SBI: removing data from SourceBuffer audio 7733.674666 7734.776021
Init: MediaSource opened
Init: Reacting to MediaSource open in duration updater
Init: MediaSource re-opened while end-of-stream is active
Init: Trying to call endOfStream
Init: Waiting SourceBuffers to be updated before calling endOfStream.
Init: Trying to call endOfStream
Init: Triggering end of stream
SI: synchronizing video buffered ranges: 7736-7741.28
SI: 1 segments GCed. video
SI: current video inventory timeline: 7736.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7734.784-7741.28
SI: 1 segments GCed. audio
SI: Segment partially GCed at the start audio 7733.994666 7734.784
SI: current audio inventory timeline: 7734.78|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Init: Reacting to MediaSource ended in duration updater
API: current media element state tick event timeupdate position 7740.608021 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 4 pendingPosition
API: current playback timeline: 7736.00|==5.28==|7741.28 ^7740.608021 timeupdate
SI: synchronizing video buffered ranges: 7736-7741.28
SI: current video inventory timeline: 7736.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7734.784-7741.28
SI: current audio inventory timeline: 7734.78|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
GC: cleaning range from SegmentSink 7734.784 7735.608021
AVSB: receiving order to remove data from the SourceBuffer audio 7734.784 7735.608021
SBI: receiving order to remove data from the SourceBuffer audio 7734.784 7735.608021
SBI: removing data from SourceBuffer audio 7734.784 7735.608021
Init: MediaSource opened
Init: Reacting to MediaSource open in duration updater
Init: MediaSource re-opened while end-of-stream is active
Init: Trying to call endOfStream
Init: Waiting SourceBuffers to be updated before calling endOfStream.
Init: Trying to call endOfStream
Init: Triggering end of stream
SI: synchronizing audio buffered ranges: 7735.616-7741.28
SI: Segment partially GCed at the start audio 7734.784 7735.616
SI: current audio inventory timeline: 7735.62|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Init: Reacting to MediaSource ended in duration updater
API: current media element state tick event timeupdate position 7741.034666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 2 pendingPosition
API: current playback timeline: 7736.00|==5.28==|7741.28 ^7741.034666 timeupdate
SI: synchronizing video buffered ranges: 7736-7741.28
SI: current video inventory timeline: 7736.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7735.616-7741.28
SI: current audio inventory timeline: 7735.62|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
GC: cleaning range from SegmentSink 7736 7736.034666
AVSB: receiving order to remove data from the SourceBuffer video 7736 7736.034666
SBI: receiving order to remove data from the SourceBuffer video 7736 7736.034666
SBI: removing data from SourceBuffer video 7736 7736.034666
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
GC: cleaning range from SegmentSink 7735.616 7736.034666
AVSB: receiving order to remove data from the SourceBuffer audio 7735.616 7736.034666
SBI: receiving order to remove data from the SourceBuffer audio 7735.616 7736.034666
SBI: removing data from SourceBuffer audio 7735.616 7736.034666
Init: MediaSource opened
Init: Reacting to MediaSource open in duration updater
Init: MediaSource re-opened while end-of-stream is active
Init: Trying to call endOfStream
Init: Waiting SourceBuffers to be updated before calling endOfStream.
Init: Trying to call endOfStream
Init: Triggering end of stream
SI: synchronizing video buffered ranges: 7738-7741.28
SI: 1 segments GCed. video
SI: current video inventory timeline: 7738.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7736.042666-7741.28
SI: 1 segments GCed. audio
SI: Segment partially GCed at the start audio 7735.978666 7736.042666
SI: current audio inventory timeline: 7736.04|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Init: Reacting to MediaSource ended in duration updater
API: current media element state tick event timeupdate position 7741.034666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 2 pendingPosition
API: current playback timeline: 7738.00|==3.28==|7741.28 ^7741.034666 timeupdate
SI: synchronizing video buffered ranges: 7738-7741.28
SI: current video inventory timeline: 7738.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7736.042666-7741.28
SI: current audio inventory timeline: 7736.04|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
API: current media element state tick event timeupdate position 7741.034666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 2 pendingPosition
API: current playback timeline: 7738.00|==3.28==|7741.28 ^7741.034666 timeupdate
SI: synchronizing video buffered ranges: 7738-7741.28
SI: current video inventory timeline: 7738.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7736.042666-7741.28
SI: current audio inventory timeline: 7736.04|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
API: current media element state tick event timeupdate position 7741.034666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 2 pendingPosition
API: current playback timeline: 7738.00|==3.28==|7741.28 ^7741.034666 timeupdate
SI: synchronizing video buffered ranges: 7738-7741.28
SI: current video inventory timeline: 7738.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7736.042666-7741.28
SI: current audio inventory timeline: 7736.04|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
API: current media element state tick event timeupdate position 7741.034666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 2 pendingPosition
API: current playback timeline: 7738.00|==3.28==|7741.28 ^7741.034666 timeupdate
SI: synchronizing video buffered ranges: 7738-7741.28
SI: current video inventory timeline: 7738.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7736.042666-7741.28
SI: current audio inventory timeline: 7736.04|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
API: current media element state tick event timeupdate position 7741.034666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 2 pendingPosition
API: current playback timeline: 7738.00|==3.28==|7741.28 ^7741.034666 timeupdate
SI: synchronizing video buffered ranges: 7738-7741.28
SI: current video inventory timeline: 7738.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7736.042666-7741.28
SI: current audio inventory timeline: 7736.04|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
API: current media element state tick event timeupdate position 7741.034666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 2 pendingPosition
API: current playback timeline: 7738.00|==3.28==|7741.28 ^7741.034666 timeupdate
SI: synchronizing video buffered ranges: 7738-7741.28
SI: current video inventory timeline: 7738.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7736.042666-7741.28
SI: current audio inventory timeline: 7736.04|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
API: current media element state tick event timeupdate position 7741.034666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 2 pendingPosition
API: current playback timeline: 7738.00|==3.28==|7741.28 ^7741.034666 timeupdate
SI: synchronizing video buffered ranges: 7738-7741.28
SI: current video inventory timeline: 7738.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7736.042666-7741.28
SI: current audio inventory timeline: 7736.04|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
API: current media element state tick event timeupdate position 7741.034666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 2 pendingPosition
API: current playback timeline:7738.00|==3.28==|7741.28 ^7741.034666 timeupdate
SI: synchronizing video buffered ranges: 7738-7741.28
SI: current video inventory timeline: 7738.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7736.042666-7741.28
SI: current audio inventory timeline: 7736.04|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
API: current media element state tick event timeupdate position 7741.034666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 2 pendingPosition
API: current playback timeline: 7738.00|==3.28==|7741.28 ^7741.034666 timeupdate
SI: synchronizing video buffered ranges: 7738-7741.28
SI: current video inventory timeline: 7738.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7736.042666-7741.28
SI: current audio inventory timeline: 7736.04|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
API: current media element state tick event timeupdate position 7741.034666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 2 pendingPosition
API: current playback timeline: 7738.00|==3.28==|7741.28 ^7741.034666 timeupdate
SI: synchronizing video buffered ranges: 7738-7741.28
SI: current video inventory timeline: 7738.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7736.042666-7741.28
SI: current audio inventory timeline: 7736.04|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
Hi @peijkelhardt,
It seems the RxPlayer does properly signal to the browser that all data have been communicated through the mediaSource.endOfStream() API (logs: Triggering end of stream), which indicates to the browser that it should trigger all its end of content logic once what has currently been buffered is reached.
We do it multiple times as some operations re-"open" the MediaSource in the meantime, like SBI: removing data from SourceBuffer....
This is normal, as long as the last Init: Triggering end of stream comes after the last Init: MediaSource opened we should have been good.
So it looks like despite this, the lower-level implementation does not trigger its end of stream logic once we almost reached the end of what was pushed to buffers (7741.28) and apparently prefer just stalling with a readyState updated to 2 as if it awaits more data to be communicated...
It looks as a lower-level browser integration issue but we could still look at things:
- If it's possible for you, maybe we could look at that
MediaSource'sreadyStateproperty? It should be set to"ended"at the very end. - The player seem to often remove buffer data, which has the effect of re-opening the
MediaSourcetemporarily, before it being "ended" again. Maybe this back-and-forth leads to a device issue? If you have set options such asmaxBufferBehindormaxVideoBufferSize(or both) we could try without and see if it changes things.
We indeed have some buffer settings:
maxBufferAhead: 30,
wantedBufferAhead: 20,
maxBufferBehind: 5
Removing these doesn't seem to have effect.
About the MediaSource: I've no clue how to extract that from our video element. What would I have to do to collect it?
By the way, the RxPlayer freeze detection requires at least 2 seconds (MINIMUM_BUFFER_AMOUNT_BEFORE_FREEZING) of buffered data, so it will never activate if there's such an issue close to the end.
By the way, the RxPlayer freeze detection requires at least 2 seconds (MINIMUM_BUFFER_AMOUNT_BEFORE_FREEZING) of buffered data, so it will never activate if there's such an issue close to the end.
Yes it seemed so, I also was wondering at first why the freezing logic wasn't starting, good catch :D.
Ultimately I think this is the right call, here I think we're not in a freezing case: we're very close to the current last playable position so it's more about the browser deciding that it does not have enough data to continue (it apparently doesn't know it has to end playback). Generally freezing resolution is just a micro-seek to flush the lower-level's buffers, we could check a seek but I'm not sure this would work.
We could also implement our own fake ending mechanism in the RxPlayer, but the HTML spec has many side behaviors associated to an HTMLMediaElement's ended property being set to true (e.g. playback restarting on play, position going back to 0, perhaps some effects in PiP mode etc.), so it wouldn't be easy to do IMO.
About the MediaSource: I've no clue how to extract that from our video element. What would I have to do to collect it?
Fast and dirty way: we can monkey-patch the endOfStream method so the last one is accessible (to do before the loadVideo call):
const endOfStreamOg = MediaSource.prototype.endOfStream;
let ms = null;
MediaSource.prototype.endOfStream = function() {
ms = this;
return endOfStreamOg.apply(this, arguments);
}
setInterval(() => {
if (!ms) {
return;
}
console.warn("!!!!! Current MediaSource State:", ms.readyState);
}, 2000);
It should be set to ended at the very end where the issue appears, and not open.
I've collected the logs with the monkey-patched MediaSource logs. It seems like this is correct, as the readyState is set to ended. Note that the final state is closed , because I manually stopped the stream here.
Stream: full "empty" AdaptationStream text
GC: cleaning range from SegmentSink 7734 7734.754644
AVSB: receiving order to remove data from the SourceBuffer video 7734 7734.754644
SBI: receiving order to remove data from the SourceBuffer video 7734 7734.754644
SBI: removing data from SourceBuffer video 7734 7734.754644
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
GC: cleaning range from SegmentSink 7733.674666 7734.754644
AVSB: receiving order to remove data from the SourceBuffer audio 7733.674666 7734.754644
SBI: receiving order to remove data from the SourceBuffer audio 7733.674666 7734.754644
SBI: removing data from SourceBuffer audio 7733.674666 7734.754644
Init: MediaSource opened
Init: Reacting to MediaSource open in duration updater
Init: MediaSource re-opened while end-of-stream is active
Init: Trying to call endOfStream
Init: Waiting SourceBuffers to be updated before calling endOfStream.
Init: Trying to call endOfStream
Init: Triggering end of stream
SI: synchronizing video buffered ranges: 7736-7741.28
SI: 1 segments GCed. video
SI: current video inventory timeline: 7736.00|A|7741.28[A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7734.762666-7741.28
SI: 1 segments GCed. audio
SI: Segment partially GCed at the start audio 7733.994666 7734.762666
SI: current audio inventory timeline: 7734.76|A|7741.28[A] P: 1 || R: audio_hun=130897(130897)
Init: Reacting to MediaSource ended in duration updater
!!!!! Current MediaSource State: ended
API: current media element state tick event timeupdate position 7740.650666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 4 pendingPosition
API: current playback timeline: 7736.00|==5.28==|7741.28 ^7740.650666 timeupdate
SI: synchronizing video buffered ranges: 7736-7741.28
SI: current video inventory timeline: 7736.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7734.762666-7741.28
SI: current audio inventory timeline: 7734.76|A|7741.28[A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
GC: cleaning range from SegmentSink 7734.762666 7735.650666
AVSB: receiving order to remove data from the SourceBuffer audio 7734.762666 7735.650666
SBI: receiving order to remove data from the SourceBuffer audio 7734.762666 7735.650666
SBI: removing data from SourceBuffer audio 7734.762666 7735.650666
Init: MediaSource opened
Init: Reacting to MediaSource open in duration updater
Init: MediaSource re-opened while end-of-stream is active
Init: Trying to call endOfStream
Init: Waiting SourceBuffers to be updated before calling endOfStream.
Init: Trying to call endOfStream
Init: Triggering end of stream
SI: synchronizing audio buffered ranges: 7735.658666-7741.28
SI: Segment partially GCed at the start audio 7734.762666 7735.658666
SI: current audio inventory timeline: 7735.66|A|7741.28[A] P: 1 || R: audio_hun=130897(130897)
Init: Reacting to MediaSource ended in duration updater
API: current media element state tick event timeupdate position 7741.034666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 2 pendingPosition
API: current playback timeline: 7736.00|==5.28==|7741.28^7741.034666 timeupdate
SI: synchronizing video buffered ranges: 7736-7741.28
SI: current video inventory timeline: 7736.00|A|7741.28[A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7735.658666-7741.28
SI: current audio inventory timeline: 7735.66|A|7741.28[A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
GC: cleaning range from SegmentSink 7736 7736.034666
AVSB: receiving order to remove data from the SourceBuffer video 7736 7736.034666
SBI: receiving order to remove data from the SourceBuffer video 7736 7736.034666
SBI: removing data from SourceBuffer video 7736 7736.034666
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
GC: cleaning range from SegmentSink 7735.658666 7736.034666
AVSB: receiving order to remove data from the SourceBuffer audio 7735.658666 7736.034666
SBI: receiving order to remove data from the SourceBuffer audio 7735.658666 7736.034666
SBI: removing data from SourceBuffer audio 7735.658666 7736.034666
Init: MediaSource opened
Init: Reacting to MediaSource open in duration updater
Init: MediaSource re-opened while end-of-stream is active
Init: Trying to call endOfStream
Init: Waiting SourceBuffers to be updated before calling endOfStream.
Init: Trying to call endOfStream
Init: Triggering end of stream
SI: synchronizing video buffered ranges: 7738-7741.28
SI: 1 segments GCed. video
SI: current video inventory timeline: 7738.00|A|7741.28[A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7736.042666-7741.28
SI: 1 segments GCed. audio
SI: Segment partially GCed at the start audio 7735.978666 7736.042666
SI: current audio inventory timeline: 7736.04|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Init: Reacting to MediaSource ended in duration updater
!!!!! Current MediaSource State: ended
API: current media element state tick event timeupdate position 7741.034666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 2 pendingPosition
API: current playback timeline: 7738.00|==3.28==|7741.28^7741.034666 timeupdate
SI: synchronizing video buffered ranges: 7738-7741.28
SI: current video inventory timeline: 7738.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7736.042666-7741.28
SI: current audio inventory timeline: 7736.04|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
API: current media element state tick event timeupdate position 7741.034666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 2 pendingPosition
API: current playback timeline: 7738.00|==3.28==|7741.28^7741.034666 timeupdate
SI: synchronizing video buffered ranges: 7738-7741.28
SI: current video inventory timeline: 7738.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7736.042666-7741.28
SI: current audio inventory timeline: 7736.04|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897) Stream: full "empty" AdaptationStream text ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171 !!!!! Current MediaSource State: ended API: current media element state tick event timeupdate position 7741.034666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 2 pendingPosition API: current playback timeline: 7738.00|==3.28==|7741.28 ^7741.034666 timeupdate SI: synchronizing video buffered ranges: 7738-7741.28 SI: current video inventory timeline: 7738.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171) SI: synchronizing audio buffered ranges: 7736.042666-7741.28 SI: current audio inventory timeline: 7736.04|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897) Stream: full "empty" AdaptationStream text ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171 API: current media element state tick event timeupdate position 7741.034666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 2 pendingPosition API: current playback timeline: 7738.00|==3.28==|7741.28 ^7741.034666 timeupdate SI: synchronizing video buffered ranges: 7738-7741.28 SI: current video inventory timeline: 7738.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171) SI: synchronizing audio buffered ranges: 7736.042666-7741.28
SI: current audio inventory timeline: 7736.04|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
!!!!! Current MediaSource State: ended
API: current media element state tick event timeupdate position 7741.034666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 2 pendingPosition
API: current playback timeline: 7738.00|==3.28==|7741.28^7741.034666 timeupdate
SI: synchronizing video buffered ranges: 7738-7741.28
SI: current video inventory timeline: 7738.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7736.042666-7741.28
SI: current audio inventory timeline: 7736.04|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
API: current media element state tick event timeupdate position 7741.034666 seeking 0 internalSeek false rebuffering false freezing false ended false paused false playbackRate 1 readyState 2 pendingPosition
API: current playback timeline: 7738.00|==3.28==|7741.28^7741.034666 timeupdate
SI: synchronizing video buffered ranges: 7738-7741.28
SI: current video inventory timeline: 7738.00|A|7741.28 [A] P: 1 || R: video_eng=1647171(1647171)
SI: synchronizing audio buffered ranges: 7736.042666-7741.28
SI: current audio inventory timeline: 7736.04|A|7741.28 [A] P: 1 || R: audio_hun=130897(130897)
Stream: full "empty" AdaptationStream text
ABR: Choosing representation with bandwidth estimation. 1647171 video_eng=1647171
SB: Aborting SegmentSink audio
AVSB: Calling `dispose` on the SourceBufferInterface
SB: Aborting SegmentSink video
AVSB: Calling `dispose` on the SourceBufferInterface
HTD: Stopping HTMLTextDisplayer
Init: Clearing HTMLMediaElement's src
Init: Revoking previous URL
Locking `contentLock` to clean-up the current content.
DRM: Clearing-up DRM session.
API: playerStateChange event STOPPED
DRM: closing all current sessions.
DRM-LSS: Closing all current MediaKeySessions 2
DRM: Trying to close a MediaKeySession ksidE23B533B
DRM: Trying to close a MediaKeySession ksidC08CF181
!!!!! Current MediaSource State: closed
DRM: Succeeded to close MediaKeySession
DRM-LSS: session was closed, removing it. ksidE23B533B
DRM: Succeeded to close MediaKeySession
API: DRM session cleaned-up with success!
Unlocking `contentLock`. Next content can begin.
DRM-LSS: session was closed, removing it. ksidC08CF181
!!!!! Current MediaSource State: closed