videojs / videojs-contrib-eme

Supports Encrypted Media Extensions for playback of encrypted content in Video.js
Other
199 stars 71 forks source link

Getting "Playback cannot continue. No available working or supported playlists." error on iPad Chrome for a FairPlay stream. #165

Open daniel-inka opened 2 years ago

daniel-inka commented 2 years ago

Hi,

I have a very odd issue occurs only on a specific case as below:

Since Chrome for iOS/iPadOS is based on Webkit, it supports Apple's FairPlay DRM instead of Google Widevine. And the above HLS stream works fine with FairPlay DRM protection on iOS Chrome, iOS Safari, and iPadOS Safari. When I change any of the above combination, it just works fine.

To make sure if the issue is about VideoJS player only, I made a test page to test the same content on various HTML5 players. (Other players have no issue with the same environment and content)

I hope someone can check the above test page on iPad Chrome and figure out how to fix the issue.

alexlol76 commented 7 months ago

Hi! @daniel-inka Have you found a solution to this problem?

daniel-inka commented 7 months ago

Hi @alexlol76 I'm sorry, but I don't know if there's any solution or whether it's fixed now. It's been quite long and the issue was not that much critical.

alexlol76 commented 7 months ago

@daniel-inka Thanks for the reply! At the moment from a real iPad device on the Pallycon Videojs demo page the playback works, but with the same player setting and DRM as on the demo page, unfortunately, it doesn't work

alexlol76 commented 7 months ago

I found a solution to this problem, in our case... We had the property overrideNative: !videojs.browser.IS_SAFARI (https://github.com/videojs/http-streaming?tab=readme-ov-file#overridenative). We need the value false for iPad to make it work for other browsers.

As a result, the following implementation came out:

const isOverrideNative = () => {
  const isSafari = videojs.browser.IS_SAFARI;
  const isIPad = videojs.browser.IS_IPAD;

  if (isIPad && !isSafari) {
    return false;
  }

  return !isSafari;
};

...
html5: {
      vhs: {
        overrideNative: isOverrideNative(),
      },
    },
...

FYI @daniel-inka

daniel-inka commented 7 months ago

hi @alexlol76 thank you for sharing your solution for the issue. let me check it with my dev team.

ashiskumarsahu commented 2 weeks ago

Hi @daniel-inka, I am experiencing the same when I added following for mac safari, vhs: { overrideNative: true, }

can you confirm if any feasible solution?

I am using videojs-contrib-eme@3.10.1, video.js@7.21.5. Can you suggest how to fix?

Thank You

daniel-inka commented 2 weeks ago

Hi @ashiskumarsahu, Actually, we're not using the overrideNative property and don't have any issues on macOS Safari. (AFAIK) We're using videojs 8.3.0 with videojs-contrib-eme 3.8.0.

ashiskumarsahu commented 2 weeks ago

Hi @daniel-inka, Tahnks for confirming. With the same config could you please check and confirm, you are not having any issue with getting quality levels from dash content with cmaf container formats? It would be greate if you can share what additional plugins you are using to display quality levels on player? Example: http-source-selector or hls-source-selector etc.

You can use shaka packager to pack cmaf.

When you use eme, I beleive contrib-dash is no use.

Thank You