Skip to content

SSAI stream freezes after seek #1736

@mkochman

Description

@mkochman

Hi,
we have some problems with SSAI vod(yospace) stream freezing in our project. Quite strange case, min 3 adbreaks(1 preroll and 2 midrolls), first adbreak so preroll is discarded, when we do seek after 1st midroll, before 2nd one then stream freezes(state is buffering). It forces user to do a page refresh, because nothing else works.

Image

I've turned on rx warnings and I see one weird warning that I don't get when everything works fine

Image
 ABR: Choosing representation with bandwidth estimation. 5472000 video=5472000
_app-73c6148d925a1467.js:464 API: API Seek to 607
_app-73c6148d925a1467.js:464 YOSPACE::onPlayerEvent SEEKING
_app-73c6148d925a1467.js:464 API: current media element state tick event seeking position 607 seeking 2 internalSeek false rebuffering true freezing false ended false paused false playbackRate 1 readyState 1 pendingPosition null
_app-73c6148d925a1467.js:464 API: current playback timeline:
0.00|==34.56==|34.56
                    ^607 
seeking
_app-73c6148d925a1467.js:464 SI: synchronizing video buffered ranges: 0-34.56
_app-73c6148d925a1467.js:464 SI: current video inventory timeline:
0.00|A|3.84 ~ 3.84|B|34.56
[A] P: 0 || R: video=757000(757000)
[B] P: 0 || R: video=5472000(5472000)
_app-73c6148d925a1467.js:464 SI: synchronizing audio buffered ranges: 0-34.559999
_app-73c6148d925a1467.js:464 SI: current audio inventory timeline:
0.00|A|34.56
[A] P: 0 || R: audio=128000(128000)
_app-73c6148d925a1467.js:464 Stream: Destroying PeriodStream as the current playhead moved above it video 0 607 607
_app-73c6148d925a1467.js:464 TS: Removing Track Reference video 0
_app-73c6148d925a1467.js:464 Stream: Destroying PeriodStream as the current playhead moved above it audio 0 607 607
_app-73c6148d925a1467.js:464 TS: Removing Track Reference audio 0
_app-73c6148d925a1467.js:464 Stream: Destroying PeriodStream as the current playhead moved above it text 0 607 607
_app-73c6148d925a1467.js:464 TS: Removing Track Reference text 0
_app-73c6148d925a1467.js:464 Init: Pause playback to build buffer
_app-73c6148d925a1467.js:464 API: playerStateChange event SEEKING
_app-73c6148d925a1467.js:464 YOSPACE::onPlayerEvent BUFFERING
_app-73c6148d925a1467.js:464 API: current media element state tick event ratechange position 607 seeking 2 internalSeek false rebuffering true freezing false ended false paused false playbackRate 0 readyState 1 pendingPosition null
_app-73c6148d925a1467.js:464 API: current playback timeline:
0.00|==34.56==|34.56
                    ^607 
