2015-10-18 166 views
2

我可以在SD卡上下載帶有DRM保護的視頻,並僅在使用Exoplayer的應用程序中播放,或者在某些情況下安全地保存視頻。我不希望用戶可以將我的視頻複製到其他設備,並且我希望將它保存在SD卡上,因爲用戶可以下載的視頻的大小和數量離線drm。使用exoplayer進行離線安全內容

+0

嗨薩瓦什訪問一個示例應用程序,具有u有什麼解決辦法嗎? –

+0

@PrabhuM不適用於離線DRM,但我寫了一個答案。也許它也適用於你。 –

回答

2

隨着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> { 

您可以從ExoPlayer repo

訪問最新的代碼對於更多的靈感,你可以看看這個封閉issue

我創建了DRM content.You的離線播放可以從here

+0

你能提供一個更詳細信息的例子嗎? –

+1

@HamedGh我確實更新了我的答案。你可以看看。 – theJango

+0

正如google所說:在Android 4.4(API等級19)及更高版本中,ExoPlayer支持數字版權管理(DRM)保護回放。但是你將minSdkVersion設置爲16,爲什麼?它適用於API 16嗎? –

1

現在我決定使用Facebook conceal library。快速簡單的加密方式。我下載我的內容,並通過它隱藏庫,當我想播放視頻使用字節流和閱讀視頻部分。

但如果你找到更好更簡單的方式讓我知道。

你可以找到一個例子here

+0

你提供的例子是圖像,如何實現它的視頻,用戶想要隨時改變進度 –

+0

@HamedGh你可以將一個視頻分成幾個15秒的視頻。然後對其進行加密和解密。我知道這不是一個好的解決方案。所以你可以使用drm並請參閱接受的答案。 –

2

可以使用Exoplayer進行離線觀看。但你將不得不從DrmSessionManager延長你自己的班級。這裏的關鍵是在mediaDrm.getKeyRequest中使用MediaDrm.KEY_TYPE_OFFLINE作爲keyType。

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(byte[],byte[])