| drmserver
Управление цифровыми правами Тип файла: служба Комментарии
DRM - Digital rights management
Принцип работы всех DRM прост:
видео шифруется на сервере;
пользователь с помощью браузера (или другого приложения) скачивает видео;
браузер передаёт видео специальному компоненту для расшифровки;
контент защищается от просмотра/модификации пользователем;
система запрашивает у специального сервера лицензию на видеоконтент;
сервер лицензии проверяет пользователя и принимает решение о выдаче ему лицензии, срок её действия и другие параметры;
компонент получает ключ для расшифровывания видео;
в случае успешной идентификации — расшифровывает его;
пользователь получает ограниченный доступ к видео.
Таким образом, пользователь ограничен в полноценном доступе к видео, потому что основные права на него принадлежат вам.
Лицензия может ограничивать доступ к видео по времени и длительности просмотра (например, в течение месяца, но не более 10 часов), а также дает возможность просмотра на аналоговых/цифровых устройствах.
Минимальные версии Android, необходимые для различных поддерживаемых схем DRM, а также форматы потоковой передачи, для которых они поддерживаются, описаны в следующей таблице:
Схема DRM Номер версии Android Уровень Android API Поддерживаемые форматы
Widevine "cenc" 4.4 19 DASH, HLS (только FMP4)
Widevine "cbcs" 7.1 25 DASH, HLS (только FMP4)
ClearKey «cenc» 5.0 21 тире
PlayReady SL2000 «cenc» Android TV Android TV DASH, SmoothStreaming, HLS (только FMP4)
Чтобы воспроизвести контент, защищенный DRM, с помощью ExoPlayer, при создании элемента мультимедиа необходимо указать UUID системы DRM и URI сервера лицензий. Затем плеер будет использовать эти свойства для создания реализации DrmSessionManager по умолчанию, называемой DefaultDrmSessionManager, которая подходит для большинства случаев использования. В некоторых случаях использования могут потребоваться дополнительные свойства DRM, как описано в следующих разделах.
Ключевое вращение
Чтобы воспроизводить потоки с вращающимися ключами, передайте значение true в MediaItem.DrmConfiguration.Builder.setMultiSession при создании элемента мультимедиа.
Многоключевой контент
Содержимое с несколькими ключами состоит из нескольких потоков, причем некоторые потоки используют разные ключи, чем другие. Содержимое с несколькими ключами можно воспроизводить одним из двух способов, в зависимости от настройки сервера лицензий.
Случай 1. Сервер лицензий отвечает всеми ключами для контента.
В этом случае сервер лицензий настроен так, что при получении запроса на один ключ он отвечает всеми ключами для контента. Этот случай обрабатывается ExoPlayer без необходимости какой-либо специальной настройки. Адаптация между потоками (например, видео SD и HD) происходит плавно, даже если они используют разные клавиши.
По возможности мы рекомендуем настроить сервер лицензий на такое поведение. Это наиболее эффективный и надежный способ поддержки воспроизведения многоключевого контента, поскольку он не требует от клиента выполнения нескольких запросов на лицензию для доступа к различным потокам.
Случай 2. Сервер лицензий отвечает только запрошенным ключом.
В этом случае сервер лицензий настроен на ответ только с ключом, указанным в запросе. Содержимое с несколькими ключами можно воспроизводить с помощью этой конфигурации сервера лицензий, передав значение true в MediaItem.DrmConfiguration.Builder.setMultiSession при создании элемента мультимедиа.
Мы не рекомендуем настраивать сервер лицензий на такое поведение.
Для воспроизведения контента с несколькими ключами требуются дополнительные запросы лицензии, что менее эффективно и надежно, чем альтернатива, описанная выше.
Автономные ключи
Автономный набор ключей можно загрузить, передав идентификатор набора ключей в MediaItem.DrmConfiguration.Builder.setKeySetId при создании элемента мультимедиа.
Это позволяет воспроизводить с помощью ключей, сохраненных в автономном наборе ключей с указанным идентификатором.
Известная проблема № 3872: для каждого воспроизведения можно указать только один набор автономных ключей. В результате автономное воспроизведение контента с несколькими ключами в настоящее время поддерживается только в том случае, если сервер лицензий настроен, как описано в случае 1 выше.
Сеансы DRM для четкого контента
Использование заполнителя DrmSessions позволяет ExoPlayer использовать для чистого контента те же декодеры, которые используются при воспроизведении зашифрованного контента. Если носитель содержит как открытые, так и зашифрованные разделы, вы можете использовать заполнитель DrmSessions, чтобы избежать повторного создания декодеров при переходе между открытыми и зашифрованными разделами. Использование заполнителя DrmSessions для аудио- и видеодорожек можно включить, передав значение true в MediaItem.DrmConfiguration.Builder.forceSessionsForAudioAndVideoTracks при создании элемента мультимедиа.
Использование специального DrmSessionManager
Если приложение хочет настроить DrmSessionManager, используемый для воспроизведения, оно может реализовать DrmSessionManagerProvider и передать его в MediaSource.Factory, который используется при создании проигрывателя. Поставщик может выбрать, создавать ли каждый раз новый экземпляр менеджера или нет. Чтобы всегда использовать один и тот же экземпляр:
Улучшение производительности воспроизведения
Если вы испытываете заикание видео при воспроизведении контента, защищенного DRM, на устройстве под управлением любой версии Android от Android 6.0 (уровень API 23) до Android 11 (уровень API 30) включительно), вы можете попробовать включить асинхронную буферную очередь.
|
|