Как я могу получить ExoPlayer для воспроизведения контента DRM PlayReady?

Как получить ExoPlayer для воспроизведения контента DRM PlayReady?

Я не могу запустить контент DRM Playready через платформу ExoPlayer. Я думаю, что это как-то связано с моим drmSessionManager

Как manifestUrl, так и LicenseUrl были протестированы на работу, но мои изменения сложно реализовать, так как нет реальных конкретных примеров реализации контента DRM (WideVine или PlayReady).

Нормальный контент Dash работает с ExoPlayer, но когда я пытаюсь воспроизвести любой контент, защищенный DRM, происходит сбой.

  DataSource.Factory dataSourceFactory = new DefaultHttpDataSourceFactory(Util.getUserAgent(this, "ExoPlayerDASHPR")); try { drmSessionManager = buildDrmSessionManager(C.PLAYREADY_UUID, drmLicenseUrl, true); } catch (Exception e) { System.out.println(e); } player = ExoPlayerFactory.newSimpleInstance(new DefaultRenderersFactory(this), new DefaultTrackSelector(), drmSessionManager); playerView.setPlayer(player); DashMediaSource mediaSource = new DashMediaSource.Factory(new DefaultDashChunkSource.Factory(dataSourceFactory), dataSourceFactory).createMediaSource(manifestUri); player.prepare(mediaSource); player.setPlayWhenReady(true); } 

Метод для создания фактического drmSessionManager (где, я думаю, проблема лежит)

 private DefaultDrmSessionManager{amp}lt;FrameworkMediaCrypto{amp}gt; buildDrmSessionManager( UUID uuid, String licenseUrl, boolean multiSession) throws UnsupportedDrmException { HttpMediaDrmCallback httpMediaDrmCallback = new HttpMediaDrmCallback(licenseUrl, new DefaultHttpDataSourceFactory(Util.getUserAgent(this, "ExoPlayerDASHPR"))); releaseMediaDrm(); mediaDrm = FrameworkMediaDrm.newInstance(uuid); return new DefaultDrmSessionManager{amp}lt;{amp}gt;(uuid, mediaDrm, httpMediaDrmCallback, null, multiSession); } 

Ожидается, что он будет воспроизводить контент PlayReady через мой WebView на устройстве Android. Я на 100% уверен, что устройство поддерживает PlayReady, так как это NVidia Shield.

Сообщения об ошибках ниже.

 2019-10-18 09:56:18.272 31508-31555/com.example.exoplayer_dashpr E/ExoPlayerImplInternal: Playback error. com.google.android.exoplayer2.ExoPlaybackException at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.shouldWaitForKeys(MediaCodecRenderer.java:842) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.feedInputBuffer(MediaCodecRenderer.java:739) at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:574) at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:518) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:301) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:193) at android.os.HandlerThread.run(HandlerThread.java:65) Caused by: com.google.android.exoplayer2.drm.DrmSession$DrmSessionException: com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException: Response code: 500 at com.google.android.exoplayer2.drm.DefaultDrmSession.onError(DefaultDrmSession.java:422) at com.google.android.exoplayer2.drm.DefaultDrmSession.onKeysError(DefaultDrmSession.java:417) at com.google.android.exoplayer2.drm.DefaultDrmSession.onKeyResponse(DefaultDrmSession.java:379) at com.google.android.exoplayer2.drm.DefaultDrmSession.access$100(DefaultDrmSession.java:41) at com.google.android.exoplayer2.drm.DefaultDrmSession$PostResponseHandler.handleMessage(DefaultDrmSession.java:472) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.os.HandlerThread.run(HandlerThread.java:65) Caused by: com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException: Response code: 500 at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:211) at com.google.android.exoplayer2.upstream.DataSourceInputStream.checkOpened(DataSourceInputStream.java:102) at com.google.android.exoplayer2.upstream.DataSourceInputStream.read(DataSourceInputStream.java:82) at com.google.android.exoplayer2.upstream.DataSourceInputStream.read(DataSourceInputStream.java:76) at com.google.android.exoplayer2.util.Util.toByteArray(Util.java:128) at com.google.android.exoplayer2.drm.HttpMediaDrmCallback.executePost(HttpMediaDrmCallback.java:159) at com.google.android.exoplayer2.drm.HttpMediaDrmCallback.executeKeyRequest(HttpMediaDrmCallback.java:134) at com.google.android.exoplayer2.drm.DefaultDrmSession$PostRequestHandler.handleMessage(DefaultDrmSession.java:503) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.os.HandlerThread.run(HandlerThread.java:65) 
Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector