我可以在 SD 卡上下载具有 DRM 保护的视频并仅使用我的使用 Exoplayer 的应用程序播放它,或者以某种方式安全地保存该视频。我不希望用户可以将我的视频复制到另一台设备,我想将其保存在 SD 卡上,因为用户可能下载的视频的大小和数量
4 回答
随着 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> {
如需更多灵感,您可以查看这个已关闭的问题。
我为 DRM 内容的离线播放创建了一个示例应用程序。您可以从这里访问它
您可以使用 Exoplayer 进行离线观看。但是您必须从DrmSessionManager
. 这里的 Key 是MediaDrm.KEY_TYPE_OFFLINE
用作mediaDrm.getKeyRequest
.
在mediaDrm.provideKeyResponse
您需要获取KeySetId
并稍后在对同一视频发出另一个请求时使用mediaDrm.restoreKeys
也不要忘记STATE_OPENED_WITH_KEYS
在恢复键后设置播放器的状态。
您可以在此处找到有关此的更多信息:http: //developer.android.com/reference/android/media/MediaDrm.html#KEY_TYPE_OFFLINE https://developer.android.com/reference/android/media/MediaDrm.html# restoreKeys(字节[],字节[])
现在我决定使用Facebook 隐藏库。快速简便的加密方式。我下载我的内容并将其传递给隐藏库,当我想播放视频时,使用字节流读取视频部分。
但如果你找到更好更简单的方法,请告诉我。
你可以在这里找到一个例子
ExoPlayer 存储库上的这个问题可能会帮助https://github.com/google/ExoPlayer/issues/949