Shaka-player: Hls on Safari - getManifest() or getVariantTracks() return incomplete data.

Created on 17 Aug 2020  路  6Comments  路  Source: google/shaka-player

Have you read the Tutorials?
Yes

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

What version of Shaka Player are you using?
2.5.15

Please ask your question
When I load dash with widevine then getManifest() return manifest object and getVariantTracks() return variant tracks with complete data https://snipboard.io/N6jtAz.jpg
When i load hls with fairplay (manifest as masterlist) on Safari, getManifest() return null and getVartinatTracks() return incomlete data https://snipboard.io/lkmTdp.jpg

Why?

archived common questions question

All 6 comments

By default, when we play HLS content on Safari, we use Safari's built-in playback; we do that by default because there are some things that cannot be done in MediaSource on Safari, such as playing FairPlay content.
So getManifest() returns null because the browser loaded the manifest, not us. And getVariantTracks() returns incomplete information because we are constructing it from the video element's audio track information.
If you want to be able to select specific video tracks, then you can re-configure Shaka Player to use MediaSource on Safari, by setting the streaming.useNativeHlsOnSafari configuration value to false.

That's all correct. I would just add that you can't set streaming.useNativeHlsOnSafari to false on iOS, because native HLS is the only option on iOS. It can be used on desktop Safari, though.

Does this help answer your question?

Has "streaming.useNativeHlsOnSafari: false" any disadvantages on macOS Safari? For example, reduced performance.
On iOS i leave fairplay implementation because Shaka doesn't request license server - i'm probably doing something wrong.

BTW. I set "streaming.useNativeHlsOnSafari: false" and Shaka return error REQUESTED_KEY_SYSTEM_CONFIG_UNAVAILABLE. So I set config props videoRobustness and audioRobustness to one of the system:
SW_SECURE_CRYPTO
SW_SECURE_DECODE
HW_SECURE_CRYPTO
HW_SECURE_DECODE
HW_SECURE_ALL

and Shaka still return REQUESTED_KEY_SYSTEM_CONFIG_UNAVAILABLE

Has "streaming.useNativeHlsOnSafari: false" any disadvantages on macOS Safari? For example, reduced performance.

You can't use it with FairPlay since we only support FairPlay with src=. Apple also supports more content than we do and may be able to play stuff we can't. Also, those robustness values you list are for Widevine, not FairPlay. Safari only supports FairPlay.

@qba86 Does this answer all your questions? Can we close the issue?

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

Was this page helpful?
0 / 5 - 0 ratings