Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Freezed VOD stream and lot of audio discontinuities on Samsung Tizen 2017 #1415

Open
TomaszKowalik opened this issue Mar 25, 2024 · 11 comments

Comments

@TomaszKowalik
Copy link

Hi

This issue is specific to Samsung Tizen 2017 models. We are using 3.23.1 Rx version.

When attempting to play a VOD stream from one of our streaming providers, the RxPlayer freezes indefinitely and fails to play the content. I investigated both Widevine and PlayReady DRM's. For WV, I encountered the following error: EncryptedMediaError (LICENSE_SERVER_CERTIFICATE_ERROR) InvalidAccessError: Failed to set the server certificate on every attempt. However, for the PlayReady license server seemed to be ok, yet the stream still couldn't start. Upon enabling debug mode for RxPlayer, I noticed numerous audio discontinuities.
What's interesting: it only happens when we are trying to play a stream from the beginning. If there is a stop marker set in some further position, then it will play without any issues.
We have such adaptation for that audio track :
<AdaptationSet id="1" group="1" contentType="audio" lang="en" segmentAlignment="true" audioSamplingRate="48000" mimeType="audio/mp4" codecs="mp4a.40.2" startWithSAP="1">
What might be the cause of such issues and how can we fix that?

Below are the relevant logs:

Stream: changing representation audio audio_eng=64000 64000
Stream: Media segments now need to be requested. Starting queue. audio 4
SF: Beginning request audio P: 1 A: 1 R: audio_eng=64000 S: 0-6.016
SF: Beginning request audio P: 1 A: 1 R: audio_eng=64000 S: init
AVSB: receiving order to push data to the SourceBuffer video video P: 1 A: 7 R: video=2099822 S: init
AVSB: updating codec video/mp4;codecs="avc1.4D401F"
AVSB: could not update codec video/mp4;codecs="avc1.4D401F" video/mp4;codecs="avc1.4D401E"
AVSB: pushing segment video video P: 1 A: 7 R: video=2099822 S: init
Stream: no more init segment to request. Cancelling queue. video
SF: Segment request cancelled video P: 1 A: 7 R: video=2099822 S: init
SF: Segment request ended with success video P: 1 A: 7 R: video=2099822 S: init
AVSB: receiving order for validating end of segment video video P: 1 A: 7 R: video=2099822 S: init
DRM: Creating a new temporary session
DRM-LSS: calling `createSession` temporary
DRM-LSS: MediaKeySession added temporary 1
DRM: Binding session events 
Compat: Calling generateRequest on the MediaKeySession
Compat: Trying to move CENC PSSH from init data at the end of it.
AVSB: Acknowledging complete segment video P: 1 A: 7 R: video=2099822 S: init
ABR: Incrementing blocking raise in BufferBasedChooser due to unstable quality 9000
ABR: Choosing representation with bandwidth estimation. 2099822 video=2099822
DRM-LSS: Reusing session: pr-sid-2 temporary
DRM: Init data already processed. Skipping it.
AVSB: receiving order to push data to the SourceBuffer audio audio P: 1 A: 1 R: audio_eng=64000 S: init
AVSB: pushing segment audio audio P: 1 A: 1 R: audio_eng=64000 S: init
Stream: no more init segment to request. Cancelling queue. audio
SF: Segment request cancelled audio P: 1 A: 1 R: audio_eng=64000 S: init
SF: Segment request ended with success audio P: 1 A: 1 R: audio_eng=64000 S: init
AVSB: receiving order for validating end of segment audio audio P: 1 A: 1 R: audio_eng=64000 S: init
AVSB: receiving order to push data to the SourceBuffer audio audio P: 1 A: 1 R: audio_eng=64000 S: 0-6.016
SF: Segment request ended with success audio P: 1 A: 1 R: audio_eng=64000 S: 0-6.016
AVSB: receiving order for validating end of segment audio audio P: 1 A: 1 R: audio_eng=64000 S: 0-6.016
ABR: New last stable representation 64000
DRM: Received message event, type license-request pr-sid-2
DRM: Calling `getLicense` license-request
AVSB: Acknowledging complete segment audio P: 1 A: 1 R: audio_eng=64000 S: init
AVSB: setting `appendWindowEnd` 2894.94
AVSB: pushing segment audio audio P: 1 A: 1 R: audio_eng=64000 S: 0-6.016
AVSB: receiving order to push data to the SourceBuffer video video P: 1 A: 7 R: video=2099822 S: 0-6
AVSB: updating codec video/mp4;codecs="avc1.4D401F"
AVSB: could not update codec video/mp4;codecs="avc1.4D401F" video/mp4;codecs="avc1.4D401E"
AVSB: setting `appendWindowEnd` 2894.94
AVSB: pushing segment video video P: 1 A: 7 R: video=2099822 S: 0-6
SF: Segment request ended with success video P: 1 A: 7 R: video=2099822 S: 0-6
AVSB: receiving order for validating end of segment video video P: 1 A: 7 R: video=2099822 S: 0-6
ABR: New last stable representation 2099822
SF: Beginning request audio P: 1 A: 1 R: audio_eng=64000 S: 6.016-5.994666666666666
SF: Beginning request video P: 1 A: 7 R: video=2099822 S: 6-6
API: current media element state tick event timeupdate position 0 seeking false internalSeek null rebuffering false freezing false ended false paused true playbackRate 1 readyState 0
API: current playback timeline:
0.04|==0.36==|0.40
         ^0 
timeupdate
ABR: Choosing representation with bandwidth estimation. 4499656 video=4499656
Stream: new video bitrate estimate 20637605.91983931
Stream: slow Representation switch video
SI: first segment pushed audio 0 6.016
AVSB: Acknowledging complete segment audio P: 1 A: 1 R: audio_eng=64000 S: 0-6.016
SI: found true buffered start audio 0.042 0
SI: found true buffered end audio 6.015 6.016
API: current media element state tick event loadedmetadata position 0 seeking false internalSeek null rebuffering false freezing false ended false paused true playbackRate 1 readyState 3
API: current playback timeline:
0.04|==0.64==|0.68
         ^0 
loadedmetadata
ABR: Choosing representation with bandwidth estimation. 4499656 video=4499656
Stream: slow Representation switch video
RS: current discontinuity encountered audio 0.042
Init: Set initial time 0
API: Seeking internally 0
Init: Can begin to play content
API: current media element state tick event canplay position 0 seeking true internalSeek null rebuffering true freezing false ended false paused false playbackRate 1 readyState 3
API: current playback timeline:
0.04|==0.64==|0.68
         ^0 
canplay
ABR: Choosing representation with bandwidth estimation. 4499656 video=4499656
Stream: slow Representation switch video
RS: current discontinuity encountered audio 0.042
Init: Pause playback to build buffer
Init: discontinuity found 0 0.05866666666666667
SA: skippable discontinuity found in the stream 0 0.05966666666666667
API: Seeking internally 0.05966666666666667
API: Sending warning: Error: MediaError (DISCONTINUITY_ENCOUNTERED) A discontinuity has been encountered at position 0, seeked at position 0.05966666666666667(…)
API: current media element state tick event internal-seeking position 0.059666 seeking true internalSeek 0 rebuffering true freezing false ended false paused false playbackRate 0 readyState 3
API: current playback timeline:
0.04|==0.84==|0.88
         ^0.059666 
seeking
ABR: Choosing representation with bandwidth estimation. 4499656 video=4499656
Stream: slow Representation switch video
RS: current discontinuity encountered audio 0.042
API: current media element state tick event play position 0.059666 seeking true internalSeek 0 rebuffering true freezing false ended false paused false playbackRate 0 readyState 3
API: current playback timeline:
0.04|==0.84==|0.88
         ^0.059666 
play
ABR: Choosing representation with bandwidth estimation. 4499656 video=4499656
Stream: slow Representation switch video
RS: current discontinuity encountered audio 0.042
API: current media element state tick event ratechange position 0.059666 seeking true internalSeek 0 rebuffering true freezing false ended false paused false playbackRate 0 readyState 3
API: current playback timeline:
0.04|==0.84==|0.88
         ^0.059666 
ratechange
ABR: Choosing representation with bandwidth estimation. 4499656 video=4499656
Stream: slow Representation switch video
RS: current discontinuity encountered audio 0.042
API: current media element state tick event internal-seeking position 0.059666 seeking true internalSeek 0.05966666666666667 rebuffering true freezing false ended false paused false playbackRate 0 readyState 3
API: current playback timeline:
0.04|==0.84==|0.88
         ^0.059666 
