Widevine content decryption module android

Потоковая передача Widevine для Android в автономном режиме (Службы мультимедиа версии 3)

Ищете документацию по Службам мультимедиа версии 2?

Помимо защиты содержимого для автономной потоковой передачи подписка содержимого мультимедиа и службы аренды предоставляют содержимое, которое можно загрузить. Это подходит при отсутствии подключения к Интернету. Возможно, потребуется загрузить содержимое на ваш телефон или планшет для воспроизведения в режиме «в самолете», когда во время полета нет подключения к сети. Дополнительные сценарии, в которых может потребоваться загрузить содержимое:

  • Некоторые поставщики содержимого могут запрещать доставку лицензии DRM за пределы страны или региона. Если пользователь хочет смотреть содержимое во время поездок за границу, необходимо автономное скачивание.
  • В некоторых странах и регионах доступность Интернета и пропускная способность ограничены. Пользователи могут загрузить содержимое, чтобы иметь возможность смотреть его в достаточно высоком разрешении для удобного просмотра.

Widevine недоступен в регионе GovCloud.

В этой статье обсуждается реализация воспроизведения в автономном режиме содержимого DASH, защищенного Widevine на устройствах Android. Автономный DRM позволяет создать подписку, модели аренды и приобретения для содержимого, чтобы позволить клиентам ваших служб легко загружать содержимое без подключения к Интернету.

Вы можете создать приложения для проигрывателя Android такими тремя способами:

  • Создание проигрывателя с использованием API Java пакета SDK ExoPlayer.
  • Создание проигрывателя с использованием привязки Xamarin пакета SDK ExoPlayer.
  • Создание проигрывателя с использованием расширения зашифрованных носителей (EME) и расширения источника мультимедиа (MSE) в браузере Chrome для мобильных устройств версии 62 или более поздней.

В статье также содержатся ответы на некоторые распространенные вопросы, связанные с автономной потоковой передачей содержимого, защищенного Widevine.

В автономной системе DRM оплачивается только один запрос на лицензию при скачивании содержимого. Плата за неудачные попытки не взимается.

Предварительные требования

Перед реализацией автономного DRM для Widevine на устройствах Android вам потребуется:

Ознакомиться с концепциями, реализованными для защиты интернет-содержимого с помощью Widevine DRM. Это подробно рассматривается в следующих документах и примерах:

Вам потребуется изменить код в Шифровать с помощью DRM, используя .NET, чтобы добавить конфигурации Widevine.

Ознакомиться с пакетом SDK ExoPlayer Google для Android, пакетом SDK видеопроигрывателя с открытым исходным кодом, поддерживающего автономное воспроизведение Widevine DRM.

Настройка защиты содержимого в Службах мультимедиа Azure

В методе GetOrCreateContentKeyPolicyAsync выполните следующие действия:

Укажите, как выполняется авторизация в службе доставки лицензий доставки ключей содержимого.

Настройте шаблон лицензии Widevine.

Включение автономного режима

Чтобы включить автономный режим лицензий Widevine, необходимо настроить шаблон лицензии Widevine. В объекте policy_overrides для свойства can_persist задайте значение true (по умолчанию false), как показано в ConfigureWidevineLicenseTempate.

Настройка проигрывателя Android для воспроизведения в автономном режиме

Для разработки приложений со встроенным проигрывателем для устройств Android проще всего использовать пакет SDK Google ExoPlayer, пакет SDK видеопроигрывателя с открытым кодом. ExoPlayer поддерживает функции, не поддерживаемые встроенным API MediaPlayer для Android, в том числе протоколы доставки MPEG-DASH и Microsoft Smooth Streaming.

Читайте также:  Bundle android что это такое

ExoPlayer версии 2.6 и более поздних версий включает в себя множество классов, поддерживающих воспроизведение Widevine DRM в автономном режиме. В частности класс OfflineLicenseHelper предоставляет служебные функции, упрощающие загрузку, обновление и выдачу автономных лицензий с помощью DefaultDrmSessionManager. Классы, предоставленные в папке library/core/src/main/java/com/google/android/exoplayer2/offline/ пакета SDK, поддерживают загрузку видеосодержимого в автономном режиме.

Указанный ниже перечень классов упрощает автономный режим в пакете SDK ExoPlayer для Android.

  • library/core/src/main/java/com/google/android/exoplayer2/drm/OfflineLicenseHelper.java;
  • library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSession.java;
  • library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java;
  • library/core/src/main/java/com/google/android/exoplayer2/drm/DrmSession.java;
  • library/core/src/main/java/com/google/android/exoplayer2/drm/ErrorStateDrmSession.java;
  • library/core/src/main/java/com/google/android/exoplayer2/drm/ExoMediaDrm.java;
  • library/core/src/main/java/com/google/android/exoplayer2/offline/SegmentDownloader.java;
  • library/core/src/main/java/com/google/android/exoplayer2/offline/DownloaderConstructorHelper.java;
  • library/core/src/main/java/com/google/android/exoplayer2/offline/Downloader.java;
  • library/dash/src/main/java/com/google/android/exoplayer2/source/dash/offline/DashDownloader.java.

