Network handling - retryHttpRequest handler issues

During our tests we have encountered some issues with how our player is handling connection problems.

1. retryHttpRequest is never called:
To reproduce:

  • limit video chunks download speeds via some sort of networking tool (for example 1kbit down, 1mb up)
  • Observe video being frozen
  • Observe retryHttpRequest cb never being called

2. retryHttpRequest handler always has retry count equal 0
To reproduce:

  • Forbid video chunks download speeds via chrome devTools, but allow to download MPD file
  • Observe video never actually loading
  • Observe retryHttpRequest cb being called with retry param always equal to 0

As shown in docs: NetworkConfig | Bitmovin Player API 7.8.21 there is a 3rd param for retryHttpRequest which stands for Amount of retries. Sadly it’s always 0, is it supposed to be?

3. On blocking specific URLs via chrome devTools, Bitmovin never errors out

To reproduce:

  • Forbid video chunks from being downloaded via chrome devTools, but allow the download of MPD file (use chrome’s block URL with a wildcard)
  • Observe video never actually loading
  • Observe no error callback from bitmovin player

Side note: if we use retryHttpRequest cb, and reject the Promise withing that function, NETWORK_ERROR is thrown as expected

Could someone explain to me why the player behaves like this? Thank you!

Hello Karol,

  1. The player has a 19-20 seconds timeout while it is trying to download a segment. If the timeout is reached it will cancel the request and try to switch to the next lower representation/rendition. It repeats this until it has reached the lowest/smallest representation. Once it has reached this point it will just keep on downloading. It will not timeout anymore. The reason for this is that higher/better speeds might become available at any point.

  2. If you want to implement a retry counter and base your handling logic around that then please have a look at the following Community post: Understand and customize Bitmovin Player's behavior when internet connection is lost

  3. The reason why you are seeing infinite retries is the way you are testing this. The player implementation is such that if the domain was reachable for a previous request then it will keep trying and not actually error out. If the domain was never reachable it will error out. You can see this by doing the following: block the domain before the page is loaded and then load the page. You will see the player error. But if you block the domain during playback you will see it trigger a stallstarted event and then it tries to download the segment(s). This is as designed.

I hope the above helps you with your implementation. Have a great day!

1 Like

This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.