-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
We are experiencing a playback loop when seeking to the end of some streams on certain platforms, such as Tizen 5.5. After seeking to the end, the player repeatedly requests the last video segment, appends init fragments, and adjusts the playback time due to a small gap detected in the manifest.
See below for an excerpt of the logs.
[1762527474955 61124] I [PlaybackController] Requesting seek to time: 4561.82
[1762527474955 61137] I [PlaybackController] Seeking to: 4561.82
[1762527474955 61142] D [Stream] onBufferingCompleted - One streamProcessor has finished but video one is not buffering completed
[1762527474955 61147] D [FragmentModel][text] abort requests
[1762527474955 61154] D [SourceBufferSink][text] Updated append window for text. Set start to 0 and end to 4561.93
[1762527474955 61205] D [BufferController][video] Got enough buffer to start
[1762527474955 61218] I [PlaybackController] Native video element event: seeked
[1762527474955 63073] I [StreamProcessor][video] Buffer is empty! Stalling!
[1762527474955 63074] D [BufferController][video] Waiting for more buffer before starting playback
[1762527474955 65051] W [GapController] Jumping to end of stream because of gap from 4561.894 to 4561.92. Gap duration: 0.02599999999983993
[1762527474955 65053] I [PlaybackController] Requesting seek to time: 4561.92
[1762527474955 65062] I [PlaybackController] Seeking to: 4561.92
[1762527474955 65065] D [FragmentModel][video] abort requests
[1762527474955 65067] D [Stream] onBufferingCompleted - One streamProcessor has finished but video one is not buffering completed
[1762527474955 65070] D [FragmentModel][text] abort requests
[1762527474955 65075] D [SourceBufferSink][video] Updated append window for video. Set start to 0 and end to 4561.93
[1762527474955 65079] D [SourceBufferSink][text] Updated append window for text. Set start to 0 and end to 4561.93
[1762527474955 65091] D [ScheduleController][video] Quality has changed, get init request for representationid = video=5325200
[1762527474955 65095] D [BufferController][video] Appending init fragment for type video, representationId video=5325200 and bandwidth 5325200
[1762527474955 65104] D [StreamProcessor][video] Appended bytes for video and stream id 1
[1762527474955 65108] I [StreamProcessor][video] [video] lastInitializedRepresentationId changed to video=5325200
[1762527474955 65113] D [ProtectionController] DRM: onNeedKey
[1762527474955 65115] D [ProtectionController] DRM: Ignoring initData because we have already seen it!
[ScheduleController][video] Media segment needed for video and stream id 1
[StreamProcessor][video] Adjusting playback time 4561.82 because of gap in the manifest. Seeking by -0.1000000000003638
Questions:
- Could you please explain why Dash.js loops on the last segment when a small gap is detected in the manifest?
- Is there a recommended way to handle seeking to the end of these streams so that playback stops cleanly without looping?
Note
I just tested this stream: http://refapp.hbbtv.org/videos/tears_of_steel_1080p_25f75g6sv3/manifest.mpd
and after seeking to the end, I also get the same warning:
[1762535289962 1320178] W [StreamProcessor][11][video] Adjusting playback time 734.06 because of gap in the manifest. Seeking by -0.10000000000002274, just like with our streams.
Thanks in advance