Во время разработки приложения разработчикам следует использовать руководство разработчика ExoPlayer и соответствующий блог разработчиков. Сейчас компания Google еще не выпустила полностью документированный пример реализации или пример кода для приложения ExoPlayer, поддерживающего автономный режим Widevine, поэтому информация ограничена блогом и руководством для разработчиков.

Работа со старыми устройствами Android

Для некоторых старых устройств Android необходимо задать значения для следующих свойств policy_overrides (определенных в шаблоне лицензии Widevine): rental_duration_seconds, playback_duration_seconds и license_duration_seconds. Кроме того, для них можно задать значение «ноль», что будет означать неограниченную длительность.

Значения необходимо задать, чтобы избежать ошибки переполнения целочисленного значения. Дополнительные сведения об этой проблеме приведены на страницах https://github.com/google/ExoPlayer/issues/3150 и https://github.com/google/ExoPlayer/issues/3112.
Если не задать значения явно, для свойств PlaybackDurationRemaining и LicenseDurationRemaining будут назначены очень большие значения (например, 9223372036854775807, которое является максимально положительным значением для 64-разрядного целого числа). В результате этого срок действия лицензии Widevine истечет и расшифровка не произойдет.

Эта проблема не возникает в Android 5.0 Lollipop или более поздней версии, так как Android 5.0 является первой версией Android, которая полностью поддерживает ARMv8 (Advanced RISC Machine) и 64-разрядные платформы, тогда как Android 4.4 KitKat изначально поддерживает ARMv7 и 32-разрядные платформы, как и другие ранние версии Android.

Создание приложения для воспроизведения Android с помощью Xamarin

Привязки Xamarin для ExoPlayer доступны по следующим ссылкам:

Ознакомьтесь со следующим обсуждением: Привязка Xamarin.

Приложения проигрывателя Chrome для Android

Начиная с выпуска Chrome для Android версии 62 в EME поддерживается постоянная лицензия. Widevine L1 теперь поддерживается в браузере Chrome для Android. Это позволяет создавать приложения для автономного воспроизведения в браузере Chrome, если у пользователей эта версия Chrome (или более поздняя).

Кроме того, компания Google выпустила Progressive Web App (PWA) и создала открытый код для него:

  • Исходный код
  • Версия, размещенная в Google (работает только в Chrome версии 62 и более поздних версий на устройствах Android).

Если обновить браузер Chrome версии 62 (или более поздней) для мобильных устройств на телефоне Android и протестировать размещенный выше пример приложения, будет работать как потоковая передача в оперативном режиме, так и воспроизведение в автономном.

Приведенное выше приложение PWA с открытым исходным кодом создается на языке Node.js. Если вы хотите разместить собственную версию на сервере Ubuntu, необходимо учитывать следующие распространенные обнаруженные проблемы, которые могут помешать воспроизведению.

  1. Проблема CORS: пример видео в примере приложения размещен в https://storage.googleapis.com/biograf-video-files/videos/. Компания Google настроила CORS для всех своих тестовых примеров, размещенных в контейнере Google Cloud Storage. Они обслуживаются с заголовками CORS, где явно указана запись CORS https://biograf-155113.appspot.com (домен, в котором компания Google разместила свой пример), препятствующая доступу с других сайтов. При попытке доступа появится сообщение об ошибке HTTP: Failed to load https://storage.googleapis.com/biograf-video-files/videos/poly-sizzle-2015/mp4/dash.mpd: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘https:\//13.85.80.81:8080’ is therefore not allowed access. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.
  2. Проблема с сертификатом: начиная с версии 58 Chrome для EME для Widevine требуется протокол HTTPS. Таким образом, необходимо разместить пример приложения по протоколу HTTPS с сертификатом X509. Обычный тестовый сертификат не подходит из-за следующих требований. Вам необходимо получить сертификат, который удовлетворяет следующим минимальным требованиям:
    • Для Chrome и Firefox требуется, чтобы в сертификате был параметр «Альтернативное имя субъекта» (SAN).
    • Сертификат должен быть подписан доверенным центром сертификации, самозаверяющий сертификат разработки не подходит.
    • Сертификат должен иметь имя CN, соответствующее DNS-имени веб-сервера или шлюза.