seeking
ABR: Choosing representation with bandwidth estimation. 4499656 video=4499656
Stream: slow Representation switch video
RS: current discontinuity encountered audio 0.042
SI: first segment pushed video 0 6
AVSB: Acknowledging complete segment video P: 1 A: 7 R: video=2099822 S: 0-6
SI: found true buffered start video 0 0
SI: found true buffered end video 6 6
ABR: Incrementing blocking raise in BufferBasedChooser due to unstable quality 12000
ABR: Choosing representation with bandwidth estimation. 4499656 video=4499656
Stream: slow Representation switch video
DRM: Updating MediaKeySession with message
AVSB: receiving order to push data to the SourceBuffer audio audio P: 1 A: 1 R: audio_eng=64000 S: 6.016-5.994666666666666
AVSB: pushing segment audio audio P: 1 A: 1 R: audio_eng=64000 S: 6.016-5.994666666666666
SF: Segment request ended with success audio P: 1 A: 1 R: audio_eng=64000 S: 6.016-5.994666666666666
AVSB: receiving order for validating end of segment audio audio P: 1 A: 1 R: audio_eng=64000 S: 6.016-5.994666666666666
DRM: MediaKeySession update succeeded.
SI: Pushing segment strictly after previous one. audio 6.016 6.015
AVSB: Acknowledging complete segment audio P: 1 A: 1 R: audio_eng=64000 S: 6.016-5.994666666666666
SI: found true buffered end audio 12.01 12.010666666666665
SI: current audio inventory timeline:
0.04|A|12.01
[A] P: 1 || R: audio_eng=64000(64000)
DRM: keystatuseschange event received pr-sid-2
DRM: key status update (01fcaae28efc0dded58b413aff63c90b): usable
Decipherability changed for "audio_eng=64000" (64000) true
Decipherability changed for "audio_eng_1=384000" (384000) true
Decipherability changed for "audio_eng_1=576000" (576000) true
Decipherability changed for "audio_fra=64000" (64000) true
Decipherability changed for "video=189938" (189938) true
Decipherability changed for "video=299947" (299947) true
Decipherability changed for "video=749900" (749900) true
Decipherability changed for "video=1099891" (1099891) true
Decipherability changed for "video=1499864" (1499864) true
Decipherability changed for "video=2099822" (2099822) true
Decipherability changed for "video=3399764" (3399764) true
Decipherability changed for "video=4499656" (4499656) true
AVSB: receiving order to push data to the SourceBuffer video video P: 1 A: 7 R: video=2099822 S: 6-6
AVSB: updating codec video/mp4;codecs="avc1.4D401F"
AVSB: could not update codec video/mp4;codecs="avc1.4D401F" video/mp4;codecs="avc1.4D401E"
AVSB: pushing segment video video P: 1 A: 7 R: video=2099822 S: 6-6
SF: Segment request ended with success video P: 1 A: 7 R: video=2099822 S: 6-6
AVSB: receiving order for validating end of segment video video P: 1 A: 7 R: video=2099822 S: 6-6
Stream: No request left, terminate video
Stream: changing representation video video=4499656 4499656
Stream: Media segments now need to be requested. Starting queue. video 2
SF: Beginning request audio P: 1 A: 1 R: audio_eng=64000 S: 12.010666666666667-5.994666666666666
SF: Beginning request video P: 1 A: 7 R: video=4499656 S: 12-6
SF: Beginning request video P: 1 A: 7 R: video=4499656 S: init
SI: Pushing segment strictly after previous one. video 6 6
AVSB: Acknowledging complete segment video P: 1 A: 7 R: video=2099822 S: 6-6
SI: found true buffered end video 12 12
SI: current video inventory timeline:
0.00|A|12.00
[A] P: 1 || R: video=2099822(2099822)
ABR: Incrementing blocking raise in BufferBasedChooser due to unstable quality 15000
ABR: Choosing representation with bandwidth estimation. 4499656 video=4499656
Stream: new video bitrate estimate 20300369.07327286
AVSB: receiving order to push data to the SourceBuffer audio audio P: 1 A: 1 R: audio_eng=64000 S: 12.010666666666667-5.994666666666666
AVSB: pushing segment audio audio P: 1 A: 1 R: audio_eng=64000 S: 12.010666666666667-5.994666666666666
SF: Segment request ended with success audio P: 1 A: 1 R: audio_eng=64000 S: 12.010666666666667-5.994666666666666
AVSB: receiving order for validating end of segment audio audio P: 1 A: 1 R: audio_eng=64000 S: 12.010666666666667-5.994666666666666
SI: Pushing segment strictly after previous one. audio 12.010666666666667 12.01
AVSB: Acknowledging complete segment audio P: 1 A: 1 R: audio_eng=64000 S: 12.010666666666667-5.994666666666666
SI: found true buffered end audio 18.005 18.005333333333333
SI: current audio inventory timeline:
0.04|A|18.00
[A] P: 1 || R: audio_eng=64000(64000)
DRM-LSS: Reusing session: pr-sid-2 temporary
DRM: Init data already processed. Skipping it.
AVSB: receiving order to push data to the SourceBuffer video video P: 1 A: 7 R: video=4499656 S: init
AVSB: updating codec video/mp4;codecs="avc1.640029"
AVSB: could not update codec video/mp4;codecs="avc1.640029" video/mp4;codecs="avc1.4D401E"
AVSB: re-setting `appendWindowEnd` to `Infinity`
AVSB: pushing segment video video P: 1 A: 7 R: video=4499656 S: init
SI: current video inventory timeline:
0.00|A|12.00
[A] P: 1 || R: video=2099822(2099822)
Stream: no more init segment to request. Cancelling queue. video
SF: Segment request cancelled video P: 1 A: 7 R: video=4499656 S: init
SF: Segment request ended with success video P: 1 A: 7 R: video=4499656 S: init
AVSB: receiving order for validating end of segment video video P: 1 A: 7 R: video=4499656 S: init
AVSB: Acknowledging complete segment video P: 1 A: 7 R: video=4499656 S: init
ABR: Incrementing blocking raise in BufferBasedChooser due to unstable quality 15000
ABR: Choosing representation with bandwidth estimation. 4499656 video=4499656
API: current media element state tick event timeupdate position 0.059666 seeking true internalSeek 0.05966666666666667 rebuffering false freezing false ended false paused false playbackRate 0 readyState 3
API: current playback timeline:
0.04|==11.96==|12.00
          ^0.059666 
timeupdate
ABR: exit starvation mode.
ABR: Choosing representation with bandwidth estimation. 4499656 video=4499656
SI: current video inventory timeline:
0.00|A|12.00
[A] P: 1 || R: video=2099822(2099822)
SI: current audio inventory timeline:
0.04|A|18.00
[A] P: 1 || R: audio_eng=64000(64000)
RS: current discontinuity encountered audio 0.042
Init: Resume playback speed 1
API: playerStateChange event LOADED
stack: TypeError: Cannot read property 'isSupportedAudioCodec' of undefined
Stream: Updating audio adaptation A: 1 P: 0
Stream: Reusing a previous SegmentBuffer for the type audio
SI: current audio inventory timeline:
0.04|A|18.00
[A] P: 1 || R: audio_eng=64000(64000)
API: playerStateChange event PLAYING
Stream: changing representation audio audio_eng=64000 64000
DRM-LSS: Reusing session: pr-sid-2 temporary
DRM: Init data already processed. Skipping it.
SI: current audio inventory timeline:
0.04|A|18.00
[A] P: 1 || R: audio_eng=64000(64000)
RS: current discontinuity encountered audio 0.042
Stream: Media segments now need to be requested. Starting queue. audio 1
SF: Beginning request audio P: 1 A: 1 R: audio_eng=64000 S: 18.005333333333333-5.994666666666666
SF: Beginning request audio P: 1 A: 1 R: audio_eng=64000 S: init
API: current media element state tick event ratechange position 0.059666 seeking true internalSeek 0.05966666666666667 rebuffering false freezing false ended false paused false playbackRate 1 readyState 3
API: current playback timeline:
0.04|==11.96==|12.00
          ^0.059666 
ratechange
ABR: Choosing representation with bandwidth estimation. 4499656 video=4499656
SI: current video inventory timeline:
0.00|A|12.00
[A] P: 1 || R: video=2099822(2099822)
Stream: Priority of next media segment changed, updating video 4 3
SI: current audio inventory timeline:
0.04|A|18.00
[A] P: 1 || R: audio_eng=64000(64000)
RS: current discontinuity encountered audio 0.042
AVSB: receiving order to push data to the SourceBuffer audio audio P: 1 A: 1 R: audio_eng=64000 S: init
AVSB: re-setting `appendWindowEnd` to `Infinity`
SI: current audio inventory timeline:
0.04|A|18.00
[A] P: 1 || R: audio_eng=64000(64000)
RS: current discontinuity encountered audio 0.042
Stream: no more init segment to request. Cancelling queue. audio
SF: Segment request cancelled audio P: 1 A: 1 R: audio_eng=64000 S: init
SF: Segment request ended with success audio P: 1 A: 1 R: audio_eng=64000 S: init
AVSB: receiving order for validating end of segment audio audio P: 1 A: 1 R: audio_eng=64000 S: init
AVSB: Acknowledging complete segment audio P: 1 A: 1 R: audio_eng=64000 S: init
AVSB: receiving order to push data to the SourceBuffer audio audio P: 1 A: 1 R: audio_eng=64000 S: 18.005333333333333-5.994666666666666
AVSB: setting `appendWindowEnd` 2894.94
AVSB: pushing segment audio audio P: 1 A: 1 R: audio_eng=64000 S: 18.005333333333333-5.994666666666666
SF: Segment request ended with success audio P: 1 A: 1 R: audio_eng=64000 S: 18.005333333333333-5.994666666666666
AVSB: receiving order for validating end of segment audio audio P: 1 A: 1 R: audio_eng=64000 S: 18.005333333333333-5.994666666666666
ABR: New last stable representation 64000
SI: current audio inventory timeline:
0.04|A|18.00
[A] P: 1 || R: audio_eng=64000(64000)
RS: current discontinuity encountered audio 0.042
SI: Pushing segment strictly after previous one. audio 18.005333333333333 18.005
AVSB: Acknowledging complete segment audio P: 1 A: 1 R: audio_eng=64000 S: 18.005333333333333-5.994666666666666
SI: found true buffered end audio 23.999 24
SI: current audio inventory timeline:
0.04|A|24.00
[A] P: 1 || R: audio_eng=64000(64000)
AVSB: receiving order to push data to the SourceBuffer video video P: 1 A: 7 R: video=4499656 S: 12-6
AVSB: updating codec video/mp4;codecs="avc1.640029"
AVSB: could not update codec video/mp4;codecs="avc1.640029" video/mp4;codecs="avc1.4D401E"
AVSB: setting `appendWindowEnd` 2894.94
AVSB: pushing segment video video P: 1 A: 7 R: video=4499656 S: 12-6
SF: Segment request ended with success video P: 1 A: 7 R: video=4499656 S: 12-6
AVSB: receiving order for validating end of segment video video P: 1 A: 7 R: video=4499656 S: 12-6
ABR: New last stable representation 4499656
SF: Beginning request video P: 1 A: 7 R: video=4499656 S: 18-6
SI: Pushing segment strictly after previous one. video 12 12
AVSB: Acknowledging complete segment video P: 1 A: 7 R: video=4499656 S: 12-6
SI: found true buffered end video 18 18
SI: current video inventory timeline:
0.00|A|12.00 ~ 12.00|B|18.00
[A] P: 1 || R: video=2099822(2099822)
[B] P: 1 || R: video=4499656(4499656)
ABR: Incrementing blocking raise in BufferBasedChooser due to unstable quality 15000
ABR: Choosing representation with bandwidth estimation. 4499656 video=4499656
Stream: new video bitrate estimate 27674085.58326566
API: current media element state tick event timeupdate position 0.059666 seeking true internalSeek 0.05966666666666667 rebuffering false freezing true ended false paused false playbackRate 1 readyState 3
API: current playback timeline:
0.04|==17.96==|18.00
          ^0.059666 
