shaka-project / shaka-player

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

Webview/Chromium Need help downloading a DRM video using shaka-player #7019

Closed Jtrom314 closed 1 month ago

Jtrom314 commented 1 month ago

What version of Shaka Player are you using?

Latest

What browser and OS are you using?

Chromium / Android Webview

Please ask your question

I am developing an android application that utilizes webview in order to facilitate viewing and downloading videos. Currently I am able to download DRM videos using a Chrome browser however, when I go to view the application from webview to download videos, I am suddenly no longer able to download DRM videos. The odd thing about this is that shaka-player doesn't throw any errors for me to try to hunt down the reason why.

Non DRM videos, such as Big Buck Bunny, download fine.

Is there a difference between how chrome and chromium handles shaka-player?

avelad commented 1 month ago

Can you paste the output of https://nightly-dot-shaka-player-demo.appspot.com/support.html in your Webview? Thanks!

Jtrom314 commented 1 month ago

Mozilla/5.0 (Linux; Android 9; SM-G950U Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/126.0.6478.122 Mobile Safari/537.36 v4.10.4-main-3-g87bf738ec

{ "manifest": { "application/dash+xml": true, "video/vnd.mpeg.dash.mpd": true, "application/x-mpegurl": true, "application/vnd.apple.mpegurl": true, "application/vnd.ms-sstr+xml": true, "application/x-offline-manifest": true }, "media": { "video/mp4; codecs=\"avc1.42E01E\"": true, "video/mp4": true, "video/mp4; codecs=\"avc3.42E01E\"": true, "video/mp4; codecs=\"hev1.1.6.L93.90\"": true, "video/mp4; codecs=\"hvc1.1.6.L93.90\"": true, "video/mp4; codecs=\"hev1.2.4.L153.B0\"; eotf=\"smpte2084\"": true, "video/mp4; codecs=\"hvc1.2.4.L153.B0\"; eotf=\"smpte2084\"": true, "video/mp4; codecs=\"vp9\"": false, "video/mp4; codecs=\"vp09.00.10.08\"": true, "video/mp4; codecs=\"av01.0.01M.08\"": true, "video/mp4; codecs=\"dvh1.20.01\"": 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=\"ac-4.02.01.01\"": false, "audio/mp4; codecs=\"opus\"": true, "audio/mp4; codecs=\"flac\"": true, "audio/mp4; codecs=\"dtsc\"": false, "audio/mp4; codecs=\"dtse\"": false, "audio/mp4; codecs=\"dtsx\"": false, "video/webm; codecs=\"vp8\"": true, "video/webm": true, "video/webm; codecs=\"vp9\"": true, "video/webm; codecs=\"vp09.00.10.08\"": true, "audio/webm; codecs=\"vorbis\"": true, "audio/webm": true, "audio/webm; codecs=\"opus\"": true, "video/mp2t; codecs=\"avc1.42E01E\"": true, "video/mp2t": true, "video/mp2t; codecs=\"avc3.42E01E\"": true, "video/mp2t; codecs=\"hvc1.1.6.L93.90\"": true, "video/mp2t; codecs=\"mp4a.40.2\"": true, "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, "audio/aac": true, "audio/ac3": false, "audio/ec3": false, "audio/mpeg": true }, "drm": { "org.w3.clearkey": { "persistentState": false, "encryptionSchemes": [ "cenc", "cbcs", "cbcs-1-9" ], "videoRobustnessLevels": [], "audioRobustnessLevels": [] }, "com.widevine.alpha": { "persistentState": false, "encryptionSchemes": [ "cenc", "cbcs", "cbcs-1-9" ], "videoRobustnessLevels": [ "SW_SECURE_CRYPTO" ], "audioRobustnessLevels": [ "SW_SECURE_CRYPTO" ] }, "com.microsoft.playready": null, "com.microsoft.playready.hardware": null, "com.microsoft.playready.recommendation": null, "com.chromecast.playready": null, "com.apple.fps.1_0": null, "com.apple.fps": null }, "hardwareResolution": { "width": null, "height": null }, "offline": true }

avelad commented 1 month ago

it seems that your Webview is not supporting persitent licenses.

For example:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0
v4.10.4-main-3-g87bf738ec

{
  "manifest": {
    "application/dash+xml": true,
    "video/vnd.mpeg.dash.mpd": true,
    "application/x-mpegurl": true,
    "application/vnd.apple.mpegurl": true,
    "application/vnd.ms-sstr+xml": true,
    "application/x-offline-manifest": true
  },
  "media": {
    "video/mp4; codecs=\"avc1.42E01E\"": true,
    "video/mp4": true,
    "video/mp4; codecs=\"avc3.42E01E\"": true,
    "video/mp4; codecs=\"hev1.1.6.L93.90\"": true,
    "video/mp4; codecs=\"hvc1.1.6.L93.90\"": true,
    "video/mp4; codecs=\"hev1.2.4.L153.B0\"; eotf=\"smpte2084\"": true,
    "video/mp4; codecs=\"hvc1.2.4.L153.B0\"; eotf=\"smpte2084\"": true,
    "video/mp4; codecs=\"vp9\"": false,
    "video/mp4; codecs=\"vp09.00.10.08\"": true,
    "video/mp4; codecs=\"av01.0.01M.08\"": true,
    "video/mp4; codecs=\"dvh1.20.01\"": 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=\"ac-4.02.01.01\"": false,
    "audio/mp4; codecs=\"opus\"": true,
    "audio/mp4; codecs=\"flac\"": true,
    "audio/mp4; codecs=\"dtsc\"": false,
    "audio/mp4; codecs=\"dtse\"": false,
    "audio/mp4; codecs=\"dtsx\"": false,
    "video/webm; codecs=\"vp8\"": true,
    "video/webm": true,
    "video/webm; codecs=\"vp9\"": true,
    "video/webm; codecs=\"vp09.00.10.08\"": true,
    "audio/webm; codecs=\"vorbis\"": true,
    "audio/webm": true,
    "audio/webm; codecs=\"opus\"": true,
    "video/mp2t; codecs=\"avc1.42E01E\"": true,
    "video/mp2t": true,
    "video/mp2t; codecs=\"avc3.42E01E\"": true,
    "video/mp2t; codecs=\"hvc1.1.6.L93.90\"": true,
    "video/mp2t; codecs=\"mp4a.40.2\"": true,
    "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,
    "audio/aac": true,
    "audio/ac3": false,
    "audio/ec3": false,
    "audio/mpeg": true
  },
  "drm": {
    "org.w3.clearkey": {
      "persistentState": false,
      "encryptionSchemes": [
        "cenc",
        "cbcs",
        "cbcs-1-9"
      ],
      "videoRobustnessLevels": [],
      "audioRobustnessLevels": []
    },
    "com.widevine.alpha": {
      "persistentState": true,
      "encryptionSchemes": [
        "cenc",
        "cbcs",
        "cbcs-1-9"
      ],
      "videoRobustnessLevels": [
        "SW_SECURE_CRYPTO",
        "SW_SECURE_DECODE"
      ],
      "audioRobustnessLevels": [
        "SW_SECURE_CRYPTO"
      ]
    },
    "com.microsoft.playready": null,
    "com.microsoft.playready.hardware": null,
    "com.microsoft.playready.recommendation": null,
    "com.chromecast.playready": null,
    "com.apple.fps.1_0": null,
    "com.apple.fps": null
  },
  "hardwareResolution": {
    "width": null,
    "height": null
  },
  "offline": true
}

In this case you may see "persistentState": true, this indicates that there is support for persistent licenses.

Jtrom314 commented 1 month ago

Is there a way to tell webview to support persistent licenses?

avelad commented 1 month ago

That depends on the browser itself in this case, we cannot do anything to support it if the browser does not support it. Sorry!

shaka-bot commented 1 month 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.