shaka-project / shaka-player

JavaScript player library / DASH & HLS client / MSE-EME player
Apache License 2.0
7.18k stars 1.34k forks source link

In case of Fairplay playback in shaka, how to achieve shaka to make subsequent fairplay license call based in LEASE limited duration #6280

Closed anandhakarthick closed 8 months ago

anandhakarthick commented 8 months ago

**Have you read the Tutorials? Yes

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

If the question is related to FairPlay, have you read the tutorial?. Yes

What version of Shaka Player are you using? Latest Shaka

What browser and OS are you using? Safari, MAC

**In case of Widevine playback using shaka, if the WV license service backend set the RenewalIntervalSeconds in policy, based on this time, player makes a subsequent renewal call to license server which is working fine & i have validated it.

Similarly in case of Fairplay, in backend license server , i'm trying to set the contentkey duration as LEASE_ONLY(0x1a4bde7e) or LIMITED(0x18f06048), with a duration of some 60sec.. with this change in backend, the license delivered to shaka is valid only upto 60sec & expected to make subsequent license call to fairplay license service by shaka player , which didn't happened but content continue to play even after 60sec..

To achieve this case , if any special tweaks to be done at shaka client end ? kindly suggest. **

joeyparrish commented 8 months ago

@avelad, can you answer this one when you are back to work?

anandhakarthick commented 8 months ago

Hi @avelad - could you please suggest on this

avelad commented 8 months ago

I have no experience with the FairPlay backend and its policies, I know how to implement it on the player side only. I'm sorry! I leave the question open to see if anyone in the community can help.

tykus160 commented 8 months ago

Hey @anandhakarthick I haven't played with FairPlay limited licenses for some time, but there are some things to check client-side. AFAIR configuration you're trying to achieve doesn't work with legacy EME implementation, so first of all ensure that Apple EME polyfill is NOT installed. License renewal support should be there with native player and MSE. Buuuut... unfortunately it's not automatic like for Widevine. Client needs to know how often license needs to be renewed and handle it:

let renew = Uint8Array.from('renew', c => c.charCodeAt(0));
mediaKeySession.update(renew);

I don't remember implementation details anymore, but I guess code above would generate new message from session that could be used for license refetch. Keep in mind, manual renew logic is not implemented in Shaka now.

To sum up - ensure you don't have polyfill installed, try to play your content. If playback fails after license expiration, you'll need to add missing logic to Shaka.

anandhakarthick commented 8 months ago

thank a lot @tykus160 - Will try out with your suggestions

shaka-bot commented 8 months ago

Closing due to inactivity. If this is still an issue for you or if you have further questions, the OP can ask shaka-bot to reopen it by including @shaka-bot reopen in a comment.