2015-10-18 3 views
2

Могу ли я загрузить видео с защитой DRM на SD-карту и воспроизвести ее только с моим приложением, использующим Exoplayer или каким-то образом, чтобы это видео было безопасно сохранено. Я не хочу, чтобы пользователь мог скопировать мое видео на другое устройство, и я хочу сохранить его на SD-карте из-за размеров и количества видео, которые пользователь может загрузитьоффлайн drm. используя exoplayer для автономного защищенного контента

+0

Привета Siavash, У у меня какое-либо решение? –

+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 поддерживает воспроизведение с защитой Digital Rights Managment (DRM). но вы установите minSdkVersion на 16, почему? это работает для api 16? –

1

На данный момент я решил использовать Facebook conceal library. быстрый и простой способ шифрования. Я загружаю свой контент и передаю его, чтобы скрывать библиотеку, и когда я хочу воспроизвести видео, используйте поток байтов для и просмотрите секцию видео.

, но если вы найдете лучший и простой способ, дайте мне знать.

вы можете найти пример here

+0

Пример, который вы предоставили для изображения, как его реализовать для видео, которое пользователь хочет изменить ход в любое время. –

+0

@HamedGh вы можете разбить одно видео на несколько видео за 15 секунд. а затем шифровать и расшифровывать его. Я знаю, что это нехорошее решение. поэтому вы можете использовать drm и pls, чтобы увидеть принятый ответ. –

2

Вы можете использовать Exoplayer для автономного просмотра. Но вам придется расширить свой класс от DrmSessionManager. Ключ здесь заключается в использовании 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(byte[],byte[])