ratechange
_app-73c6148d925a1467.js:464 SI: synchronizing video buffered ranges: 0-34.56
_app-73c6148d925a1467.js:464 SI: current video inventory timeline:
0.00|A|3.84 ~ 3.84|B|34.56
[A] P: 0 || R: video=757000(757000)
[B] P: 0 || R: video=5472000(5472000)
_app-73c6148d925a1467.js:464 SI: synchronizing audio buffered ranges: 0-34.559999
_app-73c6148d925a1467.js:464 SI: current audio inventory timeline:
0.00|A|34.56
[A] P: 0 || R: audio=128000(128000)
_app-73c6148d925a1467.js:464 Stream: Destroying all PeriodStreams due to out of bounds situation video 607
_app-73c6148d925a1467.js:464 Stream: Creating new Stream for video 0
_app-73c6148d925a1467.js:464 Stream: Destroying PeriodStream as the current playhead moved above it video 0 607 607
_app-73c6148d925a1467.js:464 TS: Removing Track Reference video 0
_app-73c6148d925a1467.js:464 TS: TrackDispatcher already removed for video and Period 0
(anonymous) @ _app-73c6148d925a1467.js:464
removeTrackReference @ rx-player.min.js:17
_priv_onPeriodStreamCleared @ rx-player.min.js:18
(anonymous) @ rx-player.min.js:18
(anonymous) @ rx-player.min.js:1
trigger @ rx-player.min.js:1
periodStreamCleared @ rx-player.min.js:4
periodStreamCleared @ rx-player.min.js:3
R.e.listen.clearSignal @ rx-player.min.js:3
onUpdate @ rx-player.min.js:1
listen @ rx-player.min.js:14
R @ rx-player.min.js:3
M @ rx-player.min.js:3
T.e.listen.clearSignal @ rx-player.min.js:3
setValue @ rx-player.min.js:1
g @ rx-player.min.js:3
setValue @ rx-player.min.js:1
_generateObservationForEvent @ rx-player.min.js:16
c @ rx-player.min.js:14
i @ _app-73c6148d925a1467.js:451
ratechange
setPlaybackRate @ rx-player.min.js:14
startRebuffering @ rx-player.min.js:4
_playbackObserver.listen.includeLastObservation @ rx-player.min.js:3
setValue @ rx-player.min.js:1
_generateObservationForEvent @ rx-player.min.js:16
c @ rx-player.min.js:14
i @ _app-73c6148d925a1467.js:451
seeking
seekTo @ rx-player.min.js:18
set currentTime @ _app-73c6148d925a1467.js:467
tp @ _app-73c6148d925a1467.js:467
setCurrentTime @ _app-73c6148d925a1467.js:467
M.setPosition @ _app-73c6148d925a1467.js:467
(anonymous) @ _app-73c6148d925a1467.js:467
t @ _app-73c6148d925a1467.js:467
i @ _app-73c6148d925a1467.js:451Understand this warning
_app-73c6148d925a1467.js:464 TS: Adding Track Reference video 0
_app-73c6148d925a1467.js:464 Stream: Destroying all PeriodStreams due to out of bounds situation audio 607
_app-73c6148d925a1467.js:464 Stream: Creating new Stream for audio 0
_app-73c6148d925a1467.js:464 Stream: Destroying PeriodStream as the current playhead moved above it audio 0 607 607
_app-73c6148d925a1467.js:464 TS: Removing Track Reference audio 0
_app-73c6148d925a1467.js:464 TS: TrackDispatcher already removed for audio and Period 0
(anonymous) @ _app-73c6148d925a1467.js:464
removeTrackReference @ rx-player.min.js:17
_priv_onPeriodStreamCleared @ rx-player.min.js:18
(anonymous) @ rx-player.min.js:18
(anonymous) @ rx-player.min.js:1
trigger @ rx-player.min.js:1
periodStreamCleared @ rx-player.min.js:4
periodStreamCleared @ rx-player.min.js:3
R.e.listen.clearSignal @ rx-player.min.js:3
onUpdate @ rx-player.min.js:1
listen @ rx-player.min.js:14
R @ rx-player.min.js:3
M @ rx-player.min.js:3
T.e.listen.clearSignal @ rx-player.min.js:3
setValue @ rx-player.min.js:1
g @ rx-player.min.js:3
setValue @ rx-player.min.js:1
_generateObservationForEvent @ rx-player.min.js:16
c @ rx-player.min.js:14
i @ _app-73c6148d925a1467.js:451
ratechange
setPlaybackRate @ rx-player.min.js:14
startRebuffering @ rx-player.min.js:4
_playbackObserver.listen.includeLastObservation @ rx-player.min.js:3
setValue @ rx-player.min.js:1
_generateObservationForEvent @ rx-player.min.js:16
c @ rx-player.min.js:14
i @ _app-73c6148d925a1467.js:451
seeking
seekTo @ rx-player.min.js:18
set currentTime @ _app-73c6148d925a1467.js:467
tp @ _app-73c6148d925a1467.js:467
setCurrentTime @ _app-73c6148d925a1467.js:467
M.setPosition @ _app-73c6148d925a1467.js:467
(anonymous) @ _app-73c6148d925a1467.js:467
t @ _app-73c6148d925a1467.js:467
i @ _app-73c6148d925a1467.js:451Understand this warning
_app-73c6148d925a1467.js:464 TS: Adding Track Reference audio 0
_app-73c6148d925a1467.js:464 Stream: Destroying all PeriodStreams due to out of bounds situation text 607
_app-73c6148d925a1467.js:464 Stream: Creating new Stream for text 0
_app-73c6148d925a1467.js:464 Stream: Destroying PeriodStream as the current playhead moved above it text 0 607 607
_app-73c6148d925a1467.js:464 TS: Removing Track Reference text 0
_app-73c6148d925a1467.js:464 TS: TrackDispatcher already removed for text and Period 0
(anonymous) @ _app-73c6148d925a1467.js:464
removeTrackReference @ rx-player.min.js:17
_priv_onPeriodStreamCleared @ rx-player.min.js:18
(anonymous) @ rx-player.min.js:18
(anonymous) @ rx-player.min.js:1
trigger @ rx-player.min.js:1
periodStreamCleared @ rx-player.min.js:4
periodStreamCleared @ rx-player.min.js:3
R.e.listen.clearSignal @ rx-player.min.js:3
onUpdate @ rx-player.min.js:1
listen @ rx-player.min.js:14
R @ rx-player.min.js:3
M @ rx-player.min.js:3
T.e.listen.clearSignal @ rx-player.min.js:3
setValue @ rx-player.min.js:1
g @ rx-player.min.js:3
setValue @ rx-player.min.js:1
_generateObservationForEvent @ rx-player.min.js:16
c @ rx-player.min.js:14
i @ _app-73c6148d925a1467.js:451
ratechange
setPlaybackRate @ rx-player.min.js:14
startRebuffering @ rx-player.min.js:4
_playbackObserver.listen.includeLastObservation @ rx-player.min.js:3
setValue @ rx-player.min.js:1
_generateObservationForEvent @ rx-player.min.js:16
c @ rx-player.min.js:14
i @ _app-73c6148d925a1467.js:451
seeking
seekTo @ rx-player.min.js:18
set currentTime @ _app-73c6148d925a1467.js:467
tp @ _app-73c6148d925a1467.js:467
setCurrentTime @ _app-73c6148d925a1467.js:467
M.setPosition @ _app-73c6148d925a1467.js:467
(anonymous) @ _app-73c6148d925a1467.js:467
t @ _app-73c6148d925a1467.js:467
i @ _app-73c6148d925a1467.js:451Understand this warning
_app-73c6148d925a1467.js:464 TS: Adding Track Reference text 0
_app-73c6148d925a1467.js:464 API: current media element state tick event timeupdate position 607 seeking 2 internalSeek false rebuffering true freezing false ended false paused false playbackRate 0 readyState 1 pendingPosition null
_app-73c6148d925a1467.js:464 API: current playback timeline:
0.00|==34.56==|34.56
                    ^607 