timeupdate
ABR: Choosing representation with bandwidth estimation. 4499656 video=4499656
SI: current video inventory timeline:
0.00|A|12.00 ~ 12.00|B|18.00
[A] P: 1 || R: video=2099822(2099822)
[B] P: 1 || R: video=4499656(4499656)
SI: current audio inventory timeline:
0.04|A|24.00
[A] P: 1 || R: audio_eng=64000(64000)
RS: current discontinuity encountered audio 0.042
AVSB: receiving order to push data to the SourceBuffer video video P: 1 A: 7 R: video=4499656 S: 18-6
AVSB: updating codec video/mp4;codecs="avc1.640029"
AVSB: could not update codec video/mp4;codecs="avc1.640029" video/mp4;codecs="avc1.4D401E"
AVSB: pushing segment video video P: 1 A: 7 R: video=4499656 S: 18-6
SF: Segment request ended with success video P: 1 A: 7 R: video=4499656 S: 18-6
AVSB: receiving order for validating end of segment video video P: 1 A: 7 R: video=4499656 S: 18-6
SI: current video inventory timeline:
0.00|A|12.00 ~ 12.00|B|18.00
[A] P: 1 || R: video=2099822(2099822)
[B] P: 1 || R: video=4499656(4499656)
SI: Pushing segment strictly after previous one. video 18 18
AVSB: Acknowledging complete segment video P: 1 A: 7 R: video=4499656 S: 18-6
SI: found true buffered end video 24 24
SI: current video inventory timeline:
0.00|A|12.00 ~ 12.00|B|24.00
[A] P: 1 || R: video=2099822(2099822)
[B] P: 1 || R: video=4499656(4499656)
ABR: Incrementing blocking raise in BufferBasedChooser due to unstable quality 15000
ABR: Choosing representation with bandwidth estimation. 4499656 video=4499656
Stream: new video bitrate estimate 28442024.189458214
API: current media element state tick event timeupdate position 0.059666 seeking true internalSeek 0.05966666666666667 rebuffering false freezing true ended false paused false playbackRate 1 readyState 3
API: current playback timeline:
0.04|==23.96==|24.00
          ^0.059666 
timeupdate
ABR: Choosing representation with bandwidth estimation. 4499656 video=4499656
SI: current video inventory timeline:
0.00|A|12.00 ~ 12.00|B|24.00
[A] P: 1 || R: video=2099822(2099822)
[B] P: 1 || R: video=4499656(4499656)
SI: current audio inventory timeline:
0.04|A|24.00
[A] P: 1 || R: audio_eng=64000(64000)
RS: current discontinuity encountered audio 0.042
API: playerStateChange event BUFFERING
API: current media element state tick event timeupdate position 0.059666 seeking true internalSeek 0.05966666666666667 rebuffering false freezing true ended false paused false playbackRate 1 readyState 3
API: current playback timeline:
0.04|==23.96==|24.00
          ^0.059666 
timeupdate
ABR: Choosing representation with bandwidth estimation. 4499656 video=4499656
SI: current video inventory timeline:
0.00|A|12.00 ~ 12.00|B|24.00
[A] P: 1 || R: video=2099822(2099822)
[B] P: 1 || R: video=4499656(4499656)
SI: current audio inventory timeline:
0.04|A|24.00
[A] P: 1 || R: audio_eng=64000(64000)
RS: current discontinuity encountered audio 0.042
API: current media element state tick event timeupdate position 0.059666 seeking true internalSeek 0.05966666666666667 rebuffering false freezing true ended false paused false playbackRate 1 readyState 3
API: current playback timeline:
0.04|==23.96==|24.00
          ^0.059666 
timeupdate
ABR: Choosing representation with bandwidth estimation. 4499656 video=4499656
SI: current video inventory timeline:
0.00|A|12.00 ~ 12.00|B|24.00
[A] P: 1 || R: video=2099822(2099822)
[B] P: 1 || R: video=4499656(4499656)
SI: current audio inventory timeline:
0.04|A|24.00
[A] P: 1 || R: audio_eng=64000(64000)
RS: current discontinuity encountered audio 0.042
@peaBerberian
Copy link
Collaborator

Hi @TomaszKowalik,

I think this is the known samsung issue we had countless times where we attempt to seek forward over an audio discontinuity but samsung silently seek-back to some reference video frame before that audio discontinuity and so on, in a loop.

Here you encounter it with that content as it seems the audio starts at 0.04 and not 0,

We very frequently tried to work around that behavior, and it may be already fixed in the v3.33.2, so you may want to check.

I'm also even more confident that it cannot be reproduced in the v4.0.0 as we completely refactored playback position handling just to prevent that class of issues, but I understand that you may not have the time to switch the RxPlayer major version yet.
So if it's not already fixed in v3.33.2, we'll have to try working around it for a future v3.

@TomaszKowalik
Copy link
Author

