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

Using persistent licenses on Xwalk #1240

Closed saisasanksunkavalli closed 6 years ago

saisasanksunkavalli commented 6 years ago

I am using 2.3 version of Shaka Player

Os : Android 7.0 Browser : XWalkWebView on Android (XWalk Project)

I am trying to play the Videos using offline support (Demo App). The content is CENC encrypted. I am trying out the demo example. The error I am getting if i try the offline support example is

Error code is 6001 & the category is 6.

I wanted to know if persistent license offline support is available on Android Webviews? Does persistent licenses work on Android

joeyparrish commented 6 years ago

Error 6001 is REQUESTED_KEY_SYSTEM_CONFIG_UNAVAILABLE. So it would appear that this isn't supported.

Can you please try our support page in Xwalk and paste the results here on github for us? https://shaka-player-demo.appspot.com/support.html

That will help us understand what it does and doesn't support.

saisasanksunkavalli commented 6 years ago

These are the results If i load the support page in XWalk

Mozilla/5.0 (Linux; Android 7.0; SM-G615FU Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Crosswalk/23.53.589.4 Mobile Safari/537.36v2.3.1-dirty

{
  "manifest": {
    "application/dash+xml": true,
    "application/x-mpegurl": true,
    "application/vnd.apple.mpegurl": true,
    "application/x-offline-manifest": true,
    "mpd": true,
    "m3u8": true,
    "application/vnd.ms-sstr+xml": false,
    "ism": false
  },
  "media": {
    "video/mp4; codecs=\"avc1.42E01E\"": true,
    "video/mp4": true,
    "video/mp4; codecs=\"avc3.42E01E\"": true,
    "video/mp4; codecs=\"hev1.1.6.L93.90\"": false,
    "video/mp4; codecs=\"hvc1.1.6.L93.90\"": false,
    "video/mp4; codecs=\"hev1.2.4.L153.B0\"; eotf=\"smpte2084\"": false,
    "video/mp4; codecs=\"hvc1.2.4.L153.B0\"; eotf=\"smpte2084\"": false,
    "video/mp4; codecs=\"vp9\"": false,
    "video/mp4; codecs=\"vp09.00.10.08\"": false,
    "audio/mp4; codecs=\"mp4a.40.2\"": true,
    "audio/mp4": true,
    "audio/mp4; codecs=\"ac-3\"": false,
    "audio/mp4; codecs=\"ec-3\"": false,
    "audio/mp4; codecs=\"opus\"": false,
    "audio/mp4; codecs=\"flac\"": false,
    "video/webm; codecs=\"vp8\"": false,
    "video/webm": true,
    "video/webm; codecs=\"vp9\"": true,
    "video/webm; codecs=\"av1\"": false,
    "audio/webm; codecs=\"vorbis\"": true,
    "audio/webm": true,
    "audio/webm; codecs=\"opus\"": true,
    "video/mp2t; codecs=\"avc1.42E01E\"": false,
    "video/mp2t": false,
    "video/mp2t; codecs=\"avc3.42E01E\"": false,
    "video/mp2t; codecs=\"hvc1.1.6.L93.90\"": false,
    "video/mp2t; codecs=\"mp4a.40.2\"": false,
    "video/mp2t; codecs=\"ac-3\"": false,
    "video/mp2t; codecs=\"ec-3\"": false,
    "text/vtt": true,
    "application/mp4; codecs=\"wvtt\"": true,
    "application/mp4": true,
    "application/ttml+xml": true,
    "application/mp4; codecs=\"stpp\"": true
  },
  "drm": {
    "org.w3.clearkey": {
      "persistentState": false
    },
    "com.microsoft.playready": null,
    "com.apple.fps.2_0": null,
    "com.apple.fps.1_0": null,
    "com.apple.fps": null,
    "com.adobe.primetime": null,
    "com.widevine.alpha": {
      "persistentState": false
    }
  },
  "offline": true
}

What does these results infer ?

saisasanksunkavalli commented 6 years ago

These are the results if I load the support page in Android WebView

Mozilla/5.0 (Linux; Android 7.0; SM-G615FU Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/63.0.3239.111 Mobile Safari/537.36 v2.3.1-dirty

{
  "manifest": {
    "application/dash+xml": true,
    "application/x-mpegurl": true,
    "application/vnd.apple.mpegurl": true,
    "application/x-offline-manifest": true,
    "mpd": true,
    "m3u8": true,
    "application/vnd.ms-sstr+xml": false,
    "ism": false
  },
  "media": {
    "video/mp4; codecs=\"avc1.42E01E\"": true,
    "video/mp4": true,
    "video/mp4; codecs=\"avc3.42E01E\"": true,
    "video/mp4; codecs=\"hev1.1.6.L93.90\"": false,
    "video/mp4; codecs=\"hvc1.1.6.L93.90\"": false,
    "video/mp4; codecs=\"hev1.2.4.L153.B0\"; eotf=\"smpte2084\"": false,
    "video/mp4; codecs=\"hvc1.2.4.L153.B0\"; eotf=\"smpte2084\"": false,
    "video/mp4; codecs=\"vp9\"": false,
    "video/mp4; codecs=\"vp09.00.10.08\"": true,
    "audio/mp4; codecs=\"mp4a.40.2\"": true,
    "audio/mp4": true,
    "audio/mp4; codecs=\"ac-3\"": false,
    "audio/mp4; codecs=\"ec-3\"": false,
    "audio/mp4; codecs=\"opus\"": false,
    "audio/mp4; codecs=\"flac\"": true,
    "video/webm; codecs=\"vp8\"": true,
    "video/webm": true,
    "video/webm; codecs=\"vp9\"": true,
    "video/webm; codecs=\"av1\"": false,
    "audio/webm; codecs=\"vorbis\"": true,
    "audio/webm": true,
    "audio/webm; codecs=\"opus\"": true,
    "video/mp2t; codecs=\"avc1.42E01E\"": false,
    "video/mp2t": false,
    "video/mp2t; codecs=\"avc3.42E01E\"": false,
    "video/mp2t; codecs=\"hvc1.1.6.L93.90\"": false,
    "video/mp2t; codecs=\"mp4a.40.2\"": false,
    "video/mp2t; codecs=\"ac-3\"": false,
    "video/mp2t; codecs=\"ec-3\"": false,
    "text/vtt": true,
    "application/mp4; codecs=\"wvtt\"": true,
    "application/mp4": true,
    "application/ttml+xml": true,
    "application/mp4; codecs=\"stpp\"": true
  },
  "drm": {
    "org.w3.clearkey": {
      "persistentState": false
    },
    "com.microsoft.playready": null,
    "com.apple.fps.2_0": null,
    "com.apple.fps.1_0": null,
    "com.apple.fps": null,
    "com.adobe.primetime": null,
    "com.widevine.alpha": null
  },
  "offline": true
}

@joeyparrish with these Results, can you tell me If persistent licenses are supported on XWalk ?

joeyparrish commented 6 years ago

It looks like xwalk and WebView support all the same containers and codecs. Xwalk reports support for Widevine, but not persistent licenses:

    "com.widevine.alpha": {
      "persistentState": false
    }

WebView reports no support for Widevine at all:

    "com.widevine.alpha": null
joeyparrish commented 6 years ago

If the browser environment (xwalk in this case) reports no support for persistent licenses, there's nothing we can do from JavaScript to change that.

I noticed that WebView is based on Chrome 63 (which is current), but your version of xwalk is based on Chrome 53, which is 10 releases out of date (a little more than one year). I expect you would see different results with an updated xwalk based on a current release of Chrome. Persistent license support only came to Chrome Android a few months ago (if I recall correctly).

Actually, I just found this announcement from the crosswalk project, in which they state the project has shut down and is no longer maintained: https://crosswalk-project.org/blog/crosswalk-final-release.html

Your best bet is probably to move to another hybrid app framework that is still being maintained. I have heard good things about Electron (https://electronjs.org/), though I have never used it myself.

saisasanksunkavalli commented 6 years ago

@joeyparrish Thanks for your comment . I have one more doubt. I have loaded the support page in my mobile's Google Chrome App , Below pasted ones are the results.

Mozilla/5.0 (Linux; Android 7.0; Redmi Note 4 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36 v2.3.1-dirty

{
  "manifest": {
    "application/dash+xml": true,
    "application/x-mpegurl": true,
    "application/vnd.apple.mpegurl": true,
    "application/x-offline-manifest": true,
    "mpd": true,
    "m3u8": true,
    "application/vnd.ms-sstr+xml": false,
    "ism": false
  },
  "media": {
    "video/mp4; codecs=\"avc1.42E01E\"": true,
    "video/mp4": true,
    "video/mp4; codecs=\"avc3.42E01E\"": true,
    "video/mp4; codecs=\"hev1.1.6.L93.90\"": false,
    "video/mp4; codecs=\"hvc1.1.6.L93.90\"": false,
    "video/mp4; codecs=\"hev1.2.4.L153.B0\"; eotf=\"smpte2084\"": false,
    "video/mp4; codecs=\"hvc1.2.4.L153.B0\"; eotf=\"smpte2084\"": false,
    "video/mp4; codecs=\"vp9\"": false,
    "video/mp4; codecs=\"vp09.00.10.08\"": true,
    "audio/mp4; codecs=\"mp4a.40.2\"": true,
    "audio/mp4": true,
    "audio/mp4; codecs=\"ac-3\"": false,
    "audio/mp4; codecs=\"ec-3\"": false,
    "audio/mp4; codecs=\"opus\"": false,
    "audio/mp4; codecs=\"flac\"": true,
    "video/webm; codecs=\"vp8\"": true,
    "video/webm": true,
    "video/webm; codecs=\"vp9\"": true,
    "video/webm; codecs=\"av1\"": false,
    "audio/webm; codecs=\"vorbis\"": true,
    "audio/webm": true,
    "audio/webm; codecs=\"opus\"": true,
    "video/mp2t; codecs=\"avc1.42E01E\"": false,
    "video/mp2t": false,
    "video/mp2t; codecs=\"avc3.42E01E\"": false,
    "video/mp2t; codecs=\"hvc1.1.6.L93.90\"": false,
    "video/mp2t; codecs=\"mp4a.40.2\"": false,
    "video/mp2t; codecs=\"ac-3\"": false,
    "video/mp2t; codecs=\"ec-3\"": false,
    "text/vtt": true,
    "application/mp4; codecs=\"wvtt\"": true,
    "application/mp4": true,
    "application/ttml+xml": true,
    "application/mp4; codecs=\"stpp\"": true
  },
  "drm": {
    "org.w3.clearkey": {
      "persistentState": false
    },
    "com.microsoft.playready": null,
    "com.apple.fps.2_0": null,
    "com.apple.fps.1_0": null,
    "com.apple.fps": null,
    "com.adobe.primetime": null,
    "com.widevine.alpha": {
      "persistentState": true
    }
  },
  "offline": true
}

If you can observe from the results , persistent licenses are supported on Google Chrome App

"com.widevine.alpha": { "persistentState": true }

But If i load the Offline Support example , it is still giving 6001 error. What might be the issue in this case ?

joeyparrish commented 6 years ago

I'm not sure what the issue might be. The browser reports that it supports Widevine with persistent licenses, so that shouldn't be an issue.

ismena commented 6 years ago

It's been a while since there was any activity on this issue. @saisasanksunkavalli are you interested in continuing the discussion, on can we go ahead and close the issue?

joeyparrish commented 6 years ago

Closing due to inactivity. Let us know if you need further assistance.