{"action":"opened","issue":{"url":"https://api.github.com/repos/google/ExoPlayer/issues/3780","repository_url":"https://api.github.com/repos/google/ExoPlayer","labels_url":"https://api.github.com/repos/google/ExoPlayer/issues/3780/labels{/name}","comments_url":"https://api.github.com/repos/google/ExoPlayer/issues/3780/comments","events_url":"https://api.github.com/repos/google/ExoPlayer/issues/3780/events","html_url":"https://github.com/google/ExoPlayer/issues/3780","id":293512881,"number":3780,"title":"Multikey protected Dash video doesn't work","user":{"login":"drjunja86","id":7721441,"avatar_url":"https://avatars0.githubusercontent.com/u/7721441?v=4","gravatar_id":"","url":"https://api.github.com/users/drjunja86","html_url":"https://github.com/drjunja86","followers_url":"https://api.github.com/users/drjunja86/followers","following_url":"https://api.github.com/users/drjunja86/following{/other_user}","gists_url":"https://api.github.com/users/drjunja86/gists{/gist_id}","starred_url":"https://api.github.com/users/drjunja86/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drjunja86/subscriptions","organizations_url":"https://api.github.com/users/drjunja86/orgs","repos_url":"https://api.github.com/users/drjunja86/repos","events_url":"https://api.github.com/users/drjunja86/events{/privacy}","received_events_url":"https://api.github.com/users/drjunja86/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-02-01T12:30:14Z","updated_at":"2018-02-01T12:30:14Z","closed_at":null,"author_association":"NONE","body":"### Issue description\r\nExoPlayer is unable to play DASH video with multiple content protection keys and fails with error:\r\n```\r\ncom.google.android.exoplayer2.demo E/ExoPlayerImplInternal: Renderer error.\r\ncom.google.android.exoplayer2.ExoPlaybackException\r\n    at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.feedInputBuffer(MediaCodecRenderer.java:750)\r\n    at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:553)\r\n    at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:560)\r\n    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:306)\r\n    at android.os.Handler.dispatchMessage(Handler.java:98)\r\n    at android.os.Looper.loop(Looper.java:154)\r\n    at android.os.HandlerThread.run(HandlerThread.java:61)\r\nCaused by: android.media.MediaCodec$CryptoException: Error decrypting data: requested key has not been loaded\r\n    at android.media.MediaCodec.native_queueSecureInputBuffer(Native Method)\r\n    at android.media.MediaCodec.queueSecureInputBuffer(MediaCodec.java:2480)\r\n    at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.feedInputBuffer(MediaCodecRenderer.java:741)\r\n    at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:553) \r\n    at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:560) \r\n    at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:306) \r\n    at android.os.Handler.dispatchMessage(Handler.java:98) \r\n    at android.os.Looper.loop(Looper.java:154) \r\n    at android.os.HandlerThread.run(HandlerThread.java:61) \r\n```\r\nI saw one related topic in issue tracker: https://github.com/google/ExoPlayer/issues/1824 However it is closed with no actions done. There was a discussion about other ways to implement it and how to interpret DASH specs, but time has passed, and there is more clear explanation in newer spec what should client (player) do (See http://dashif.org/wp-content/uploads/2017/09/DASH-IF-IOP-v4.1-clean.pdf chapter 7.7.9. Client Interactions with DRM Systems):\r\n```\r\nClients SHALL explicitly request all required media keys signaled by default KIDs and SHALL NOT assume that requesting one key from this set will implicitly make others available.\r\n```\r\nMulti-key is important in situation with different quality levels, because we need to apply different protection policies to different types of content. E.g. client needs a high security in-seat airline-owned device to play 4K video, but he may need medium security for 1080p and below that on any device. Using different keys is the technical mechanism that enables DRM system to enforce such different rules.\r\n\r\n\r\n### Reproduction steps\r\n1. In the ExoPlayer demo app version 2.6.1 add next content to the media.exolist.json\r\n```\r\n{\r\n        \"name\": \"v7-MultiDRM-MultiKey 1080p\",\r\n        \"uri\": \"https://media.axprod.net/TestVectors/v7-MultiDRM-MultiKey/Manifest_1080p.mpd\",\r\n        \"drm_scheme\": \"widevine\",\r\n        \"drm_license_url\": \"https://drm-widevine-licensing.axtest.net/AcquireLicense\",\r\n        \"drm_key_request_properties\": {\r\n          \"X-AxDRM-Message\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2ZXJzaW9uIjoxLCJjb21fa2V5X2lkIjoiYjMzNjRlYjUtNTFmNi00YWUzLThjOTgtMzNjZWQ1ZTMxYzc4IiwibWVzc2FnZSI6eyJ0eXBlIjoiZW50aXRsZW1lbnRfbWVzc2FnZSIsImtleXMiOlt7ImlkIjoiODAzOTliZjUtOGEyMS00MDE0LTgwNTMtZTI3ZTc0OGU5OGMwIiwiZW5jcnlwdGVkX2tleSI6ImxpTkpxVmFZa05oK01LY3hKRms3SWc9PSJ9LHsiaWQiOiI5MDk1M2UwOS02Y2IyLTQ5YTMtYTI2MC03YTVmZWZlYWQ0OTkiLCJlbmNyeXB0ZWRfa2V5Ijoia1l0SEh2cnJmQ01lVmRKNkxrYmtuZz09In0seyJpZCI6IjBlNGRhOTJiLWQwZTgtNGE2Ni04YzNmLWMyNWE5N2ViNjUzMiIsImVuY3J5cHRlZF9rZXkiOiI3dzdOWkhITE1nSjRtUUtFSzVMVE1RPT0ifSx7ImlkIjoiNTg1ZjIzM2YtMzA3Mi00NmYxLTlmYTQtNmRjMjJjNjZhMDE0IiwiZW5jcnlwdGVkX2tleSI6IkFjNFVVbVl0Qko1blBROU4xNXJjM2c9PSJ9LHsiaWQiOiI0MjIyYmQ3OC1iYzQ1LTQxYmYtYjYzZS02ZjgxNGRjMzkxZGYiLCJlbmNyeXB0ZWRfa2V5IjoiTzZGTzBmcVNXb3BwN2JqYy9ENGxNQT09In1dfX0.uF6YlKAREOmbniAeYiH070HSJhV0YS7zSKjlCtiDR5Y\"\r\n        }\r\n      }\r\n```\r\n2. Try to play added media.\r\n\r\n### Link to test content\r\nhttps://media.axprod.net/TestVectors/v7-MultiDRM-MultiKey/Manifest.mpd\r\n\r\n### Version of ExoPlayer being used\r\nExoPlayer 2.6.1\r\n\r\n### Device(s) and version(s) of Android being used\r\nNot device specific. For bugreport used Nexus 9 with Android 7.1.1\r\n\r\n### A full bug report captured from the device\r\nBugreport sent by email\r\n"}}
{"actor":{"display_login":"drjunja86"}}