@peaBerberian
I tried using v3.33.2 first, then upgraded to v4.0.0 to see if it would fix the issue. Sadly, the problem still persists on that Tizen model for both veersions. :( Usually it just freezes and closes the player after while, but once it freezed so badly I had to relaunch the app. Here are the logs from rx v4:

API: Initializing MediaSource mode in the main thread
Locking `contentLock` to clean-up the current content.
DRM: Clearing-up DRM session.
DRM: Nothing to clear. Returning right away. No state = true
API: current media element state tick event init position 0 seeking 0 internalSeek false rebuffering false freezing false ended false paused true playbackRate 1 readyState 0 pendingPosition undefined
API: playerStateChange event LOADING
API: DRM session cleaned-up with success!
Unlocking `contentLock`. Next content can begin.
Init: Creating ContentDecryptor
DRM: Starting ContentDecryptor logic.
DRM: Searching for compatible MediaKeySystemAccess
DRM: Request keysystem access com.microsoft.playready.recommendation,1 of 4
DRM: Rejected access to keysystem com.microsoft.playready.recommendation 1
DRM: Request keysystem access com.microsoft.playready,2 of 4
DRM: Found compatible keysystem com.microsoft.playready 2
DRM: Calling createMediaKeys on the MediaKeySystemAccess
DASH: WASM MPD Parser not initialized. Running JS one.
DASH Parser: merging "switchable" AdaptationSets 7 6
MF: Manifest parsed in 70.52999999999884ms
DRM: MediaKeys created with success
Init: Creating MediaSource
MTCI: Attaching MediaSource URL to the media element
Init: MediaSource opened
DRM: Attaching current MediaKeys
DRM: Attaching MediaKeys to the media element
Init: Calculating initial time
Init: starting at the minimum available position: 0
Init: Initial time calculated: 0
HTD: Creating HTMLTextDisplayer
Init: Resume playback speed 1
Init: Updating duration 2457.5146666666665
Stream: Creating new Stream for video 0
Stream: Updating video adaptation A: 6 P: 0
Init: Updating duration 2457.5146666666665
SB: Adding native SegmentBuffer with codec video/mp4;codecs="avc1.4D401E"
AVSB: calling `mediaSource.addSourceBuffer` video/mp4;codecs="avc1.4D401E"
Stream: Creating new Stream for audio 0
Stream: Updating audio adaptation A: 1 P: 0
Init: Updating duration 2457.5146666666665
SB: Adding native SegmentBuffer with codec audio/mp4;codecs="mp4a.40.2"
AVSB: calling `mediaSource.addSourceBuffer` audio/mp4;codecs="mp4a.40.2"
Stream: Creating new Stream for text 0
Stream: Set no text Adaptation. P: 0
ABR: Creating new BandwidthEstimator for  video
ABR: Steps for buffer based chooser. bufferLevel: 4, bitrate: 189966 ,bufferLevel: 10.73431248026191, bitrate: 299997 ,bufferLevel: 15.950260961853523, bitrate: 750032 ,bufferLevel: 21.75393807229417, bitrate: 1100095 ,bufferLevel: 24.63553219751028, bitrate: 1500131 ,bufferLevel: 27.279915665130392, bitrate: 2100237 ,bufferLevel: 30.560338098890348, bitrate: 3400601 ,bufferLevel: 33.79532179946506, bitrate: 4500473
ABR: enter starvation mode.
ABR: Choosing representation with bandwidth estimation. 2100237 video=2100237
ABR: Steps for buffer based chooser. bufferLevel: 4, bitrate: 189966 ,bufferLevel: 10.73431248026191, bitrate: 299997 ,bufferLevel: 15.950260961853523, bitrate: 750032 ,bufferLevel: 21.75393807229417, bitrate: 1100095 ,bufferLevel: 24.63553219751028, bitrate: 1500131 ,bufferLevel: 27.279915665130392, bitrate: 2100237 ,bufferLevel: 30.560338098890348, bitrate: 3400601 ,bufferLevel: 33.79532179946506, bitrate: 4500473
ABR: Choosing representation with bandwidth estimation. 2100237 video=2100237
Stream: changing representation video video=2100237 2100237
Stream: Media segments now need to be requested. Starting queue. video 4
SF: Beginning request video P: 1 A: 6 R: video=2100237 S: 0-6
SF: Beginning request video P: 1 A: 6 R: video=2100237 S: init
ABR: Creating new BandwidthEstimator for  audio
Stream: changing representation audio audio_eng=64000 64000
Stream: Media segments now need to be requested. Starting queue. audio 4
SF: Beginning request audio P: 1 A: 1 R: audio_eng=64000 S: 0-6.016
SF: Beginning request audio P: 1 A: 1 R: audio_eng=64000 S: init
DRM: MediaKeys attached with success
AVSB: receiving order to push data to the SourceBuffer video video P: 1 A: 6 R: video=2100237 S: init
AVSB: pushing segment video video P: 1 A: 6 R: video=2100237 S: init
SBI: receiving order to push data to the SourceBuffer video
SBI: updating codec video/mp4;codecs="avc1.4D401F"
SBI: could not update codec video/mp4;codecs="avc1.4D401F" video/mp4;codecs="avc1.4D401E"
SBI: pushing segment video
Stream: no more init segment to request. Cancelling queue. video
SF: Segment request cancelled video P: 1 A: 6 R: video=2100237 S: init
SF: Segment request ended with success video P: 1 A: 6 R: video=2100237 S: init
DRM: Creating a new temporary session
DRM-LSS: calling `createSession` temporary
DRM-LSS: MediaKeySession added temporary 1
DRM: Binding session events 
DRM: keystatuseschange event received 
Compat: Calling generateRequest on the MediaKeySession
Compat: Trying to move CENC PSSH from init data at the end of it.
Init: Updating duration 2457.5146666666665
ABR: Incrementing blocking raise in BufferBasedChooser due to unstable quality 9000
ABR: Choosing representation with bandwidth estimation. 2100237 video=2100237
AVSB: receiving order to push data to the SourceBuffer audio audio P: 1 A: 1 R: audio_eng=64000 S: init
AVSB: pushing segment audio audio P: 1 A: 1 R: audio_eng=64000 S: init
SBI: receiving order to push data to the SourceBuffer audio
SBI: pushing segment audio
Stream: no more init segment to request. Cancelling queue. audio
SF: Segment request cancelled audio P: 1 A: 1 R: audio_eng=64000 S: init
SF: Segment request ended with success audio P: 1 A: 1 R: audio_eng=64000 S: init
DRM: Creating a new temporary session
DRM-LSS: calling `createSession` temporary
DRM-LSS: MediaKeySession added temporary 2
DRM: Binding session events 
DRM: keystatuseschange event received 
Compat: Calling generateRequest on the MediaKeySession
Compat: Trying to move CENC PSSH from init data at the end of it.
AVSB: receiving order to push data to the SourceBuffer audio audio P: 1 A: 1 R: audio_eng=64000 S: 0-6.016
AVSB: pushing segment audio audio P: 1 A: 1 R: audio_eng=64000 S: 0-6.016
SBI: receiving order to push data to the SourceBuffer audio
SF: Segment request ended with success audio P: 1 A: 1 R: audio_eng=64000 S: 0-6.016
ABR: New last stable representation 64000
API: current media element state tick event timeupdate position 0 seeking 0 internalSeek false rebuffering false freezing false ended false paused true playbackRate 1 readyState 0 pendingPosition null
API: current playback timeline:

^0 
timeupdate
ABR: Choosing representation with bandwidth estimation. 2100237 video=2100237
DRM: Received message event, type license-request pr-sid-1
DRM: Calling `getLicense` license-request
SBI: setting `appendWindowEnd` 2457.62
SBI: pushing segment audio
AVSB: receiving order to push data to the SourceBuffer video video P: 1 A: 6 R: video=2100237 S: 0-6
AVSB: pushing segment video video P: 1 A: 6 R: video=2100237 S: 0-6
SBI: receiving order to push data to the SourceBuffer video
SBI: updating codec video/mp4;codecs="avc1.4D401F"
SBI: could not update codec video/mp4;codecs="avc1.4D401F" video/mp4;codecs="avc1.4D401E"
SBI: setting `appendWindowEnd` 2457.62
SBI: pushing segment video
SF: Segment request ended with success video P: 1 A: 6 R: video=2100237 S: 0-6
ABR: New last stable representation 2100237
SF: Beginning request audio P: 1 A: 1 R: audio_eng=64000 S: 6.016-5.994666666666666
SF: Beginning request video P: 1 A: 6 R: video=2100237 S: 6-6
DRM: Received message event, type license-request pr-sid-2
DRM: Calling `getLicense` license-request
SI: first segment pushed audio 0 6.016
SI: found true buffered start audio 0.042 0
SI: found true buffered end audio 6.015 6.016
API: current media element state tick event timeupdate position 0 seeking 0 internalSeek false rebuffering true freezing false ended false paused true playbackRate 1 readyState 1 pendingPosition null
API: current playback timeline:
0.04|==0.32==|0.36
         ^0 
timeupdate
ABR: Choosing representation with bandwidth estimation. 4500473 video=4500473
Stream: new video bitrate estimate 9818011.943389965
Stream: slow Representation switch video
RS: current discontinuity encountered audio 0.042
Init: Pause playback to build buffer
Init: discontinuity found 0 0.05866666666666667
SA: skippable discontinuity found in the stream 0 0.05966666666666667
API: Seeking internally 0.05966666666666667
API: Sending warning: Error: DISCONTINUITY_ENCOUNTERED: A discontinuity has been encountered at position 0, seeked at position 0.05966666666666667(…)
API: current media element state tick event loadedmetadata position 0.059666 seeking 2 internalSeek false rebuffering true freezing false ended false paused true playbackRate 0 readyState 1 pendingPosition null
API: current playback timeline:
0.04|==0.56==|0.60
         ^0.059666 
loadedmetadata
ABR: Choosing representation with bandwidth estimation. 4500473 video=4500473
Stream: slow Representation switch video
RS: current discontinuity encountered audio 0.042
API: current media element state tick event ratechange position 0.059666 seeking 2 internalSeek false rebuffering true freezing false ended false paused true playbackRate 0 readyState 1 pendingPosition null
API: current playback timeline:
0.04|==0.56==|0.60
         ^0.059666 
ratechange
ABR: Choosing representation with bandwidth estimation. 4500473 video=4500473
Stream: slow Representation switch video
RS: current discontinuity encountered audio 0.042
API: current media element state tick event internal-seeking position 0.059666 seeking 1 internalSeek true rebuffering true freezing false ended false paused true playbackRate 0 readyState 1 pendingPosition null
API: current playback timeline:
0.04|==0.56==|0.60
         ^0.059666 
seeking
ABR: Choosing representation with bandwidth estimation. 4500473 video=4500473
Stream: slow Representation switch video
RS: current discontinuity encountered audio 0.042
Init: Updating duration 2457.5146666666665
SI: first segment pushed video 0 6
SI: found true buffered start video 0 0
SI: found true buffered end video 6 6
ABR: Incrementing blocking raise in BufferBasedChooser due to unstable quality 12000
ABR: Choosing representation with bandwidth estimation. 4500473 video=4500473
Stream: slow Representation switch video
DRM: Updating MediaKeySession with message
AVSB: receiving order to push data to the SourceBuffer audio audio P: 1 A: 1 R: audio_eng=64000 S: 6.016-5.994666666666666
AVSB: pushing segment audio audio P: 1 A: 1 R: audio_eng=64000 S: 6.016-5.994666666666666
SBI: receiving order to push data to the SourceBuffer audio
SBI: pushing segment audio
SF: Segment request ended with success audio P: 1 A: 1 R: audio_eng=64000 S: 6.016-5.994666666666666
DRM: Updating MediaKeySession with message
2DRM: MediaKeySession update succeeded.
SI: Pushing segment strictly after previous one. audio 6.016 6.015
SI: found true buffered end audio 12.01 12.010666666666665
SI: current audio inventory timeline:
0.04|A|12.01
[A] P: 1 || R: audio_eng=64000(64000)
DRM: keystatuseschange event received pr-sid-1
DRM: key status update (fcdd7b5378b9280c711b40a6a1ecdc98): usable
Decipherability changed for "video=189966" (189966) true
Decipherability changed for "video=299997" (299997) true
Decipherability changed for "video=750032" (750032) true
Decipherability changed for "video=1100095" (1100095) true
Decipherability changed for "video=1500131" (1500131) true
Decipherability changed for "video=2100237" (2100237) true
Decipherability changed for "video=3400601" (3400601) true
DRM: keystatuseschange event received pr-sid-2
DRM: key status update (3d32bf9cc7b9280c711b40a6a1ecdc98): usable
Decipherability changed for "audio_eng=64000" (64000) true
Decipherability changed for "audio_eng_1=384000" (384000) true
Decipherability changed for "audio_eng_1=576000" (576000) true
AVSB: receiving order to push data to the SourceBuffer video video P: 1 A: 6 R: video=2100237 S: 6-6
AVSB: pushing segment video video P: 1 A: 6 R: video=2100237 S: 6-6
SBI: receiving order to push data to the SourceBuffer video
SBI: updating codec video/mp4;codecs="avc1.4D401F"
SBI: could not update codec video/mp4;codecs="avc1.4D401F" video/mp4;codecs="avc1.4D401E"
SBI: pushing segment video
SF: Segment request ended with success video P: 1 A: 6 R: video=2100237 S: 6-6
Stream: No request left, terminate video
Stream: changing representation video video=4500473 4500473
Stream: Media segments now need to be requested. Starting queue. video 2
SF: Beginning request audio P: 1 A: 1 R: audio_eng=64000 S: 12.010666666666667-5.994666666666666
SF: Beginning request video P: 1 A: 6 R: video=4500473 S: 12-6
SF: Beginning request video P: 1 A: 6 R: video=4500473 S: init
Init: Updating duration 2457.5146666666665
SI: Pushing segment strictly after previous one. video 6 6
SI: found true buffered end video 12 12
SI: current video inventory timeline:
0.00|A|12.00
[A] P: 1 || R: video=2100237(2100237)
ABR: Incrementing blocking raise in BufferBasedChooser due to unstable quality 15000
ABR: Choosing representation with bandwidth estimation. 4500473 video=4500473
Stream: new video bitrate estimate 13686682.287072172
AVSB: receiving order to push data to the SourceBuffer video video P: 1 A: 6 R: video=4500473 S: init
AVSB: pushing segment video video P: 1 A: 6 R: video=4500473 S: init
SBI: receiving order to push data to the SourceBuffer video
SBI: updating codec video/mp4;codecs="avc1.640029"
SBI: could not update codec video/mp4;codecs="avc1.640029" video/mp4;codecs="avc1.4D401E"
SBI: re-setting `appendWindowEnd` to `Infinity`
SBI: pushing segment video
Stream: no more init segment to request. Cancelling queue. video
SF: Segment request cancelled video P: 1 A: 6 R: video=4500473 S: init
SF: Segment request ended with success video P: 1 A: 6 R: video=4500473 S: init
DRM: Creating a new temporary session
DRM-LSS: calling `createSession` temporary
DRM-LSS: MediaKeySession added temporary 3
DRM: Binding session events 
DRM: keystatuseschange event received 
Compat: Calling generateRequest on the MediaKeySession
Compat: Trying to move CENC PSSH from init data at the end of it.
AVSB: receiving order to push data to the SourceBuffer audio audio P: 1 A: 1 R: audio_eng=64000 S: 12.010666666666667-5.994666666666666
AVSB: pushing segment audio audio P: 1 A: 1 R: audio_eng=64000 S: 12.010666666666667-5.994666666666666
SBI: receiving order to push data to the SourceBuffer audio
SBI: pushing segment audio
SF: Segment request ended with success audio P: 1 A: 1 R: audio_eng=64000 S: 12.010666666666667-5.994666666666666
Init: Updating duration 2457.5146666666665
SI: current video inventory timeline:
0.00|A|12.00
[A] P: 1 || R: video=2100237(2100237)
ABR: Incrementing blocking raise in BufferBasedChooser due to unstable quality 15000
ABR: Choosing representation with bandwidth estimation. 4500473 video=4500473
SI: Pushing segment strictly after previous one. audio 12.010666666666667 12.010666666666665
SI: found true buffered end audio 18.005 18.005333333333333
SI: current audio inventory timeline:
0.04|A|18.01
[A] P: 1 || R: audio_eng=64000(64000)
API: current media element state tick event timeupdate position 0.059666 seeking 1 internalSeek true rebuffering true freezing false ended false paused true playbackRate 0 readyState 1 pendingPosition null
API: current playback timeline:
0.04|==11.96==|12.00
          ^0.059666 
timeupdate
SI: current video inventory timeline:
0.00|A|12.00
[A] P: 1 || R: video=2100237(2100237)
SI: current audio inventory timeline:
0.04|A|18.00
[A] P: 1 || R: audio_eng=64000(64000)
ABR: exit starvation mode.
ABR: Choosing representation with bandwidth estimation. 4500473 video=4500473
RS: current discontinuity encountered audio 0.042
DRM: Received message event, type license-request pr-sid-3
DRM: Calling `getLicense` license-request
AVSB: receiving order to push data to the SourceBuffer video video P: 1 A: 6 R: video=4500473 S: 12-6
AVSB: pushing segment video video P: 1 A: 6 R: video=4500473 S: 12-6
SBI: receiving order to push data to the SourceBuffer video
SBI: updating codec video/mp4;codecs="avc1.640029"
SBI: could not update codec video/mp4;codecs="avc1.640029" video/mp4;codecs="avc1.4D401E"
SBI: setting `appendWindowEnd` 2457.62
SBI: pushing segment video
SF: Segment request ended with success video P: 1 A: 6 R: video=4500473 S: 12-6
ABR: New last stable representation 4500473
SF: Beginning request audio P: 1 A: 1 R: audio_eng=64000 S: 18.005333333333333-5.994666666666666
SF: Beginning request video P: 1 A: 6 R: video=4500473 S: 18-6
DRM: Updating MediaKeySession with message
DRM: MediaKeySession update succeeded.
DRM: keystatuseschange event received pr-sid-3
DRM: key status update (44217b5378b9280c711b40a6a1ecdc98): usable
Decipherability changed for "video=4500473" (4500473) true
Init: Updating duration 2457.5146666666665
SI: Pushing segment strictly after previous one. video 12 12
SI: found true buffered end video 18 18
SI: current video inventory timeline:
0.00|A|12.00 ~ 12.00|B|18.00
[A] P: 1 || R: video=2100237(2100237)
[B] P: 1 || R: video=4500473(4500473)
ABR: Incrementing blocking raise in BufferBasedChooser due to unstable quality 15000
ABR: Choosing representation with bandwidth estimation. 4500473 video=4500473
Stream: new video bitrate estimate 23480360.848199744
AVSB: receiving order to push data to the SourceBuffer audio audio P: 1 A: 1 R: audio_eng=64000 S: 18.005333333333333-5.994666666666666
AVSB: pushing segment audio audio P: 1 A: 1 R: audio_eng=64000 S: 18.005333333333333-5.994666666666666
SBI: receiving order to push data to the SourceBuffer audio
SBI: pushing segment audio
SF: Segment request ended with success audio P: 1 A: 1 R: audio_eng=64000 S: 18.005333333333333-5.994666666666666
RS: current discontinuity encountered audio 0.042
SI: Pushing segment strictly after previous one. audio 18.005333333333333 18.005
SI: found true buffered end audio 23.999 24
SI: current audio inventory timeline:
0.04|A|24.00
[A] P: 1 || R: audio_eng=64000(64000)
AVSB: receiving order to push data to the SourceBuffer video video P: 1 A: 6 R: video=4500473 S: 18-6
AVSB: pushing segment video video P: 1 A: 6 R: video=4500473 S: 18-6
SBI: receiving order to push data to the SourceBuffer video
SBI: updating codec video/mp4;codecs="avc1.640029"
SBI: could not update codec video/mp4;codecs="avc1.640029" video/mp4;codecs="avc1.4D401E"
SBI: pushing segment video
SF: Segment request ended with success video P: 1 A: 6 R: video=4500473 S: 18-6
Init: Updating duration 2457.5146666666665
SI: Pushing segment strictly after previous one. video 18 18
SI: found true buffered end video 24 24
SI: current video inventory timeline:
0.00|A|12.00 ~ 12.00|B|24.00
[A] P: 1 || R: video=2100237(2100237)
[B] P: 1 || R: video=4500473(4500473)
ABR: Incrementing blocking raise in BufferBasedChooser due to unstable quality 15000
ABR: Choosing representation with bandwidth estimation. 4500473 video=4500473
Stream: new video bitrate estimate 29944422.299099382
API: current media element state tick event timeupdate position 0.059666 seeking 1 internalSeek true rebuffering true freezing false ended false paused true playbackRate 0 readyState 1 pendingPosition null
API: current playback timeline:
0.04|==23.96==|24.00
          ^0.059666 
timeupdate
SI: current video inventory timeline:
0.00|A|12.00 ~ 12.00|B|24.00
[A] P: 1 || R: video=2100237(2100237)
[B] P: 1 || R: video=4500473(4500473)
SI: current audio inventory timeline:
0.04|A|24.00
[A] P: 1 || R: audio_eng=64000(64000)
ABR: Choosing representation with bandwidth estimation. 4500473 video=4500473
RS: current discontinuity encountered audio 0.042
API: current media element state tick event timeupdate position 0.059666 seeking 1 internalSeek true rebuffering true freezing false ended false paused true playbackRate 0 readyState 1 pendingPosition null
API: current playback timeline:
0.04|==23.96==|24.00
          ^0.059666 
timeupdate
SI: current video inventory timeline:
0.00|A|12.00 ~ 12.00|B|24.00
[A] P: 1 || R: video=2100237(2100237)
[B] P: 1 || R: video=4500473(4500473)
SI: current audio inventory timeline:
0.04|A|24.00
[A] P: 1 || R: audio_eng=64000(64000)
ABR: Choosing representation with bandwidth estimation. 4500473 video=4500473
RS: current discontinuity encountered audio 0.042
API: current media element state tick event timeupdate position 0.059666 seeking 1 internalSeek true rebuffering true freezing false ended false paused true playbackRate 0 readyState 1 pendingPosition null
API: current playback timeline:
0.04|==23.96==|24.00
          ^0.059666 
timeupdate
SI: current video inventory timeline:
0.00|A|12.00 ~ 12.00|B|24.00
[A] P: 1 || R: video=2100237(2100237)
[B] P: 1 || R: video=4500473(4500473)
SI: current audio inventory timeline:
0.04|A|24.00
[A] P: 1 || R: audio_eng=64000(64000)
ABR: Choosing representation with bandwidth estimation. 4500473 video=4500473
RS: current discontinuity encountered audio 0.042
API: current media element state tick event timeupdate position 0.059666 seeking 1 internalSeek true rebuffering true freezing false ended false paused true playbackRate 0 readyState 1 pendingPosition null
API: current playback timeline:
0.04|==23.96==|24.00
          ^0.059666 
timeupdate
SI: current video inventory timeline:
0.00|A|12.00 ~ 12.00|B|24.00
[A] P: 1 || R: video=2100237(2100237)
[B] P: 1 || R: video=4500473(4500473)
SI: current audio inventory timeline:
0.04|A|24.00
[A] P: 1 || R: audio_eng=64000(64000)
ABR: Choosing representation with bandwidth estimation. 4500473 video=4500473
RS: current discontinuity encountered audio 0.042
API: current media element state tick event timeupdate position 0.059666 seeking 1 internalSeek true rebuffering true freezing false ended false paused true playbackRate 0 readyState 1 pendingPosition null
API: current playback timeline:
0.04|==23.96==|24.00
          ^0.059666 
timeupdate
SI: current video inventory timeline:
0.00|A|12.00 ~ 12.00|B|24.00
[A] P: 1 || R: video=2100237(2100237)
[B] P: 1 || R: video=4500473(4500473)
SI: current audio inventory timeline:
0.04|A|24.00
[A] P: 1 || R: audio_eng=64000(64000)
ABR: Choosing representation with bandwidth estimation. 4500473 video=4500473
RS: current discontinuity encountered audio 0.042
Init: we are frozen despite only having decipherable segments left in the buffer, reloading
SB: Aborting SegmentBuffer audio
AVSB: Calling `dispose` on the SourceBufferInterface
SB: Aborting SegmentBuffer video
AVSB: Calling `dispose` on the SourceBufferInterface
HTD: Stopping HTMLTextDisplayer
Init: Clearing HTMLMediaElement's src
Init: Revoking previous URL
Init: Creating MediaSource
MTCI: Attaching MediaSource URL to the media element
API: current media element state tick event timeupdate position 0 seeking 0 internalSeek false rebuffering true freezing false ended false paused true playbackRate 1 readyState 0 pendingPosition 0.05966666666666667
Init: Clearing HTMLMediaElement's src
Init: Revoking previous URL
Locking `contentLock` to clean-up the current content.
DRM: Clearing-up DRM session.
DRM: closing all current sessions.
DRM-LSS: Closing all current MediaKeySessions 3
DRM: Trying to close a MediaKeySession pr-sid-1
DRM: Trying to close a MediaKeySession pr-sid-2
DRM: Trying to close a MediaKeySession pr-sid-3
API: playerStateChange event STOPPED
DRM-LSS: session was closed, removing it. pr-sid-1
DRM: Succeeded to close MediaKeySession
DRM-LSS: session was closed, removing it. pr-sid-2
DRM: Succeeded to close MediaKeySession
DRM-LSS: session was closed, removing it. pr-sid-3
DRM: Succeeded to close MediaKeySession
API: DRM session cleaned-up with success!
Unlocking `contentLock`. Next content can begin.

@peaBerberian
Copy link
Collaborator

Hi @TomaszKowalik,

The problem appears to be a little different with the v4 here, as it's now the HTMLMediaElement's readyState which does not go further than 1, which is generally linked to decryption issue (e.g. the decryption key wasn't obtained, isn't usable or isn't being used for some reason).

Do you see a frame on the screen or does it stays completely black here?

@TomaszKowalik
Copy link
Author

Screen was all black

@peaBerberian
Copy link
Collaborator

peaBerberian commented Apr 2, 2024

OK thanks, so for the v4, I would more probably explore DRM issues.

Is it the same content in both tests? I see different bitrates in the logs.

Is is possible to lock the lowest possible video bitrate and re-do the test (just to eliminate some multi-key contents scenarios)?

To lock the video representation with the lowest bitrate, do before the loadvideo something like (I did not test that code, so typos possible):

// Each time new track choices are made available (which coincides with new Periods)
rxPlayer.addEventListener("newAvailablePeriods", (periods) => {
  for (const period of periods) {
    // Get initially-chosen video track for that Period
    const videoTrack = rxPlayer.getVideoTrack(period.id);
    if (videoTrack == null) {
      continue;
    }
    const representations = videoTrack.representations;
    
    // Find the Representation in that video track with the lowest bitrate
    const lowestBitrateRep = representations.reduce((acc, representation) => {
      if (acc?.bitrate === undefined) {
        return representation;
      } else if (representation.bitrate > acc.bitrate) {
        return acc;
      } else {
        return representation;
      }
    }, undefined);
    
    // Force to only load that Representation
    rxPlayer.lockVideoRepresentations({
      periodId: period.id,
      representations: [lowestBitrateRep.id],
    });
  }
});

@TomaszKowalik
Copy link
Author

TomaszKowalik commented Apr 19, 2024

@peaBerberian This was the different stream, but it was from the affected provider. We did some tests; on the lowest bitrate, the error was persistent. The only way to fix it was to change from DASH to MSSS. Surprisingly, that fixed the issue for RX 4.0 and also for older versions. For this particular Tizen model, looks like we would need to use an even older RX version: 3.29 due to some discontinuity errors for some streams...
But some other issue popped up :( We have configured streams where we have AVOD pre-rolls. On that Samsung model, when there is the injected ad at the very beginning of the stream, the preroll is playing fine, but when it ends, the actual stream doesn't play. I can see a lot of artifacts on the screen, and cant hear the audio... I was trying to seek to some moment after the ad, also when player is in the "LOADED" state but that didnt helped. I can't see any errors in the console though and it seems that player is downloading segments and playback is progressing somehow, because values from getPosition are changing.
But when I start that stream from the stopmarker, and then rewind to the preroll... I can watch full preroll and then stream switches correctly, so this is only happening when asset starts from the preroll.
Perhaps an encoding error? I collected again some RX logs, maybe there is something out of order? This is from the moment when the advertisement ends, and the current video should start playing:

rx-player-3-29.min.js:2 API: current media element state tick event timeupdate position 14.082 seeking false internalSeek null rebuffering false freezing false ended false paused false playbackRate 1 readyState 4
rx-player-3-29.min.js:2 API: current playback timeline:
0.02|==34.10==|34.12
          ^14.082 
timeupdate
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 7545000 video=7545000
rx-player-3-29.min.js:2 Stream: new video bitrate estimate 35148524.31256448
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|34.12
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|34.12
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 Stream: full "empty" AdaptationStream text
rx-player-3-29.min.js:2 Stream: full "empty" AdaptationStream image
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|34.12
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|34.12
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 API: current media element state tick event timeupdate position 15.039 seeking false internalSeek null rebuffering false freezing false ended false paused false playbackRate 1 readyState 4
rx-player-3-29.min.js:2 API: current playback timeline:
0.02|==34.10==|34.12
          ^15.039 
timeupdate
rx-player-3-29.min.js:2 SO: Destroying Stream for video 0
rx-player-3-29.min.js:2 Stream: New active period 14.92
rx-player-3-29.min.js:2 SO: Destroying Stream for audio 0
rx-player-3-29.min.js:2 SO: Destroying Stream for text 0
rx-player-3-29.min.js:2 SO: Destroying Stream for image 0
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|34.12
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 SF: Beginning request audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 34.12-1.92
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|34.12
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 SF: Beginning request video P: 1_14.920000000 A: 2 R: video=6364000 S: 34.12-1.92
rx-player-3-29.min.js:2 AVSB: receiving order to push data to the SourceBuffer video video P: 1_14.920000000 A: 2 R: video=6364000 S: 34.12-1.92
rx-player-3-29.min.js:2 AVSB: updating codec video/mp4;codecs="avc1.64002A"
rx-player-3-29.min.js:2 AVSB: could not update codec video/mp4;codecs="avc1.64002A" video/mp4;codecs="avc1.640029"
rx-player-3-29.min.js:2 AVSB: pushing segment video video P: 1_14.920000000 A: 2 R: video=6364000 S: 34.12-1.92
rx-player-3-29.min.js:2 SF: Segment request ended with success video P: 1_14.920000000 A: 2 R: video=6364000 S: 34.12-1.92
rx-player-3-29.min.js:2 AVSB: receiving order for validating end of segment video video P: 1_14.920000000 A: 2 R: video=6364000 S: 34.12-1.92
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|34.12
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 SI: Pushing segment strictly after previous one. video 34.12 34.12
rx-player-3-29.min.js:2 AVSB: Acknowledging complete segment video P: 1_14.920000000 A: 2 R: video=6364000 S: 34.12-1.92
rx-player-3-29.min.js:2 SI: found true buffered end video 36.04 36.04
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|36.04
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 Stream: new video bitrate estimate 34931679.61450808
rx-player-3-29.min.js:2 AVSB: receiving order to push data to the SourceBuffer audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 34.12-1.92
rx-player-3-29.min.js:2 AVSB: pushing segment audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 34.12-1.92
rx-player-3-29.min.js:2 SF: Segment request ended with success audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 34.12-1.92
rx-player-3-29.min.js:2 AVSB: receiving order for validating end of segment audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 34.12-1.92
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|34.12
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 SI: Pushing segment strictly after previous one. audio 34.12 34.119
rx-player-3-29.min.js:2 AVSB: Acknowledging complete segment audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 34.12-1.92
rx-player-3-29.min.js:2 SI: found true buffered end audio 36.039 36.04
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|36.04
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 API: current media element state tick event timeupdate position 16.061 seeking false internalSeek null rebuffering false freezing false ended false paused false playbackRate 1 readyState 4
rx-player-3-29.min.js:2 API: current playback timeline:
0.02|==36.02==|36.04
          ^16.061 
timeupdate
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|36.04
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|36.04
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 API: current media element state tick event timeupdate position 17.096 seeking false internalSeek null rebuffering false freezing false ended false paused false playbackRate 1 readyState 4
rx-player-3-29.min.js:2 API: current playback timeline:
0.02|==36.02==|36.04
          ^17.096 
timeupdate
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|36.04
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 SF: Beginning request audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 36.04-1.92
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|36.04
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 SF: Beginning request video P: 1_14.920000000 A: 2 R: video=6364000 S: 36.04-1.92
rx-player-3-29.min.js:2 AVSB: receiving order to push data to the SourceBuffer audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 36.04-1.92
rx-player-3-29.min.js:2 AVSB: pushing segment audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 36.04-1.92
rx-player-3-29.min.js:2 SF: Segment request ended with success audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 36.04-1.92
rx-player-3-29.min.js:2 AVSB: receiving order for validating end of segment audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 36.04-1.92
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|36.04
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 SI: Pushing segment strictly after previous one. audio 36.04 36.039
rx-player-3-29.min.js:2 AVSB: Acknowledging complete segment audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 36.04-1.92
rx-player-3-29.min.js:2 SI: found true buffered end audio 37.959 37.96
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|37.96
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 AVSB: receiving order to push data to the SourceBuffer video video P: 1_14.920000000 A: 2 R: video=6364000 S: 36.04-1.92
rx-player-3-29.min.js:2 AVSB: updating codec video/mp4;codecs="avc1.64002A"
rx-player-3-29.min.js:2 AVSB: could not update codec video/mp4;codecs="avc1.64002A" video/mp4;codecs="avc1.640029"
rx-player-3-29.min.js:2 AVSB: pushing segment video video P: 1_14.920000000 A: 2 R: video=6364000 S: 36.04-1.92
rx-player-3-29.min.js:2 SF: Segment request ended with success video P: 1_14.920000000 A: 2 R: video=6364000 S: 36.04-1.92
rx-player-3-29.min.js:2 AVSB: receiving order for validating end of segment video video P: 1_14.920000000 A: 2 R: video=6364000 S: 36.04-1.92
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|36.04
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 SI: Pushing segment strictly after previous one. video 36.04 36.04
rx-player-3-29.min.js:2 AVSB: Acknowledging complete segment video P: 1_14.920000000 A: 2 R: video=6364000 S: 36.04-1.92
rx-player-3-29.min.js:2 SI: found true buffered end video 37.96 37.96
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|37.96
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 Stream: new video bitrate estimate 35823173.89837185
rx-player-3-29.min.js:2 API: current media element state tick event timeupdate position 18.009 seeking false internalSeek null rebuffering false freezing false ended false paused false playbackRate 1 readyState 4
rx-player-3-29.min.js:2 API: current playback timeline:
0.02|==37.94==|37.96
          ^18.009 
timeupdate
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|37.96
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|37.96
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 API: current media element state tick event timeupdate position 19.04 seeking false internalSeek null rebuffering false freezing false ended false paused false playbackRate 1 readyState 4
rx-player-3-29.min.js:2 API: current playback timeline:
0.02|==37.94==|37.96
          ^19.04 
timeupdate
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|37.96
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 SF: Beginning request audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 37.96-1.92
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|37.96
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 SF: Beginning request video P: 1_14.920000000 A: 2 R: video=6364000 S: 37.96-1.92
rx-player-3-29.min.js:2 AVSB: receiving order to push data to the SourceBuffer audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 37.96-1.92
rx-player-3-29.min.js:2 AVSB: pushing segment audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 37.96-1.92
rx-player-3-29.min.js:2 SF: Segment request ended with success audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 37.96-1.92
rx-player-3-29.min.js:2 AVSB: receiving order for validating end of segment audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 37.96-1.92
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|37.96
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 SI: Pushing segment strictly after previous one. audio 37.96 37.959
rx-player-3-29.min.js:2 AVSB: Acknowledging complete segment audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 37.96-1.92
rx-player-3-29.min.js:2 SI: found true buffered end audio 39.879 39.88
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|39.88
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 AVSB: receiving order to push data to the SourceBuffer video video P: 1_14.920000000 A: 2 R: video=6364000 S: 37.96-1.92
rx-player-3-29.min.js:2 AVSB: updating codec video/mp4;codecs="avc1.64002A"
rx-player-3-29.min.js:2 AVSB: could not update codec video/mp4;codecs="avc1.64002A" video/mp4;codecs="avc1.640029"
rx-player-3-29.min.js:2 AVSB: pushing segment video video P: 1_14.920000000 A: 2 R: video=6364000 S: 37.96-1.92
rx-player-3-29.min.js:2 SF: Segment request ended with success video P: 1_14.920000000 A: 2 R: video=6364000 S: 37.96-1.92
rx-player-3-29.min.js:2 AVSB: receiving order for validating end of segment video video P: 1_14.920000000 A: 2 R: video=6364000 S: 37.96-1.92
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|37.96
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 SI: Pushing segment strictly after previous one. video 37.96 37.96
rx-player-3-29.min.js:2 AVSB: Acknowledging complete segment video P: 1_14.920000000 A: 2 R: video=6364000 S: 37.96-1.92
rx-player-3-29.min.js:2 SI: found true buffered end video 39.88 39.88
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|39.88
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 Stream: new video bitrate estimate 36627703.99680406
rx-player-3-29.min.js:2 API: current media element state tick event timeupdate position 20.069 seeking false internalSeek null rebuffering false freezing false ended false paused false playbackRate 1 readyState 4
rx-player-3-29.min.js:2 API: current playback timeline:
0.02|==39.86==|39.88
          ^20.069 
timeupdate
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|39.88
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 SF: Beginning request audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 39.88-1.92
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|39.88
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 SF: Beginning request video P: 1_14.920000000 A: 2 R: video=6364000 S: 39.88-1.92
rx-player-3-29.min.js:2 AVSB: receiving order to push data to the SourceBuffer audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 39.88-1.92
rx-player-3-29.min.js:2 AVSB: pushing segment audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 39.88-1.92
rx-player-3-29.min.js:2 SF: Segment request ended with success audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 39.88-1.92
rx-player-3-29.min.js:2 AVSB: receiving order for validating end of segment audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 39.88-1.92
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|39.88
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 SI: Pushing segment strictly after previous one. audio 39.88 39.879
rx-player-3-29.min.js:2 AVSB: Acknowledging complete segment audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 39.88-1.92
rx-player-3-29.min.js:2 SI: found true buffered end audio 41.799 41.800000000000004
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|41.80
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 AVSB: receiving order to push data to the SourceBuffer video video P: 1_14.920000000 A: 2 R: video=6364000 S: 39.88-1.92
rx-player-3-29.min.js:2 AVSB: updating codec video/mp4;codecs="avc1.64002A"
rx-player-3-29.min.js:2 AVSB: could not update codec video/mp4;codecs="avc1.64002A" video/mp4;codecs="avc1.640029"
rx-player-3-29.min.js:2 AVSB: pushing segment video video P: 1_14.920000000 A: 2 R: video=6364000 S: 39.88-1.92
rx-player-3-29.min.js:2 SF: Segment request ended with success video P: 1_14.920000000 A: 2 R: video=6364000 S: 39.88-1.92
rx-player-3-29.min.js:2 AVSB: receiving order for validating end of segment video video P: 1_14.920000000 A: 2 R: video=6364000 S: 39.88-1.92
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|39.88
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 SI: Pushing segment strictly after previous one. video 39.88 39.88
rx-player-3-29.min.js:2 AVSB: Acknowledging complete segment video P: 1_14.920000000 A: 2 R: video=6364000 S: 39.88-1.92
rx-player-3-29.min.js:2 SI: found true buffered end video 41.8 41.800000000000004
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|41.80
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 Stream: new video bitrate estimate 37610444.26160706
rx-player-3-29.min.js:2 API: current media element state tick event timeupdate position 21.097 seeking false internalSeek null rebuffering false freezing false ended false paused false playbackRate 1 readyState 4
rx-player-3-29.min.js:2 API: current playback timeline:
0.02|==41.78==|41.80
          ^21.097 
timeupdate
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|41.80
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|41.80
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 API: current media element state tick event timeupdate position 22.028 seeking false internalSeek null rebuffering false freezing false ended false paused false playbackRate 1 readyState 4
rx-player-3-29.min.js:2 API: current playback timeline:
0.02|==41.78==|41.80
          ^22.028 
timeupdate
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|41.80
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 SF: Beginning request audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 41.8-1.92
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|41.80
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 SF: Beginning request video P: 1_14.920000000 A: 2 R: video=6364000 S: 41.8-1.92
rx-player-3-29.min.js:2 AVSB: receiving order to push data to the SourceBuffer audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 41.8-1.92
rx-player-3-29.min.js:2 AVSB: pushing segment audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 41.8-1.92
rx-player-3-29.min.js:2 SF: Segment request ended with success audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 41.8-1.92
rx-player-3-29.min.js:2 AVSB: receiving order for validating end of segment audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 41.8-1.92
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|41.80
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 SI: Pushing segment strictly after previous one. audio 41.8 41.799
rx-player-3-29.min.js:2 AVSB: Acknowledging complete segment audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 41.8-1.92
rx-player-3-29.min.js:2 SI: found true buffered end audio 43.719 43.72
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|43.72
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 AVSB: receiving order to push data to the SourceBuffer video video P: 1_14.920000000 A: 2 R: video=6364000 S: 41.8-1.92
rx-player-3-29.min.js:2 AVSB: updating codec video/mp4;codecs="avc1.64002A"
rx-player-3-29.min.js:2 AVSB: could not update codec video/mp4;codecs="avc1.64002A" video/mp4;codecs="avc1.640029"
rx-player-3-29.min.js:2 AVSB: pushing segment video video P: 1_14.920000000 A: 2 R: video=6364000 S: 41.8-1.92
rx-player-3-29.min.js:2 SF: Segment request ended with success video P: 1_14.920000000 A: 2 R: video=6364000 S: 41.8-1.92
rx-player-3-29.min.js:2 AVSB: receiving order for validating end of segment video video P: 1_14.920000000 A: 2 R: video=6364000 S: 41.8-1.92
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|41.80
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 SI: Pushing segment strictly after previous one. video 41.8 41.8
rx-player-3-29.min.js:2 AVSB: Acknowledging complete segment video P: 1_14.920000000 A: 2 R: video=6364000 S: 41.8-1.92
rx-player-3-29.min.js:2 SI: found true buffered end video 43.72 43.72
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|43.72
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 Stream: new video bitrate estimate 38435967.19482856
rx-player-3-29.min.js:2 API: current media element state tick event timeupdate position 23.046 seeking false internalSeek null rebuffering false freezing false ended false paused false playbackRate 1 readyState 4
rx-player-3-29.min.js:2 API: current playback timeline:
0.02|==43.70==|43.72
          ^23.046 
timeupdate
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|43.72
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|43.72
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 API: current media element state tick event timeupdate position 24.065 seeking false internalSeek null rebuffering false freezing false ended false paused false playbackRate 1 readyState 4
rx-player-3-29.min.js:2 API: current playback timeline:
0.02|==43.70==|43.72
          ^24.065 
timeupdate
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|43.72
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 SF: Beginning request audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 43.72-1.92
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|43.72
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 SF: Beginning request video P: 1_14.920000000 A: 2 R: video=6364000 S: 43.72-1.92
rx-player-3-29.min.js:2 AVSB: receiving order to push data to the SourceBuffer audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 43.72-1.92
rx-player-3-29.min.js:2 AVSB: pushing segment audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 43.72-1.92
rx-player-3-29.min.js:2 SF: Segment request ended with success audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 43.72-1.92
rx-player-3-29.min.js:2 AVSB: receiving order for validating end of segment audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 43.72-1.92
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|43.72
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 SI: Pushing segment strictly after previous one. audio 43.72 43.719
rx-player-3-29.min.js:2 AVSB: Acknowledging complete segment audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 43.72-1.92
rx-player-3-29.min.js:2 SI: found true buffered end audio 45.639 45.64
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|45.64
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 AVSB: receiving order to push data to the SourceBuffer video video P: 1_14.920000000 A: 2 R: video=6364000 S: 43.72-1.92
rx-player-3-29.min.js:2 AVSB: updating codec video/mp4;codecs="avc1.64002A"
rx-player-3-29.min.js:2 AVSB: could not update codec video/mp4;codecs="avc1.64002A" video/mp4;codecs="avc1.640029"
rx-player-3-29.min.js:2 AVSB: pushing segment video video P: 1_14.920000000 A: 2 R: video=6364000 S: 43.72-1.92
rx-player-3-29.min.js:2 SF: Segment request ended with success video P: 1_14.920000000 A: 2 R: video=6364000 S: 43.72-1.92
rx-player-3-29.min.js:2 AVSB: receiving order for validating end of segment video video P: 1_14.920000000 A: 2 R: video=6364000 S: 43.72-1.92
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|43.72
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 SI: Pushing segment strictly after previous one. video 43.72 43.72
rx-player-3-29.min.js:2 AVSB: Acknowledging complete segment video P: 1_14.920000000 A: 2 R: video=6364000 S: 43.72-1.92
rx-player-3-29.min.js:2 SI: found true buffered end video 45.64 45.64
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|45.64
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 Stream: new video bitrate estimate 38980050.26098607
rx-player-3-29.min.js:2 API: current media element state tick event timeupdate position 25.091 seeking false internalSeek null rebuffering false freezing false ended false paused false playbackRate 1 readyState 4
rx-player-3-29.min.js:2 API: current playback timeline:
0.02|==45.62==|45.64
          ^25.091 
timeupdate
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|45.64
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|45.64
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 API: current media element state tick event timeupdate position 26.022 seeking false internalSeek null rebuffering false freezing false ended false paused false playbackRate 1 readyState 4
rx-player-3-29.min.js:2 API: current playback timeline:
0.02|==45.62==|45.64
          ^26.022 
timeupdate
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|45.64
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 SF: Beginning request audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 45.64-1.92
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|45.64
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 SF: Beginning request video P: 1_14.920000000 A: 2 R: video=6364000 S: 45.64-1.92
rx-player-3-29.min.js:2 AVSB: receiving order to push data to the SourceBuffer audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 45.64-1.92
rx-player-3-29.min.js:2 AVSB: pushing segment audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 45.64-1.92
rx-player-3-29.min.js:2 SF: Segment request ended with success audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 45.64-1.92
rx-player-3-29.min.js:2 AVSB: receiving order for validating end of segment audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 45.64-1.92
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|45.64
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 SI: Pushing segment strictly after previous one. audio 45.64 45.639
rx-player-3-29.min.js:2 AVSB: Acknowledging complete segment audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 45.64-1.92
rx-player-3-29.min.js:2 SI: found true buffered end audio 47.559 47.56
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|47.56
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 AVSB: receiving order to push data to the SourceBuffer video video P: 1_14.920000000 A: 2 R: video=6364000 S: 45.64-1.92
rx-player-3-29.min.js:2 AVSB: updating codec video/mp4;codecs="avc1.64002A"
rx-player-3-29.min.js:2 AVSB: could not update codec video/mp4;codecs="avc1.64002A" video/mp4;codecs="avc1.640029"
rx-player-3-29.min.js:2 AVSB: pushing segment video video P: 1_14.920000000 A: 2 R: video=6364000 S: 45.64-1.92
rx-player-3-29.min.js:2 SF: Segment request ended with success video P: 1_14.920000000 A: 2 R: video=6364000 S: 45.64-1.92
rx-player-3-29.min.js:2 AVSB: receiving order for validating end of segment video video P: 1_14.920000000 A: 2 R: video=6364000 S: 45.64-1.92
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|45.64
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 SI: Pushing segment strictly after previous one. video 45.64 45.64
rx-player-3-29.min.js:2 AVSB: Acknowledging complete segment video P: 1_14.920000000 A: 2 R: video=6364000 S: 45.64-1.92
rx-player-3-29.min.js:2 SI: found true buffered end video 47.56 47.56
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|47.56
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 Stream: new video bitrate estimate 39430877.45306098
rx-player-3-29.min.js:2 API: current media element state tick event timeupdate position 27.047 seeking false internalSeek null rebuffering false freezing false ended false paused false playbackRate 1 readyState 4
rx-player-3-29.min.js:2 API: current playback timeline:
0.02|==47.54==|47.56
          ^27.047 
timeupdate
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|47.56
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|47.56
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 API: current media element state tick event timeupdate position 27.996 seeking false internalSeek null rebuffering false freezing false ended false paused false playbackRate 1 readyState 4
rx-player-3-29.min.js:2 API: current playback timeline:
0.02|==47.54==|47.56
          ^27.996 
timeupdate
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|47.56
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 SF: Beginning request audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 47.56-1.92
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|47.56
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 SF: Beginning request video P: 1_14.920000000 A: 2 R: video=6364000 S: 47.56-1.92
rx-player-3-29.min.js:2 AVSB: receiving order to push data to the SourceBuffer audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 47.56-1.92
rx-player-3-29.min.js:2 AVSB: pushing segment audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 47.56-1.92
rx-player-3-29.min.js:2 SF: Segment request ended with success audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 47.56-1.92
rx-player-3-29.min.js:2 AVSB: receiving order for validating end of segment audio audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 47.56-1.92
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|47.56
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 SI: Pushing segment strictly after previous one. audio 47.56 47.559
rx-player-3-29.min.js:2 AVSB: Acknowledging complete segment audio P: 1_14.920000000 A: 1 R: audio_112034_cze=112000 S: 47.56-1.92
rx-player-3-29.min.js:2 SI: found true buffered end audio 49.479 49.480000000000004
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|49.48
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 AVSB: receiving order to push data to the SourceBuffer video video P: 1_14.920000000 A: 2 R: video=6364000 S: 47.56-1.92
rx-player-3-29.min.js:2 AVSB: updating codec video/mp4;codecs="avc1.64002A"
rx-player-3-29.min.js:2 AVSB: could not update codec video/mp4;codecs="avc1.64002A" video/mp4;codecs="avc1.640029"
rx-player-3-29.min.js:2 AVSB: pushing segment video video P: 1_14.920000000 A: 2 R: video=6364000 S: 47.56-1.92
rx-player-3-29.min.js:2 SF: Segment request ended with success video P: 1_14.920000000 A: 2 R: video=6364000 S: 47.56-1.92
rx-player-3-29.min.js:2 AVSB: receiving order for validating end of segment video video P: 1_14.920000000 A: 2 R: video=6364000 S: 47.56-1.92
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|47.56
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 SI: Pushing segment strictly after previous one. video 47.56 47.56
rx-player-3-29.min.js:2 AVSB: Acknowledging complete segment video P: 1_14.920000000 A: 2 R: video=6364000 S: 47.56-1.92
rx-player-3-29.min.js:2 SI: found true buffered end video 49.48 49.480000000000004
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|49.48
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 Stream: new video bitrate estimate 39909234.51896735
rx-player-3-29.min.js:2 API: current media element state tick event timeupdate position 29.037 seeking false internalSeek null rebuffering false freezing false ended false paused false playbackRate 1 readyState 4
rx-player-3-29.min.js:2 API: current playback timeline:
0.02|==49.46==|49.48
          ^29.037 
timeupdate
rx-player-3-29.min.js:2 SI: current audio inventory timeline:
0.02|A|14.92 ~ 14.92|B|49.48
[A] P: 1_0.000000000 || R: audio_cze=128000(128000)
[B] P: 1_14.920000000 || R: audio_112034_cze=112000(112000)
rx-player-3-29.min.js:2 ABR: Choosing representation with bandwidth estimation. 6364000 video=6364000
rx-player-3-29.min.js:2 SI: current video inventory timeline:
0.00|A|14.92 ~ 14.92|B|49.48
[A] P: 1_0.000000000 || R: video=7545000(7545000)
[B] P: 1_14.920000000 || R: video=6364000(6364000)

@peaBerberian
Copy link
Collaborator

Hi,

For that second issue, nothing seems to be problematic from reading the logs sadly :/

Here also, I would first guess that this is DRM related, e.g. it could be that the ad is unencrypted, the VOD is, and that those tizen models have issues when requiring a key for en encrypted content when playback of unencrypted content already started.
This could explain why beginning with unencrypted content does not cause the issue.

To fix this, we could think of multiple potential work-arounds:

  1. we have an idea we never tested where we add fake encryption metadata to unencrypted segments, to trick the device into thinking that it's handling encrypted data and start the right logic (yet here, the device could also refuse to play the clear ad because it thinks it needs its decryption key first, so we'll have to test this)

  2. we could be requesting in advance the license for the VoD and start all the DRM-related logic before playing the content.

For the first solution, I have created a branch (fix/create-fake-encryption-init-segment) but I did not take the time to test this implementation yet on my side to see if it's functional. I'll try to this this week/

For the second solution, maybe we could test it by profiting from the fact that the RxPlayer caches DRM MediaKeySession by default.
Once you reproduce this issue, can you call rxPlayer.reload({ reloadAt: { position: 0 } });?
We would be reloading at the beginning, yet normally (unless there's options like keySystems[].closeSessionsOnStop or other) we should re-use the created key sessions, which may work-around the issue during the ad->VoD transition.

@TomaszKowalik
Copy link
Author

Yes, I think that's the DRM issue. It seems that our ads are not encrypted... So in the manifest we have unencrypted period first and then the encrypted. But actually, it works the other way around than:
This could explain why beginning with unencrypted content does not cause the issue
when the stream starts in the unencrypted part and then transitions to encrypted, it breaks with artifacts. If the stream starts from the encrypted part, then it can go to unencrypted without issues.

I was experimenting with the reload method. It partially solved the problem: When I receive the event that the ad has ended, I call rxPlayer.reload({ reloadAt: { position: /adEndPosition/ } }). However, calling that method changes the player state to STOPPED and sets its position for a while to 0, which triggers the ad and ad UI again, then its changing position to the position after the adBreak so reload is called again, etc, so its a loop with flickering ad UI... I had to do some nasty workaround to solve that, and it seems that it works for linear content, but sadly, for live streams, it's not working... Calling rxPlayer.reload on a live stream, no matter if I'm passing the position or not, triggers showing the ad again, so the user is stuck in a commercial loop. I'm not able to prevent that in any way :( It seems that after reload action, in another downloaded live manifest ad period is inserted again..

I also tested your branch, but the issue still occurs there.

Maybe there is some other option that could work?

@peaBerberian
Copy link
Collaborator

I was experimenting with the reload method. It partially solved the problem: When...

I was even thinking - just for the test for now - to just reload after the license has been fetched from the beginning and then re-play both the ad and the content.
This was to see if a potentially-cached MediaKeySession (an EME concept) from the previous attempt worked around the issue.
But you may also have tried that to no result.

As for reloading at a specific position, sadly tizen is a nightmare in that area, they are the only devices where precise seeking is not really doable, so that may be why you have things like reloading loop here.
Though again here there may also be differences between the v4 and v3.

I also tested your branch, but the issue still occurs there

The audio playing but video not playing issue?
Are you sure the right logic was triggered?

I added logs to that branch today (DASH: !!!!!!!!!!!! FAKE ENCRYPTION) to ensure the code was called in tests that I was doing (I was only checking that it did not break previously-functional scenarios on PlayReady devices - it did not). If you test it again you may see that log to see if we're entering the right logic.

@TomaszKowalik
Copy link
Author

TomaszKowalik commented Apr 24, 2024

I'm checking the RX versions:
3.29, 3.32 and 4.0 on your test branch. I can see that RX is printing the mentioned logs, so it looks like it's using that logic.

For every version, the transition from the unencrypted period to encrypted causes audio loss and artifacts/flickering/green screen. Calling reload after the license request is not fixing that issue. The only thing that seems to be partially working so far is workaround, where I'm using reload when the unencrypted part ends. However, for live streams, it's not working at all, and for linear assets, it randomly doesn't work (loops the ad), probably related to the Tizen precision issues you mentioned.

Regarding live assets, I think changing the player state to stopped when it reloads triggers injecting ad periods into the next live manifest by the library we are using for advertisement (I have no influence on how it is handling RX events)...

I tested it with DASH/WV and DASH/PR with the same result for every tested rx version :(

@peaBerberian
Copy link
Collaborator

OK :/

Maybe that's an issue with those TV models, Canal+ do not target those older 2017 Tizen models so I don't have enough data about them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants