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

[StreamProcessor][null] TypeError: Cannot read property 'getContinuousBufferTimeForTargetTime' of null #4473

Open
1 of 5 tasks
clementhoubrecrunchy opened this issue May 7, 2024 · 4 comments

Comments

@clementhoubrecrunchy
Copy link

Environment
  • Link to playable MPD file: -
  • Dash.js version: 4.7.4
  • Browser name/version: Chromium M56 (Tizen 4.0) and Chromium M76 (Tizen 6.0).
  • OS name/version: Tizen 4.0 and Tizen 6.0
Steps to reproduce

This bug is intermittent, it's difficult to reproduce:

  • After seeking on some devices like Tizen 4.0 and Tizen 6.0.
  • The error Cannot read property 'getContinuousBufferTimeForTargetTime' of null is thrown.

I'm sorry to not be able to add more informations, but I wasn't able to reproduce by myself the issue.

Observed behavior

When this bug occurred, the player starts an infinite loading and never recovers and is not able to play the video.

Console output
[StreamProcessor][null] TypeError: Cannot read property 'getContinuousBufferTimeForTargetTime' of null
Expected behavior

The player should be able to seek correctly and play the video.

More comments
  • Is it possible to avoid this error by checking if the StreamProcessor instance is not null before calling any associated methods?
  • I also see that getContinuousBufferTimeForTargetTime can return undefined if there is any error in the try/catch. Should it not return in this case NaN.
@dsilhavy
Copy link
Collaborator

Can you paste the full log here? There are multiple places in the code where getContinuousBufferTimeForTargetTime is called. I assume the bufferController object is null for some reason but I dont know why this would be the case.

@clementhoubrecrunchy
Copy link
Author

Thank you for your reply! Unfortunately, I'm not able to reproduce the bug by myself. I will try anyway to get more informations to help you to find the issue.

@clementhoubrecrunchy
Copy link
Author

clementhoubrecrunchy commented May 28, 2024

We managed to reproduce it. Here are the dash.js logs. After the seek at 800, the video doesn't play and we have an infinite loading. The only way to unblock it is to seek again.

[537213] [AbrController] [video] switching from buffer occupancy to throughput ABR rule (buffer: 0.000).
[537228] [AbrController] [audio] switching from buffer occupancy to throughput ABR rule (buffer: 0.000).
[537407] [StreamProcessor] [videol OnFragmentLoadingCompleted for stream id defaultId_0 and media type video
[537422] [StreamProcessor] laudio] OnFragmentLoadingCompleted for stream id defaultId_0 and media type audio
[537434] [StreamProcessor][videol [video] lastInitializedRepresentationInfo changed to 4
[537438] [StreamProcessor][audio] [audio] lastInitializedRepresentationInfo changed to 2
[537814] [StreamProcessor] [audio] OnFragmentLoadingCompleted for stream id defaultId_0 and media type audio
[537845] [StreamProcessor] [video] OnFragmentLoadingCompleted for stream id defaultId_0 and media type video
[538219] [PlaybackController] Native video element event: seeked
[538287] [PlaybackController] Native video element event: playing
[538317] [StreamProcessor] [audio] OnFragmentLoadingCompleted for stream id defaultId_0 and media type audio
[538565] [StreamProcessor] [video] OnFragmentLoadingCompleted for stream id defaultId_0 and media type video
[539507] [StreamProcessor] [video] OnFragmentLoadingCompleted for stream id defaultId_0 and media type video
[539736] [PlaybackController] Native video element event: pause
[540018] [StreamProcessor] [audio] OnFragmentLoadingCompleted for stream id defaultId_0 and media type audio
[540764] [StreamProcessor] [audio] OnFragmentLoadingCompleted for stream id defaultId_0 and media type audio
[540933] [StreamProcessor] [video] OnFragmentLoadingCompleted for stream id defaultId_0 and media type video
[542072] [StreamProcessor] [audio] OnFragmentLoadingCompleted for stream id defaultId_0 and media type audio
[542170] [StreamProcessor] [video] OnFragmentLoadingCompleted for stream id defaultId_0 and media type video
[542966] [StreamProcessor] [video] OnFragmentLoadingCompleted for stream id defaultId_0 and media type video
[543187] [StreamProcessor] [audio] OnFragmentLoadingCompleted for stream id defaultId_0 and media type audio
[543201] [AbrController] [audio] switching from throughput to buffer occupancy ABR rule (buffer: 22.193)
[543338] [AbController] [videol switching from throughput to buffer occupancy ABR rule (buffer: 22.889)
[543809] [StreamProcessor] [audio] OnFragmentLoadingCompleted for stream id defaultId_0 and media type audio
[544159] [PlaybackController] Seeking to: 800
[544249] [PlaybackController] Native video element event: play
[544267] [PlaybackControllerl Native video element event: playing
[544383] [PlaybackController] Native video element event: waiting

@grace-quek
Copy link

Following up on this thread @dsilhavy - were you able to glean any insight from the log provided by @clementhoubrecrunchy ?

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

No branches or pull requests

3 participants