shaka-player icon indicating copy to clipboard operation
shaka-player copied to clipboard

Support xlink:actuate=“onRequest”

Open ronak2121 opened this issue 5 years ago • 14 comments

Have you read the FAQ and checked for duplicate open issues? Yes

Is your feature request related to a problem? Please describe. We are integrating with Ads, and would prefer to use DASH-IF's latest SGAI specifications that allows us to delay filling the Ad Pods while reusing the player heuristics to maintain Quality of Service. Please see: https://dashif.org/docs/CR-Ad-Insertion-r8.pdf and https://drive.google.com/file/d/1TwSuMGa1gfesdWBvlbK1rHLNVwiZNX3l/view for more information. I've asked questions out to the DASH-IF forum about impact to the player timeline (amongst others): https://github.com/Dash-Industry-Forum/AdInsertion/issues/83

Describe the solution you'd like

  • Support for xlinks "onRequest", and some handling to indicate whether a period being played is an Ad or not, and/or exposing manifest events so we can track it on our own
  • Exposing Timed Metadata from the stream
  • Support for Dash Patch Manifests for Live Streaming

Describe alternatives you've considered We are using CSAI to workaround this limitation, but would prefer to use SGAI to capitalize on the player qos calculations to maintain qos on low bandwidth connections.

ronak2121 avatar Mar 16 '21 21:03 ronak2121

We may need to do something similar to handle HLS interstitial support. We will be investigating the work soon, but may take a while to implement. This will require major reworks to implement.

TheModMaker avatar Apr 26 '21 19:04 TheModMaker

Corresponding HLS interstitial feature: #3364

ismena avatar Apr 26 '21 19:04 ismena

Hi, I was wondering if you could share anything about how the discussions with Zach Cava are progressing on this? We are hoping to capitalize on support for SGAI in early/mid 2022 in ShakaPlayer. Would that be a realistic expectation to have?

ronak2121 avatar Jun 12 '21 12:06 ronak2121

Hey Team, Is MPD Chaining / XLink supported in this player ?? Generally what we have been doing to implement Static Pre roll in shaka player for DASH ?? Any examples / references ?? Thanks, Gheri.

Gheri avatar Dec 06 '21 11:12 Gheri

@ronak2121 I can see XLink on Request is not supported yet on Shaka Player Then how you are going with SGAI ??

Gheri avatar Apr 29 '22 12:04 Gheri

I am not aware of anyone working on either patch manifests or xlink onRequest. Today xlinks are only resolved immediately on parsing the manifest.

joeyparrish avatar Apr 29 '22 15:04 joeyparrish

@Gheri we aren't doing SGAI yet. We're still on CSAI with Google IMA. I am super motivated to add this support though. I will hit you up @joeyparrish when we're ready to start contributing and get some pointers.

ronak2121 avatar Apr 29 '22 23:04 ronak2121

@avelad is this being actually being considered to be added in version 4.1? @joeyparrish if you still need help implementing this and/or HLS Interstitials, we are open to help you. Can you describe the next steps?

ronak2121 avatar May 09 '22 21:05 ronak2121

As far as I can tell, nobody is working on this yet, so it shouldn't be in the v4.1 milestone. I placed this enhancement in the backlog for now.

As for next steps, the original post describes what look like several separate requests:

  • Support for xlinks "onRequest"
  • Some handling to indicate whether a period being played is an Ad or not
  • Or exposing manifest events so we can track it on our own
  • Exposing Timed Metadata from the stream
  • Support for Dash Patch Manifests for Live Streaming

I would say that the next steps depend on which of these you intend to tackle first:

  • I think timed metadata is already exposed, is it not? Can you be more specific about what you need here?
  • Patch manifest support is likely to be independent of the others in terms of implementation. I suggest splitting that into its own issue.
  • Indicating whether a period is an ad or not is a layered problem. First, how does DASH indicate that a Period is an ad? You'd have to parse that. Second, since period-flattening in v3.0, the internal structure loses information about DASH Periods, so some larger architecture change would be necessary. This is not a small problem.
  • Supporting xlink onRequest is another fundamental change to the architecture. Today, manifests have to be fully parsed. To support xlink onRequest, the player would have to fetch and update that portion of the manifest right before it's needed. A communication channel between player and manifest parser would have to be added for that, and the shape of that is an open question. There are also open questions about restrictions on xlinks. For example, if xlink is used in such a way that the duration of some periods (and therefore the duration of the presentation) can't be know in advance, then that could make everything more complicated. The player overall assumes that it knows the presentation duration upfront for VOD. Do we require duration info in the main manifest? Or do we change all the components that want to know duration in advance? Or do we set the duration such that it "stops" close to the boundary of an unknown-duration period, and expand the duration as we resolve xlinks? Lots of open questions here.

joeyparrish avatar May 09 '22 23:05 joeyparrish

@ronak2121 Did you guys know whats equivalent of xlink onRequest in HLS ?? Becuase HLS interstitial is loading the manifest on load and not on Request ?? Also I did not any equivalent for dynamic uri substitution as well in HLS ?? Dynamic Uri substitution is needed to make actual manifest cacheable and support unique user requests for ads. (https://dashif.org/docs/DASH-TAC-v1.0.htm#_Toc532379025)

Gheri avatar May 20 '22 03:05 Gheri

@Gheri there's no such thing as xlinks for HLS. Look at the new HLS talks from Apple about how things work there. I have successfully prototyped SGAI on HLS with iOS using AVPlayer, and it works as advertised with delayed resolution.

ronak2121 avatar Jul 07 '22 19:07 ronak2121