Android 离线数字版权管理。将exoplayer用于脱机安全内容

Android 离线数字版权管理。将exoplayer用于脱机安全内容,android,video-streaming,drm,exoplayer,Android,Video Streaming,Drm,Exoplayer,我可以下载SD卡上具有DRM保护的视频,并仅使用使用Exoplayer的应用程序播放,或者以某种方式安全保存视频。我不希望用户可以将我的视频复制到其他设备,我希望将其保存在SD卡上,因为用户可以下载的视频的大小和数量,现在我决定使用。快速简便的加密方法。我下载我的内容并将其传递给隐藏库,当我想播放视频时,使用字节流读取视频 但如果你找到更好更简单的方法,请告诉我 您可以找到一个示例您可以使用Exoplayer进行脱机查看。但是您必须从DrmSessionManager扩展自己的类。这里的关键是使

我可以下载SD卡上具有DRM保护的视频,并仅使用使用Exoplayer的应用程序播放,或者以某种方式安全保存视频。我不希望用户可以将我的视频复制到其他设备,我希望将其保存在SD卡上,因为用户可以下载的视频的大小和数量,现在我决定使用。快速简便的加密方法。我下载我的内容并将其传递给隐藏库,当我想播放视频时,使用字节流读取视频

但如果你找到更好更简单的方法,请告诉我


您可以找到一个示例

您可以使用Exoplayer进行脱机查看。但是您必须从
DrmSessionManager
扩展自己的类。这里的关键是使用
MediaDrm.Key\u TYPE\u OFFLINE
作为
MediaDrm.getKeyRequest
中的键类型

mediaDrm.provideKeyResponse
中,您需要获取
KeySetId
并在以后对同一视频发出另一个请求时使用
mediaDrm.restoreKeys

另外,在恢复按键后,不要忘了用按键设置播放器的状态,即
state\u OPENED\u

您可以在此处找到有关此的更多信息:

最新版本的ExoPlayer 2.2.0提供了内置于ExoPlayer中的此功能。 ExoPlayer有一个助手类来下载和刷新脱机许可证密钥

OfflineLicenseHelper.java
/**
 * Helper class to download, renew and release offline licenses. It utilizes {@link
 * DefaultDrmSessionManager}.
 */
public final class OfflineLicenseHelper<T extends ExoMediaCrypto> {
OfflineLicenseHelper.java
/**
*用于下载、续订和发布脱机许可证的Helper类。它利用{@link
*DefaultDrmSessionManager}。
*/
公共最终类OfflineLicenseHelper{
您可以从中访问最新代码

想要获得更多的灵感,你可以看看这封信


我创建了一个用于离线播放DRM内容的示例应用程序。你可以从

Hi Siavash访问它,你有什么解决方案吗?@PrabhuM不适用于离线DRM,但我写了一个答案。也许它也适用于你。你能提供一个更详细信息的示例吗?@HamedGh我更新了我的答案。你可以看看。正如谷歌所说:在Android 4.4上(API级别19)及更高版本,ExoPlayer支持数字版权管理(DRM)保护播放。但是你将minSdkVersion设置为16,为什么?它适用于api 16吗?@HamedGh:是的,这是一个诚实的错误,我会更新它。谢谢。你提供的示例是图像,如何在用户希望将进度更改为任何进度的视频中实现它time@HamedGh例如,你可以将一个视频分解为几个15秒的视频加密和解密它。我知道这不是一个好的解决方案。所以你可以使用drm,请看接受的答案。