videojs-contrib-eme icon indicating copy to clipboard operation
videojs-contrib-eme copied to clipboard

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

Open daniel-inka opened this issue 2 years ago • 8 comments

Hi,

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

  • Device: iPad Pro with M1 and iPad sixth generation (couldn't test it on other iPad models)
  • Browser: Google Chrome for iPadOS
  • HLS stream: https://eacademy.cwgv.com.tw/course/MISCFA0001/trailer/hls/master.m3u8 (protected by FairPlay DRM)
  • Player: VideoJS 7.19.2 with videojs-contrib-eme plugin 4.0.1

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.

daniel-inka avatar Jun 29 '22 09:06 daniel-inka

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

alexlol76 avatar Feb 13 '24 18:02 alexlol76

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.

daniel-inka avatar Feb 14 '24 00:02 daniel-inka

@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 avatar Feb 14 '24 09:02 alexlol76

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

alexlol76 avatar Feb 14 '24 17:02 alexlol76

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

daniel-inka avatar Feb 15 '24 05:02 daniel-inka

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 [email protected], [email protected]. Can you suggest how to fix?

Thank You

ashiskumarsahu avatar Aug 25 '24 11:08 ashiskumarsahu

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.

daniel-inka avatar Aug 26 '24 07:08 daniel-inka

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

ashiskumarsahu avatar Aug 29 '24 14:08 ashiskumarsahu