2015-09-30 91 views
3

我試圖實現Android應用程序播放widevine保護的視頻。我在Exoplayer上構建我的應用程序,並且與MediaDrm有問題。Exoplayer - Widevine和MPEG DASH

android.media.MediaDrm$MediaDrmStateException: Failed to get key request: DRM vendor-defined error: -2998 
      at android.media.MediaDrm.getKeyRequest(Native Method) 
      at com.google.android.exoplayer.drm.StreamingDrmSessionManager.postKeyRequest(StreamingDrmSessionManager.java:370) 
      at com.google.android.exoplayer.drm.StreamingDrmSessionManager.openInternal(StreamingDrmSessionManager.java:314) 
      at com.google.android.exoplayer.drm.StreamingDrmSessionManager.open(StreamingDrmSessionManager.java:284) 
      at com.google.android.exoplayer.MediaCodecTrackRenderer.maybeInitCodec(MediaCodecTrackRenderer.java:325) 
      at com.google.android.exoplayer.MediaCodecTrackRenderer.onInputFormatChanged(MediaCodecTrackRenderer.java:739) 
      at com.google.android.exoplayer.MediaCodecTrackRenderer.readFormat(MediaCodecTrackRenderer.java:511) 
      at com.google.android.exoplayer.MediaCodecTrackRenderer.doSomeWork(MediaCodecTrackRenderer.java:492) 
      at com.google.android.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:417) 
      at com.google.android.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:205) 

我有這個例外。我發現,這個異常被拋出在這行代碼:

keyRequest = mediaDrm.getKeyRequest(sessionId, schemeData, mimeType, MediaDrm.KEY_TYPE_STREAMING, params); 

方法的所有參數設置是否正確,但這種方法的調用失敗,並拋出上面的異常。

你知道我該怎麼解決它?謝謝你的幫助。

回答

1

我終於解決了。問題出在我用來測試的設備上。這款手機是採用Android 5.0.1的三星Galaxy S4。當我在不同的設備(Nexus 5,一些三星平板電腦等)上試用我的代碼時,它工作正常。所以在Galaxy S4中Widevine Modular可能存在一些缺陷或缺失的支持。