Читайте также:  Не могу форматировать флешку андроид

Дополнительные сведения

Widevine — это служба, которая предоставляется компанией Google Inc. и подпадает под условия предоставления услуг и политику конфиденциальности Google Inc.

Источник

Fix: Widevine Content Decryption Module

Widevine Content Decryption Module is a decryption module built into Chrome browsers that allow Chrome to play DRM-protected HTML5 video and audio as you’d find on Netflix.

Many users using Chrome or Netflix get an error where the Widevine Content Decryption Module (WidevineCdm) is mentioned. This is a plugin present in Google Chrome present in it the first time you install the software. It is nothing you have to install manually.

Using this plugin, you are able to watch/stream DRM-protected HTML5 audio and video in Chrome such as Netflix. If your browser finds this outdated or can’t locate it, you will be facing this problem.

First of all, we will try updating the plugin and check if the problem gets solved. If you get an error “Update Failed”, you can try resorting to other solutions.

Solution 1: Updating the Widevine Content Decryption Module

We use Chrome to itself to update the plugin. Follow the steps listed below. Also, make sure to launch Chrome in administrative mode. Right-click on Chrome and select “Run as administrator”.

  1. Once Chrome is opened, type the following address in the address bar and press enter.
  1. Navigate to the end of the page until you find an entry named “Widevine Content Decryption Module”. Click the button “Check for update” present underneath.

  1. Now refresh your page. If you see the status “Up-to-date” underneath the plugin, it means that the plugin was updated successfully.
  2. Restart your computer and check if the problem is solved.

Solution 2: Check Antivirus Software

Many users observed that it was their security software that was causing the problem. The security software on your computer has complete privileges and can stop your computer from updating the plugin. You can try disabling these antivirus software/firewalls and then try updating again as explained in method 1. Just disable them temporarily and after the plugin is successfully updated, you can turn it back on.

Solution 3: Changing Permission of WidevineCdm

You can also try changing the permission of the folder present on your computer. If you don’t have sufficient privileges, Windows UAC will not allow you to update the plugin. We will head over to the plugin folder, make sure that your account has full control and then try updating again using method 1.

  1. Press Windows + R to launch the Run application. Type “%userprofile%/appdata/local” in the dialogue box and press Enter. You will be redirected to the required folder.
  2. Navigate to the following file path:
Читайте также:  Андроид приставка для телевизора ксиоми обзор

  1. Locate “WidevineCdm” from the list of folders, right-click it and select “Properties”.

  1. Navigate to the Security tab and make sure that your login user has full access to the folder. This can be seen if there is a ‘tick’ present in front of “Full control” in the properties.

If you don’t have full control, follow the steps mentioned below.

  1. Select your profile and click “Edit”.
  2. Now uncheck the ‘tick’ present underneath the column of “Deny” and make sure that your account has full access. Press Apply to save changes and exit.

  1. Restart your computer and try updating the plugin again.

Solution 4: Deleting the plugin folder and then updating it

If all the above solutions don’t work, we can try deleting the plugin folder and reinstall it using Chrome. Do note that this method might require administrative privileges so make sure that you are logged in as an administrator.

  1. Press Windows + R to launch the Run application. Type “%userprofile%/appdata/local” in the dialogue box and press Enter. You will be redirected to the required folder.
  2. Navigate to the following file path:
  1. Locate “WidevineCdm” from the list of folders, right-click it and select “Delete”.

  1. Press Windows + S, type “task manager” in the dialogue box, right-click on the application and select “Run as administrator”.
  2. End all Chrome tasks by right-clicking on Chrome entries and select “End task”.

  1. Now head over to method one and update the plugin using the steps mentioned. The module should update correctly and your Chrome might restart.
  2. Restart your computer and try playing any video. Hopefully, the problem will be solved.

Solution 5: Reinstalling Chrome

If all the above methods don’t work, you can try reinstalling Chrome. After we uninstall Chrome, all its modules will be deleted. This might solve the problem if some components we corrupt or not working as expected.

  1. Press Windows + R to launch the Run application. Type “appwiz.cpl” in the dialogue box and press Enter. This should launch a window where all the applications installed on your computer should be listed.
  2. Right-click on “Google Chrome” and select “Uninstall”.

  1. After uninstalling the application, head over to the official Google website and download Chrome to an accessible location.
  2. After downloading Chrome, run the executable to install it. Now check if installing the new browser helped solve your problem.

If none of the solutions shown above have helped you at all, we suggest you use another browser such as Mozilla Firefox or you can use any other browser that supports Widevine. Widevine is trusted by Mozilla Firefox thus recommended here.

Источник

Оцените статью