hls.js icon indicating copy to clipboard operation
hls.js copied to clipboard

Chromecast sender and receiver side multiple manifest refresh for live stream( linear asset like JIP/Simulcast)

Open divyanshjaipuriyar opened this issue 3 years ago • 1 comments

What do you want to do with Hls.js?

We need some to understand why we cannot disable the manifest refresh at the sender device once we on casted mode and content consumption is happening at the receiver end . So the receiver should be the place where we only need to download/refresh the manifest in case of linear(live stream) for JIP and Simulcast content . Current behaviour :

  • User started watching content on the web browser and now after consuming content for few minutes( master manifest is downloaded and other manifests are also downloaded at the sender side itself for some time range)
  • Now user opted to cast the content and want to consume the content at the chromecast end( 3rd gen chromeCast device is getting utilised here)
  • As soon as casting started , chromecast end also downloaded the master manifest file and subsequent manifest since we are consuming the linear stream content.

But here is the question since playback is happening at the receiver end and consumption of the asset is also happening at the receiver end then why do we really need to download/refresh manifest at the sender side too? Naive explanation from my end:- In order to maintain the session between the sender and receiver the sender device also needs to download the manifest because in case of linear stream the upcoming content details are in the latest manifest files which we are getting once it is refreshed and if sender device doesn't refresh the manifest it will not be in a state where it can maintain the connection between sender and receiver for future timestamps.

But the correct explanation needs to provided and if sender can still be in a connected state even after disabling the refresh logic at the sender end and only maintaining that at the chromecast receiver end ? and how can this be achieved?

What have you tried so far?

Have tried to block the download/refresh of manifest files at the sender player after the cast session is established but it completely blocks the playback and playback consumptions breaks after this at the chromecast receiver end . Checked the manifest refresh logic on the hlsjs player but same issue is there as we cannot block the refresh otherwise it breaks the playback.

divyanshjaipuriyar avatar Aug 05 '22 08:08 divyanshjaipuriyar

Not a contribution

Casting is not implemented in HLS.js so this must be an issue with how casting is performed for your app. Network activity can be halted at any time using the stopLoad() method. The HLS.js instance also should not be needed at all on the sender side while casting since all information about player state should come from the receiver.

robwalch avatar Aug 08 '22 17:08 robwalch

Thank you @robwalch for sharing the information . We are using the stopLoad method in our own custom load function but that is still not resolving the issue as I tried calling the same when we are on casted mode but still the manifest files are getting downloaded at the sender device and it is only stopping when we are destroying the player which is eventually destroying the player at the chromecast receiver end too.

divyanshjaipuriyar avatar Aug 10 '22 13:08 divyanshjaipuriyar

Hi @divyanshjaipuriyar,

If you can identify an issue with hls.stopLoad() please file a Bug Report. The issue should include an HLS.js stand-alone example independent of your Chromecast app. As part of your issue, make sure to include:

  • HLS.js version
  • Test page and HLS stream
  • Steps to reproduce
  • Expected behavior
  • Actual behavior

robwalch avatar Aug 10 '22 15:08 robwalch