timeupdate
_app-73c6148d925a1467.js:464 SI: synchronizing video buffered ranges: 0-34.56
_app-73c6148d925a1467.js:464 SI: current video inventory timeline:
0.00|A|3.84 ~ 3.84|B|34.56
[A] P: 0 || R: video=757000(757000)
[B] P: 0 || R: video=5472000(5472000)
_app-73c6148d925a1467.js:464 SI: synchronizing audio buffered ranges: 0-34.559999
_app-73c6148d925a1467.js:464 SI: current audio inventory timeline:
0.00|A|34.56
[A] P: 0 || R: audio=128000(128000)
_app-73c6148d925a1467.js:464 API: current media element state tick event timeupdate position 607 seeking 2 internalSeek false rebuffering true freezing false ended false paused false playbackRate 0 readyState 1 pendingPosition null
_app-73c6148d925a1467.js:464 API: current playback timeline:
0.00|==34.56==|34.56
                    ^607 
timeupdate
_app-73c6148d925a1467.js:464 SI: synchronizing video buffered ranges: 0-34.56
_app-73c6148d925a1467.js:464 SI: current video inventory timeline:
0.00|A|3.84 ~ 3.84|B|34.56
[A] P: 0 || R: video=757000(757000)
[B] P: 0 || R: video=5472000(5472000)
_app-73c6148d925a1467.js:464 SI: synchronizing audio buffered ranges: 0-34.559999
_app-73c6148d925a1467.js:464 SI: current audio inventory timeline:
0.00|A|34.56
[A] P: 0 || R: audio=128000(128000)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions