我正在使用 Exoplayer 播放 Widevine DRM 内容以进行离线内容播放。我为测试目的为我的 Widevine 策略设置了以下参数:“rental_duration_seconds”:900 “playback_duration_seconds”:600 “license_duration_seconds”:300
内容在下载后播放良好,直到 10 分钟(playback_duration_seconds)。发布如果我玩,Exoplayer lib 正在尝试提出许可请求。许可证 POST 调用成功但失败:
E/EventLogger: playerFailed [eventTime=2.14, mediaPos=0.00, window=0, period=0
com.google.android.exoplayer2.ExoPlaybackException: Source error
at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:580)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:223)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: com.google.android.exoplayer2.drm.DrmSession$DrmSessionException: android.media.MediaDrm$MediaDrmStateException: Failed to handle key response: General DRM error
at com.google.android.exoplayer2.drm.DefaultDrmSession.onError(DefaultDrmSession.java:514)
at com.google.android.exoplayer2.drm.DefaultDrmSession.onKeysError(DefaultDrmSession.java:509)
at com.google.android.exoplayer2.drm.DefaultDrmSession.onKeyResponse(DefaultDrmSession.java:494)
at com.google.android.exoplayer2.drm.DefaultDrmSession.access$100(DefaultDrmSession.java:58)
at com.google.android.exoplayer2.drm.DefaultDrmSession$ResponseHandler.handleMessage(DefaultDrmSession.java:554)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: android.media.MediaDrm$MediaDrmStateException: Failed to handle key response: General DRM error
at android.media.MediaDrm.provideKeyResponse(Native Method)
at com.google.android.exoplayer2.drm.FrameworkMediaDrm.provideKeyResponse(FrameworkMediaDrm.java:228)
at com.google.android.exoplayer2.drm.DefaultDrmSession.onKeyResponse(DefaultDrmSession.java:482)
at com.google.android.exoplayer2.drm.DefaultDrmSession.access$100(DefaultDrmSession.java:58)
at com.google.android.exoplayer2.drm.DefaultDrmSession$ResponseHandler.handleMessage(DefaultDrmSession.java:554)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.os.HandlerThread.run(HandlerThread.java:67)
问题:
- 上述错误的原因。
- 播放时如果由于playback_duration_seconds_remaining 变为0而停止播放,是否可以续订许可证并恢复播放?如何?
- 当 rent_duration 到期时,是否可以使用新的许可证密钥播放内容而无需重新下载内容文件?