Not starting next stream, when first one is completed
Hi 👋 Problem only occurs for 4.4.0, version 4.3.0 works as expected I've found quite strange behaviour of the RxPlayer, it doesn't start next stream when first one is completed. So there is a stream A, stream starts and it is watched to the end, then completed event is fired and new stream id is passed, so new loadVideo is called with a new source, then next stream is stuck. It behaves the same for SSAI and CSAI streams.
Next stream is initialised and even playing event is called but nothing works, seeking, play etc.
So far, I have created a workaround for that, it seems that stopping RxPlayer video instance before new source works this._rxPlayer?.stop()
As mentioned above, when I switch to use 4.3.0 it starts to works as expected, without additional stop call. Also, it works ok for version 4.4.0 when switching source is done while stream is playing, so something is only when the stream is completed.
API: Initializing MediaSource mode in the main thread rx-player.min.js:1 media: Current media element state tick. evt="init" position=119.64 seeking=0 internalSeek=false rebuffering=false freezing=false ended=true paused=true playbackRate=1 readyState=4 pendingPosition=null rx-player.min.js:1 utils: XHR GET https://stream-od.akamaized.net/csm/builder/proxy.1.mpd?yo.p.si=csm-e-cetv2norlsestovpr-87586980-39-1764773869831&yo.p.hn=csm-e-cetv2norlsestovpr-87586980.bln1.yospace.com&yo.p.ci=745672652&yo.p.fn=aHR0cHM6Ly9zdHJlYW0tb2QuYWthbWFpemVkLm5ldC9wZnIvODJlYjMyYmItMWQwYi00ODExLWI2ZDMtMDJkOWVhYTUyZTZjLzgyZWIzMmJiLTFkMGItNDgxMS1iNmQzLTAyZDllYWE1MmU2Yy5pc20vODJlYjMyYmItMWQwYi00ODExLWI2ZDMtMDJkOWVhYTUyZTZjLm1wZA%3D%3D&yo.p.bp=VMAP&yo.p.cu=&vprn=104508&flag=+sltp+emcr+dtrd+aeti&csid=ssai_hvod_vod_tv-2-play-web&metr=1031&resp=vmap1+vast4&yo.p.fo=true&nw=530646&prof=530646%3Atv2_yospace&yo.oh=Y3NtLWUtdHYybm9ydm9kLWViLnRsczEueW9zcGFjZS5jb20%3D&yo.av=3&yo.p.cmp=8&pvrn=347396&tv2_gpid=0a20893b-1c34-48f2-b608-ee9bf42446a4&_fw_vcid2=d35564d0e89486772676e6d2e04f88594018485f629d0b1fe8105a825bfcbd14&caid=0a20893b-1c34-48f2-b608-ee9bf42446a4&yo.aas=true&tv2_device_id=66497480-383f-4630-ba35-ed7b0d686e07 type=arraybuffer to=30 cto=15 rx-player.min.js:1 Stream: Aborting SegmentSink bufferType="audio" rx-player.min.js:1 Stream: Calling
disposeon the SourceBufferInterface rx-player.min.js:1 Stream: Aborting SegmentSink bufferType="video" rx-player.min.js:1 Stream: Callingdisposeon the SourceBufferInterface rx-player.min.js:1 text: Stopping HTMLTextDisplayer rx-player.min.js:1 media: Clearing HTMLMediaElement's src rx-player.min.js:1 media: Revoking previous URL rx-player.min.js:1 API: LockingcontentLockto clean-up the current content. rx-player.min.js:1 DRM: Clearing-up DRM session. rx-player.min.js:1 API: playerStateChange event newState="STOPPED" rx-player.min.js:1 API: playerStateChange event newState="LOADING" rx-player.min.js:1 DRM: Nothing to clear. Returning right away. noState=false rx-player.min.js:1 API: DRM session cleaned-up with success! rx-player.min.js:1 API: UnlockingcontentLock. Next content can begin. rx-player.min.js:1 Init: Creating ContentDecryptor rx-player.min.js:1 DRM: Starting ContentDecryptor logic. rx-player.min.js:1 DRM: Searching for compatible MediaKeySystemAccess rx-player.min.js:1 DRM: Request keysystem access keyType="com.widevine.alpha" index=0 length=1 rx-player.min.js:1 DRM: Found cached compatible keySystem rx-player.min.js:1 DRM: Reusing already created MediaKeys rx-player.min.js:1 DRM: Waiting for attachment. rx-player.min.js:1 mse: Creating MediaSource rx-player.min.js:1 media: Attaching MediaSource URL to the media element handleType="media-source" ContextLogger.ts:6 ContextLogger: {width: 973, playerState: 'PLAYING'} logger.ts:9 YOSPACE::onPlayerEvent PLAYING rx-player.min.js:1 API: Trying to call track API too soon (anonymous) @ rx-player.min.js:1 _priv_callTracksStoreGetterSetter @ rx-player.min.js:23 getVideoTrack @ rx-player.min.js:23 get currentVideoTracks @ rxPlayer.bridge.ts:334 get videoTracks @ rxPlayer.bridge.ts:298 get variantTracks @ rxPlayer.bridge.ts:338 NpawCustom.getActiveTrack @ NpawCustom.ts:1068 NpawCustom.getRendition @ NpawCustom.ts:1073 generateFullData @ NpawCustom.ts:987 NpawCustom.onTimeUpdate @ NpawCustom.ts:646 NpawCustom.videoEventsHandler @ NpawCustom.ts:306 componentDidUpdate @ NpawCustom.ts:174 commitLayoutEffectOnFiber @ react-dom.development.js:23372 commitLayoutMountEffects_complete @ react-dom.development.js:24727 commitLayoutEffects_begin @ react-dom.development.js:24713 commitLayoutEffects @ react-dom.development.js:24651 commitRootImpl @ react-dom.development.js:26862 commitRoot @ react-dom.development.js:26721 performSyncWorkOnRoot @ react-dom.development.js:26156 flushSyncCallbacks @ react-dom.development.js:12042 flushSync @ react-dom.development.js:26240 flushSync$1 @ react-dom.development.js:29878 onEvent @ PlaybackEventsBase.ts:146 Tv2RxPlayerBridge.onVideoElementEvents @ rxPlayer.bridge.ts:1101 (anonymous) @ rxPlayer.bridge.ts:683 timeupdate (anonymous) @ rx-player.min.js:3 (anonymous) @ rx-player.min.js:1 ct @ rx-player.min.js:1 Ia @ rx-player.min.js:3 (anonymous) @ rx-player.min.js:4 setValue @ rx-player.min.js:1 (anonymous) @ rx-player.min.js:3 (anonymous) @ rx-player.min.js:1 trigger @ rx-player.min.js:1 (anonymous) @ rx-player.min.js:1 Promise.then ii @ rx-player.min.js:1 wi @ rx-player.min.js:3 (anonymous) @ rx-player.min.js:4 (anonymous) @ rx-player.min.js:1 ct @ rx-player.min.js:1 _setupInitialMediaSourceAndDecryption @ rx-player.min.js:4 start @ rx-player.min.js:4 _priv_contentLock.onUpdate.emitCurrentValue @ rx-player.min.js:23 setValue @ rx-player.min.js:1 e @ rx-player.min.js:23 (anonymous) @ rx-player.min.js:23 Promise.then _priv_cleanUpCurrentContentState @ rx-player.min.js:23 stop @ rx-player.min.js:23 _priv_initializeContentPlayback @ rx-player.min.js:23 loadVideo @ rx-player.min.js:23 initSource @ rxPlayer.bridge.ts:798 await in initSource set source @ rxPlayer.bridge.ts:96 startPlayback @ PlayerContext.tsx:517 await in startPlayback componentDidUpdate @ PlayerContext.tsx:158 commitLayoutEffectOnFiber @ react-dom.development.js:23372 commitLayoutMountEffects_complete @ react-dom.development.js:24727 commitLayoutEffects_begin @ react-dom.development.js:24713 commitLayoutEffects @ react-dom.development.js:24651 commitRootImpl @ react-dom.development.js:26862 commitRoot @ react-dom.development.js:26721 finishConcurrentRender @ react-dom.development.js:26020 performConcurrentWorkOnRoot @ react-dom.development.js:25848 workLoop @ scheduler.development.js:266 flushWork @ scheduler.development.js:239 performWorkUntilDeadline @ scheduler.development.js:533Understand this warning rx-player.min.js:1 API: Trying to call track API too soon (anonymous) @ rx-player.min.js:1 _priv_callTracksStoreGetterSetter @ rx-player.min.js:23 getVideoTrack @ rx-player.min.js:23 get currentVideoTracks @ rxPlayer.bridge.ts:334 get videoTracks @ rxPlayer.bridge.ts:298 get variantTracks @ rxPlayer.bridge.ts:338 NpawCustom.getActiveTrack @ NpawCustom.ts:1068 NpawCustom.getBandwidth @ NpawCustom.ts:1104 NpawCustom.getRendition @ NpawCustom.ts:1076 generateFullData @ NpawCustom.ts:987 NpawCustom.onTimeUpdate @ NpawCustom.ts:646 NpawCustom.videoEventsHandler @ NpawCustom.ts:306 componentDidUpdate @ NpawCustom.ts:174 commitLayoutEffectOnFiber @ react-dom.development.js:23372 commitLayoutMountEffects_complete @ react-dom.development.js:24727 commitLayoutEffects_begin @ react-dom.development.js:24713 commitLayoutEffects @ react-dom.development.js:24651 commitRootImpl @ react-dom.development.js:26862 commitRoot @ react-dom.development.js:26721 performSyncWorkOnRoot @ react-dom.development.js:26156 flushSyncCallbacks @ react-dom.development.js:12042 flushSync @ react-dom.development.js:26240 flushSync$1 @ react-dom.development.js:29878 onEvent @ PlaybackEventsBase.ts:146 Tv2RxPlayerBridge.onVideoElementEvents @ rxPlayer.bridge.ts:1101 (anonymous) @ rxPlayer.bridge.ts:683 timeupdate (anonymous) @ rx-player.min.js:3 (anonymous) @ rx-player.min.js:1 ct @ rx-player.min.js:1 Ia @ rx-player.min.js:3 (anonymous) @ rx-player.min.js:4 setValue @ rx-player.min.js:1 (anonymous) @ rx-player.min.js:3 (anonymous) @ rx-player.min.js:1 trigger @ rx-player.min.js:1 (anonymous) @ rx-player.min.js:1 Promise.then ii @ rx-player.min.js:1 wi @ rx-player.min.js:3 (anonymous) @ rx-player.min.js:4 (anonymous) @ rx-player.min.js:1 ct @ rx-player.min.js:1 _setupInitialMediaSourceAndDecryption @ rx-player.min.js:4 start @ rx-player.min.js:4 _priv_contentLock.onUpdate.emitCurrentValue @ rx-player.min.js:23 setValue @ rx-player.min.js:1 e @ rx-player.min.js:23 (anonymous) @ rx-player.min.js:23 Promise.then _priv_cleanUpCurrentContentState @ rx-player.min.js:23 stop @ rx-player.min.js:23 _priv_initializeContentPlayback @ rx-player.min.js:23 loadVideo @ rx-player.min.js:23 initSource @ rxPlayer.bridge.ts:798 await in initSource set source @ rxPlayer.bridge.ts:96 startPlayback @ PlayerContext.tsx:517 await in startPlayback componentDidUpdate @ PlayerContext.tsx:158 commitLayoutEffectOnFiber @ react-dom.development.js:23372 commitLayoutMountEffects_complete @ react-dom.development.js:24727 commitLayoutEffects_begin @ react-dom.development.js:24713 commitLayoutEffects @ react-dom.development.js:24651 commitRootImpl @ react-dom.development.js:26862 commitRoot @ react-dom.development.js:26721 finishConcurrentRender @ react-dom.development.js:26020 performConcurrentWorkOnRoot @ react-dom.development.js:25848 workLoop @ scheduler.development.js:266 flushWork @ scheduler.development.js:239 performWorkUntilDeadline @ scheduler.development.js:533Understand this warning rx-player.min.js:1 mse: MediaSource opened rx-player.min.js:1 DRM: Attaching current MediaKeys rx-player.min.js:1 DRM: Right MediaKeys already set rx-player.min.js:1 dash: WASM MPD Parser not initialized. Running JS one. rx-player.min.js:1 MF: Manifest parsed in 4.299999952316284ms rx-player.min.js:1 Init: Calculating initial time rx-player.min.js:1 Init: Initial Position: starting at the minimum available position minimumPosition=0 rx-player.min.js:1 Init: Initial time calculated initialTime=0 rx-player.min.js:1 text: Creating HTMLTextDisplayer rx-player.min.js:1 Init: Resume playback speed newSpeed=1 rx-player.min.js:1 mse: Updating duration newDuration=99.712 rx-player.min.js:1 Stream: Creating new PeriodStream bufferType="video" periodStart=0 rx-player.min.js:1 Stream: Destroying PeriodStream as the current playhead moved above it bufferType="video" periodStart=0 periodEnd=99.712 position=119.64 rx-player.min.js:1 Track: Removing Track Reference bufferType="video" periodId="0" rx-player.min.js:1 Track: TrackDispatcher already removed for type and Period bufferType="video" periodId="0" (anonymous) @ rx-player.min.js:1 removeTrackReference @ rx-player.min.js:22 _priv_onPeriodStreamCleared @ rx-player.min.js:23 (anonymous) @ rx-player.min.js:23 (anonymous) @ rx-player.min.js:1 trigger @ rx-player.min.js:1 periodStreamCleared @ rx-player.min.js:4 periodStreamCleared @ rx-player.min.js:3 (anonymous) @ rx-player.min.js:3 onUpdate @ rx-player.min.js:1 listen @ rx-player.min.js:19 v @ rx-player.min.js:3 M @ rx-player.min.js:3 T @ rx-player.min.js:3 Md @ rx-player.min.js:3 _startLoadingContentOnMediaSource @ rx-player.min.js:4 _setupContentWithNewMediaSource @ rx-player.min.js:4 _onInitialMediaSourceReady @ rx-player.min.js:4 await in _onInitialMediaSourceReady (anonymous) @ rx-player.min.js:4 Promise.then start @ rx-player.min.js:4 _priv_contentLock.onUpdate.emitCurrentValue @ rx-player.min.js:23 setValue @ rx-player.min.js:1 e @ rx-player.min.js:23 (anonymous) @ rx-player.min.js:23 Promise.then _priv_cleanUpCurrentContentState @ rx-player.min.js:23 stop @ rx-player.min.js:23 _priv_initializeContentPlayback @ rx-player.min.js:23 loadVideo @ rx-player.min.js:23 initSource @ rxPlayer.bridge.ts:798 await in initSource set source @ rxPlayer.bridge.ts:96 startPlayback @ PlayerContext.tsx:517 await in startPlayback componentDidUpdate @ PlayerContext.tsx:158 commitLayoutEffectOnFiber @ react-dom.development.js:23372 commitLayoutMountEffects_complete @ react-dom.development.js:24727 commitLayoutEffects_begin @ react-dom.development.js:24713 commitLayoutEffects @ react-dom.development.js:24651 commitRootImpl @ react-dom.development.js:26862 commitRoot @ react-dom.development.js:26721 finishConcurrentRender @ react-dom.development.js:26020 performConcurrentWorkOnRoot @ react-dom.development.js:25848 workLoop @ scheduler.development.js:266 flushWork @ scheduler.development.js:239 performWorkUntilDeadline @ scheduler.development.js:533Understand this warning rx-player.min.js:1 Track: Adding Track Reference bufferType="video" periodId="0" rx-player.min.js:1 Stream: Creating new PeriodStream bufferType="audio" periodStart=0 rx-player.min.js:1 Stream: Destroying PeriodStream as the current playhead moved above it bufferType="audio" periodStart=0 periodEnd=99.712 position=119.64 rx-player.min.js:1 Track: Removing Track Reference bufferType="audio" periodId="0" rx-player.min.js:1 Track: TrackDispatcher already removed for type and Period bufferType="audio" periodId="0" (anonymous) @ rx-player.min.js:1 removeTrackReference @ rx-player.min.js:22 _priv_onPeriodStreamCleared @ rx-player.min.js:23 (anonymous) @ rx-player.min.js:23 (anonymous) @ rx-player.min.js:1 trigger @ rx-player.min.js:1 periodStreamCleared @ rx-player.min.js:4 periodStreamCleared @ rx-player.min.js:3 (anonymous) @ rx-player.min.js:3 onUpdate @ rx-player.min.js:1 listen @ rx-player.min.js:19 v @ rx-player.min.js:3 M @ rx-player.min.js:3 T @ rx-player.min.js:3 Md @ rx-player.min.js:3 _startLoadingContentOnMediaSource @ rx-player.min.js:4 _setupContentWithNewMediaSource @ rx-player.min.js:4 _onInitialMediaSourceReady @ rx-player.min.js:4 await in _onInitialMediaSourceReady (anonymous) @ rx-player.min.js:4 Promise.then start @ rx-player.min.js:4 _priv_contentLock.onUpdate.emitCurrentValue @ rx-player.min.js:23 setValue @ rx-player.min.js:1 e @ rx-player.min.js:23 (anonymous) @ rx-player.min.js:23 Promise.then _priv_cleanUpCurrentContentState @ rx-player.min.js:23 stop @ rx-player.min.js:23 _priv_initializeContentPlayback @ rx-player.min.js:23 loadVideo @ rx-player.min.js:23 initSource @ rxPlayer.bridge.ts:798 await in initSource set source @ rxPlayer.bridge.ts:96 startPlayback @ PlayerContext.tsx:517 await in startPlayback componentDidUpdate @ PlayerContext.tsx:158 commitLayoutEffectOnFiber @ react-dom.development.js:23372 commitLayoutMountEffects_complete @ react-dom.development.js:24727 commitLayoutEffects_begin @ react-dom.development.js:24713 commitLayoutEffects @ react-dom.development.js:24651 commitRootImpl @ react-dom.development.js:26862 commitRoot @ react-dom.development.js:26721 finishConcurrentRender @ react-dom.development.js:26020 performConcurrentWorkOnRoot @ react-dom.development.js:25848 workLoop @ scheduler.development.js:266 flushWork @ scheduler.development.js:239 performWorkUntilDeadline @ scheduler.development.js:533Understand this warning rx-player.min.js:1 Track: Adding Track Reference bufferType="audio" periodId="0" rx-player.min.js:1 Stream: Creating new PeriodStream bufferType="text" periodStart=0 rx-player.min.js:1 Stream: Destroying PeriodStream as the current playhead moved above it bufferType="text" periodStart=0 periodEnd=99.712 position=119.64 rx-player.min.js:1 Track: Removing Track Reference bufferType="text" periodId="0" rx-player.min.js:1 Track: TrackDispatcher already removed for type and Period bufferType="text" periodId="0" (anonymous) @ rx-player.min.js:1 removeTrackReference @ rx-player.min.js:22 _priv_onPeriodStreamCleared @ rx-player.min.js:23 (anonymous) @ rx-player.min.js:23 (anonymous) @ rx-player.min.js:1 trigger @ rx-player.min.js:1 periodStreamCleared @ rx-player.min.js:4 periodStreamCleared @ rx-player.min.js:3 (anonymous) @ rx-player.min.js:3 onUpdate @ rx-player.min.js:1 listen @ rx-player.min.js:19 v @ rx-player.min.js:3 M @ rx-player.min.js:3 T @ rx-player.min.js:3 Md @ rx-player.min.js:3 _startLoadingContentOnMediaSource @ rx-player.min.js:4 _setupContentWithNewMediaSource @ rx-player.min.js:4 _onInitialMediaSourceReady @ rx-player.min.js:4 await in _onInitialMediaSourceReady (anonymous) @ rx-player.min.js:4 Promise.then start @ rx-player.min.js:4 _priv_contentLock.onUpdate.emitCurrentValue @ rx-player.min.js:23 setValue @ rx-player.min.js:1 e @ rx-player.min.js:23 (anonymous) @ rx-player.min.js:23 Promise.then _priv_cleanUpCurrentContentState @ rx-player.min.js:23 stop @ rx-player.min.js:23 _priv_initializeContentPlayback @ rx-player.min.js:23 loadVideo @ rx-player.min.js:23 initSource @ rxPlayer.bridge.ts:798 await in initSource set source @ rxPlayer.bridge.ts:96 startPlayback @ PlayerContext.tsx:517 await in startPlayback componentDidUpdate @ PlayerContext.tsx:158 commitLayoutEffectOnFiber @ react-dom.development.js:23372 commitLayoutMountEffects_complete @ react-dom.development.js:24727 commitLayoutEffects_begin @ react-dom.development.js:24713 commitLayoutEffects @ react-dom.development.js:24651 commitRootImpl @ react-dom.development.js:26862 commitRoot @ react-dom.development.js:26721 finishConcurrentRender @ react-dom.development.js:26020 performConcurrentWorkOnRoot @ react-dom.development.js:25848 workLoop @ scheduler.development.js:266 flushWork @ scheduler.development.js:239 performWorkUntilDeadline @ scheduler.development.js:533Understand this warning rx-player.min.js:1 Track: Adding Track Reference bufferType="text" periodId="0" logger.ts:9 Empty SponsOverlay ad response. rx-player.min.js:1 media: Current media element state tick. evt="timeupdate" position=0 seeking=0 internalSeek=false rebuffering=true freezing=false ended=false paused=true playbackRate=1 readyState=0 pendingPosition=null rx-player.min.js:1 media: current playback timeline: ^0 timeupdate rx-player.min.js:1 Init: Pause playback to build buffer rx-player.min.js:1 media: Current media element state tick. evt="ratechange" position=0 seeking=0 internalSeek=false rebuffering=true freezing=false ended=false paused=true playbackRate=0 readyState=0 pendingPosition=null rx-player.min.js:1 media: current playback timeline: ^0 ratechange rx-player.min.js:1 media: Current media element state tick. evt="timeupdate" position=0 seeking=0 internalSeek=false rebuffering=true freezing=false ended=false paused=true playbackRate=0 readyState=0 pendingPosition=null rx-player.min.js:1 media: current playback timeline: ^0 timeupdate rx-player.min.js:1 media: Current media element state tick. evt="timeupdate" position=0 seeking=0 internalSeek=false rebuffering=true freezing=false ended=false paused=true playbackRate=0 readyState=0 pendingPosition=null rx-player.min.js:1 media: current playback timeline: ^0 timeupdate logger.ts:9 NPAW::Event sent: {type: 'start', params: {…}, timemark: 1764773870374} rx-player.min.js:1 media: Current media element state tick. evt="timeupdate" position=0 seeking=0 internalSeek=false rebuffering=true freezing=false ended=false paused=true playbackRate=0 readyState=0 pendingPosition=null rx-player.min.js:1 media: current playback timeline: ^0 timeupdate rx-player.min.js:1 media: Current media element state tick. evt="timeupdate" position=0 seeking=0 internalSeek=false rebuffering=true freezing=false ended=false paused=true playbackRate=0 readyState=0 pendingPosition=null rx-player.min.js:1 media: current playback timeline: ^0 timeupdate rx-player.min.js:1 media: Current media element state tick. evt="timeupdate" position=0 seeking=0 internalSeek=false rebuffering=true freezing=false ended=false paused=true playbackRate=0 readyState=0 pendingPosition=null rx-player.min.js:1 media: current playback timeline: ^0 timeupdate rx-player.min.js:1 media: Current media element state tick. evt="timeupdate" position=0 seeking=0 internalSeek=false rebuffering=true freezing=false ended=false paused=true playbackRate=0 readyState=0 pendingPosition=null rx-player.min.js:1 media: current playback timeline: ^0 timeupdate logger.ts:9 NPAW::Event sent: {type: 'joinTime', params: {…}, timemark: 1764773870375} rx-player.min.js:1 media: Current media element state tick. evt="timeupdate" position=0 seeking=0 internalSeek=false rebuffering=true freezing=false ended=false paused=true playbackRate=0 readyState=0 pendingPosition=null rx-player.min.js:1 media: current playback timeline: ^0 timeupdate rx-player.min.js:1 media: Current media element state tick. evt="timeupdate" position=0 seeking=0 internalSeek=false rebuffering=true freezing=false ended=false paused=true playbackRate=0 readyState=0 pendingPosition=null rx-player.min.js:1 media: current playback timeline: ^0 timeupdate rx-player.min.js:1 media: Current media element state tick. evt="timeupdate" position=0 seeking=0 internalSeek=false rebuffering=true freezing=false ended=false paused=true playbackRate=0 readyState=0 pendingPosition=null rx-player.min.js:1 media: current playback timeline: ^0 timeupdate rx-player.min.js:1 media: Current media element state tick. evt="timeupdate" position=0 seeking=0 internalSeek=false rebuffering=true freezing=false ended=false paused=true playbackRate=0 readyState=0 pendingPosition=null rx-player.min.js:1 media: current playback timeline: ^0 timeupdate logger.ts:9 NPAW::Event sent: {type: 'ping', params: {…}, timemark: 1764773875376} rx-player.min.js:1 media: Current media element state tick. evt="timeupdate" position=0 seeking=0 internalSeek=false rebuffering=true freezing=false ended=false paused=true playbackRate=0 readyState=0 pendingPosition=null rx-player.min.js:1 media: current playback timeline: ^0 timeupdate rx-player.min.js:1 media: Current media element state tick. evt="timeupdate" position=0 seeking=0 internalSeek=false rebuffering=true freezing=false ended=false paused=true playbackRate=0 readyState=0 pendingPosition=null rx-player.min.js:1 media: current playback timeline: ^0 timeupdate rx-player.min.js:1 media: Current media element state tick. evt="timeupdate" position=0 seeking=0 internalSeek=false rebuffering=true freezing=false ended=false paused=true playbackRate=0 readyState=0 pendingPosition=null rx-player.min.js:1 media: current playback timeline: ^0 timeupdate
Hi @mkochman,
Thanks. There may be subtle differences in behavior in the RxPlayer v4.4.0 vs v4.3.0 when loading a content that could be linked to that. If that lead to the necessity of explicitly stopping the content between load, that is a bug on our side that we need to fix.
There are elements that I'm not sure about here in your logs, I see:
ContextLogger.ts:6 ContextLogger: {width: 973, playerState: 'PLAYING'}
logger.ts:9 YOSPACE::onPlayerEvent PLAYING
rx-player.min.js:1 API: Trying to call track API too soon
This "playerState" doesn't seem to be defined by the RxPlayer, which looks like it is still in the LOADING state. How is it determined?
Also, there's a log that might reveal the issue:
rx-player.min.js:1 Stream: Destroying PeriodStream as the current playhead moved above it bufferType="video" periodStart=0 periodEnd=99.712 position=119.64
It says that the current position is considered 119.64, and it seems to be the position we were last in on the previous content.
If it affects multiple applications, it could be its own fix release. Can you check with the last dev release if the issue still exists: v4.4.1-dev.2025101500?
If not, I'll probably do an official patch release only with the right patches.
I made a 4.4.1-dev.2025120800 that would be even closer to a patch release. Can you test that one (instead of 4.4.1-dev.2025101500)?
4.4.1-dev.2025120800 works 👏
I don't get this problem with this anymore. Also, I've found another issue, but it seems that it also works properly with this build, so kill to birds with one stone :D Problem with the play again, so after the stream completes and play again is clicked I have the same state of the player as for next stream, black screen without any action response(only for SSAI, CSAI works fine).
So, I'm waiting for the official release ;)
OK cool thanks, we'll probably do that release tomorrow then.
Possible that this issue has several side effects: it's an internal issue (the wrong playback position is considered) not directly exposed by the RxPlayer but which influences a lot of other playback-related logic :/ We thought that this was only seen in specific multithreaded scenarios but now that we know it's not, it merits its own release.
I just released the 4.4.1, we should be good