Как использовать фреймворк android.drm
Я занимаюсь разработкой приложения для Android на основе DRM. Приложение предназначено для шифрования (аудио, видео) файлов после загрузки и получения контроля доступа к файлам (аудио, видео), предотвращая копирование, вставку и истечение срока действия документов (аудио, видео), чтобы их больше нельзя было просматривать. для этого я использую android.drm
Я много искал, но ничего не получил
Поэтому, пожалуйста, поделитесь примером кода, который объясняет, как использовать API-интерфейс DRM.
Refered:
https://www.widevine.com/wv_drm.html
https://source.android.com/devices/drm
https://developer.android.com/reference/android/drm/package-summary.html
1 ответ
В большинстве сценариев DRM устройство Android будет клиентом с точки зрения DRM, а не сервером.
Другими словами, Android-устройство обычно будет устройством воспроизведения, которое должно запрашивать у системы DRM ключ для просмотра контента.
В теории нет причин, по которым устройства Android не могли бы выступать в роли упаковщика или зашифровывать контент, но это не является нормой, поэтому не то, как будет создаваться среда или пример DRM в Android.
Если вы хотите узнать, как воспроизводить контент, защищенный DRM, на устройстве, тогда демоверсия Exoplayer имеет хорошие рабочие примеры.
Взгляните на DefaultDRMSessionManager в качестве отправной точки: https://github.com/google/ExoPlayer/blob/d979469659861f7fe1d39d153b90bdff1ab479cc/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java
Обновить
Пример рабочего процесса для защищенного контента:
- Содержимое попадает на сервер (то есть загружается или размещается на потоковом сервере каким-либо образом)
- Контент регистрируется на сервере лицензий DRM и запрашивается ключ шифрования
- Когда пользователь запрашивает видеофайл, файл упаковывается в соответствующий потоковый протокол для устройства (обычно MPEG DASH для Android), и видеофайл зашифровывается с помощью ключа, полученного от сервера DRM.
- Устройство, которое запросило поток (т. Е. Устройство Android в вашем случае) получает поток и определяет, что оно зашифровано. Он запрашивает лицензионный ключ с сервера лицензий. На устройстве Android, использующем Widevine DRM, в конфигурации проигрывателя должен быть указан URL-адрес сервера лицензий.
- Сервер DRM безопасно отправляет ключ на устройство Android, которое воспроизводит контент. Ни ключ, ни незашифрованный контент не видны приложению или даже ОС, так как он воспроизводится с использованием системы DRM и защищенного пути мультимедиа устройств.
Потоковые серверы и DRM-серверы, как правило, являются довольно сложными системами, и вряд ли вы захотите создать их самостоятельно.
Для потокового сервера есть примеры с открытым исходным кодом, которые вы можете посмотреть и использовать - например: https://gstreamer.freedesktop.org/
Если вы хотите поэкспериментировать с DRM, то можете использовать DRM clearkey с MPEG DASH, который будет поддерживать Exoplayer. Он не так безопасен, как обычные схемы DRM, но он бесплатный, поэтому стоит проверить, соответствует ли он вашим потребностям.
Некоторые службы кодирования позволяют вам экспериментировать с настройкой clearkey - см. Пример здесь: https://bitmovin.com/tutorials/mpeg-cenc-clearkey-drm-encryption/