2 года пытаюсь найти способ полного обхода Widevine DRM, чтобы можно было скачивать контент с Netflix, Amazon Prime, Hulu, HBO Max и пр. не просто в Full HD, как может сделать сейчас практически каждый, а в 4K HDR, HDR10+, Dolby Vision + Atmos. Честно говоря, перепробовал все публичные способы: от банальных расширений, умеющих вытаскивать HLS-стримы, до продвинутых скриптов.
Некоторые программы умеют скачивать только часть контента с онлайн-кинотеатров, другие не дают даже докоснуться до видео из-за старой версии браузера, используемого для рипа… Подводных камней много, и мне надоело с ними бороться, поэтому нужно решение, которое раз и навсегда решит мою проблему.
Прочитаю все сообщения на Хабре и в ЛС в Telegram.
- Вопрос задан 15 апр.
- 222 просмотра
3 комментария
Сложный 3 комментария
Источник: qna.habr.com
Как подключить DRM? Документация по интеграции drmnow! multi-drm
В состав нашего drmnow! multi-drm решения входят следующие DRM-системы:
Опять HDCP и DRM Kinopoisk HD
Мы рекомендуем использовать Shaka Packager — утилиту для запаковывания и шифрования аудио/видео-контента.
Для начала работы Вам понадобятся [project] и [token].
Для их получения создайте drmnow! multi-drm проект в личном кабинете cdnnow!
- [project] — название вашего проекта в личном кабинете cdnnow! Используется при создании защищенного контента и при получении лицензий для проигрывания контента;
- [token] — секретный ключ доступа к API drmnow! multi-drm. Никому не сообщайте его.
2. Подготовка видео
2.1. Общие сведения
Shaka packager поддерживает видео в различных форматах.
Для VOD мы рекомендуем использовать формат mp4.
Для Live есть возможность использовать два варианта:
- В случае передачи сигнала через интернет необходимо использовать протокол RTMP;
- В случае передачи сигнала через прямое соединение необходимо использовать протокол UDP.
Защищенное drmnow! multi-drm видео можно запаковать в один из следующих форматов:
- mp4 file, MPEG-4;
- DASH manifest, Dynamic Adaptive Streaming over HTTP;
- HLS playlist, HTTP Live Streaming (кроме Wiseplay и Playready);
- MSS playlist, Microsoft Smooth Streaming (Playready).
Во время конвертации видео разбивается на фрагменты, каждый из которых шифруется ключом, полученным с сервера ключей.
Информация о фрагментах записывается в плейлист, который передается плееру для воспроизведения.
Ниже приведены примеры работы drmnow! multi-drm для разных DRM-систем.
Здесь и далее подразумевается использование ОС Linux.
2.2. Shaka Packager + Widevine, Playready, Wiseplay + DASH Manifest
Используйте следующий bash-скрипт для конвертации mp4 в DASH.
#!/usr/bin/env bash # Проект из личного кабинета cdnnow! project=»» # Ключ доступа из личного кабинета cdnnow! token=»» # Идентификатор контента, уникальное для каждого вашего видео файла имя contentId=»» # Путь до исходного видео файла videoSource=»path/to/video.mp4″ # Путь до директории с результатами outputFolder=»path/to/output/folder» # Shaka Packager ./packager in=»$videoSource,stream=0,init_segment=$outputFolder/v0_init.m4v,segment_template=$outputFolder/v0_$Number$.m4v» in=»$videoSource,stream=1,init_segment=$outputFolder/a0_init.m4a,segment_template=$outputFolder/a0_$Number$.m4a» —generate_static_live_mpd —segment_duration 6 —fragment_duration 6 —default_language ru —mpd_output «$outputFolder/index.mpd» —enable_widevine_encryption —protection_systems Widevine,PlayReady —key_server_url «https://$project.nowdrm.co/v2/keyservice/contentkey/get?token=$token» —content_id «$contentId»
Советы
—protection_systems Widevine,PlayReady
—protection_systems Widevine,PlayReady,Wiseplay
./mp4dump path/to/output/folder/v0_init.mp4
Утилита (вывод только секций [pssh] ):
. [pssh] size=12+76 system_id = [ed ef 8b a9 79 d6 4a ce a3 c8 27 dc d5 1d 21 ed] data_size = 56 [pssh] size=12+538 system_id = [9a 04 f0 79 98 40 42 86 ab 92 e6 5b e0 88 5f 95] data_size = 518 [pssh] size=12+235 system_id = [3d 5e 6d 35 9b 9a 41 e8 b8 43 dd 3c 6e 72 c4 2c] data_size = 215
Присутствуют идентификаторы всех трех DRM-систем, то есть запаковка прошла успешно.
2.3. Shaka Packager + Fairplay + HLS playlist
Используйте следующий bash-скрипт для конвертации mp4 в HLS.
#!/usr/bin/env bash # Проект из личного кабинета cdnnow! project=»» # Ключ доступа из личного кабинета cdnnow! token=»» # Идентификатор контента, уникальное для каждого вашего видео файла имя contentId=»» # Идентификатор ключа шифрования, base64 keyIdBase64=»» # Ключ шифрования, base64 keyBase64=»» # Начальный вектор ключа шифрования, base64 ivBase64=»» # Путь до исходного видео файла videoSource=»path/to/video.mp4″ # Путь до директории с результатами outputFolder=»path/to/output/folder» # Shaka Packager ./packager in=»$videoSource,stream=0,init_segment=$outputFolder/v0_init.m4v,segment_template=$outputFolder/v0_$Number$.m4v» in=»$videoSource,stream=1,init_segment=$outputFolder/v1_init.m4v,segment_template=$outputFolder/v1_$Number$.m4v» in=»$videoSource,stream=2,init_segment=$outputFolder/v2_init.m4v,segment_template=$outputFolder/v2_$Number$.m4v» in=»$videoSource,stream=3,init_segment=$outputFolder/v3_init.m4v,segment_template=$outputFolder/v3_$Number$.m4v» in=»$videoSource,stream=4,init_segment=$outputFolder/v4_init.m4v,segment_template=$outputFolder/v4_$Number$.m4v» in=»$videoSource,stream=5,language=ru,init_segment=$outputFolder/a5_init.m4a,segment_template=$outputFolder/a5_$Number$.m4a» —segment_duration 6 —fragment_duration 6 —default_language ru —hls_master_playlist_output «$outputFolder/master.m3u8» —hls_playlist_type VOD —protection_scheme cbcs —enable_raw_key_encryption —protection_systems FairPlay —keys label=:key_id=$keyIdBase64:key=$keyBase64 —iv $ivBase64 —hls_key_uri skd://$contentId
Советы
Для получения значений переменных keyIdBase64, keyBase64, ivBase64 по contentId и keyId можно использовать SPEKE API V1 по адресу https://[project].nowdrm.co/drm/speke?token=[token].
2.4. Shaka Packager + Playready + MSS playlist
Используйте следующий bash-скрипт для конвертации mp4 в MSS.
#!/usr/bin/env bash # Проект из личного кабинета cdnnow! project=»» # Ключ доступа из личного кабинета cdnnow! token=»» # Идентификатор контента, уникальное для каждого вашего видео файла имя contentId=»» # Путь до исходного видео файла videoSource=»path/to/video.mp4″ # Путь до директории с результатами outputFolder=»path/to/output/folder» # Shaka Packager With MSS support ./packager-mss in=»$videoSource,stream=0,init_segment=$outputFolder/v0_init.m4v,segment_template=$outputFolder/v0_$Number$.m4v» in=»$videoSource,stream=1,init_segment=$outputFolder/v1_init.m4v,segment_template=$outputFolder/v1_$Number$.m4v» in=»$videoSource,stream=2,init_segment=$outputFolder/v2_init.m4v,segment_template=$outputFolder/v2_$Number$.m4v» in=»$videoSource,stream=3,init_segment=$outputFolder/v3_init.m4v,segment_template=$outputFolder/v3_$Number$.m4v» in=»$videoSource,stream=4,init_segment=$outputFolder/v4_init.m4v,segment_template=$outputFolder/v4_$Number$.m4v» in=»$videoSource,stream=5,language=ru,init_segment=$outputFolder/a5_init.m4a,segment_template=$outputFolder/a5_$Number$.m4a» —segment_duration 6 —fragment_duration 6 —dvr_window_length 36 —default_language ru —duration 0 —segment_sap_aligned —fragment_sap_aligned —mss_client_manifest_output $outputFolder/manifest.ismc —enable_widevine_encryption —clear_lead 0 —protection_systems PlayReady —key_server_url «https://$project.nowdrm.co/v2/keyservice/contentkey/get?token=$token» —content_id «$contentId» —license_acquisition_server_url https://[project].nowdrm.co/v2/playready
2.5. Flussonic
Интеграция с flussonic происходит по протоколу speke (cpix).
Пример конфигурации flussonic:
stream stream_name < input . meta drm_id «stream_name»; protocols dash hls mss; drm cpix keyserver=https://[project].nowdrm.co/drm/speke?token=[token]; >
Для воспроизведения зашифрованного контента используйте следующие сервера лицензий:
- Fairplay: https://[project].nowdrm.co/fairplay
- Playready: https://[project].nowdrm.co/playready
- Widevine: https://[project].nowdrm.co/widevine
- Wiseplay: https://[project].nowdrm.co/wiseplay
3. Воспроизведение зашифрованного DRM видео
3.1. Системные требования
Минимальные системные требования для настольных устройств:
- Windows 7 / Ubuntu + браузеры Chrome, Firefox (Widevine);
- Mac OS 10.0 + браузеры Chrome, Firefox (Widevine);
- Mac OS 10.0 + браузер Safari (Fairplay);
- Windows 7 + браузеры Internet Explorer, Edge (Playready).
Минимальные системные требования для мобильных устройств:
3.2. Адреса серверов лицензий
- Fairplay: https://[project].nowdrm.co/v2/fairplay
- Playready: https://[project].nowdrm.co/v2/playready
- Widevine: https://[project].nowdrm.co/v2/widevine
- Wiseplay: https://[project].nowdrm.co/v2/wiseplay
3.3. Тестирование воспроизведения
Для тестирования можно воспользоваться нашим плеером по адресу https://playernow.ru.
Перед проигрыванием убедитесь, что ваша операционная система и браузер поддерживают соответствующий тип DRM (список совместимых с вашим браузером и ОС DRM-систем отображается на странице плеера в конце страницы).
3.3.1. Widevine + Desktop
- В браузере откройте https://playernow.ru.
- Нажмите «Выберите источник», в появившемся меню выберите пункт «Конструктор».
- В поле “Widevine License” вставьте адрес сервера лицензий Widevine (например https://[project].nowdrm.co/widevine)
- В поле “DASH” вставьте URL к mpd-файлу с запакованным видео (например https://myhost.tld/some/folder/index.mpd). HTTPS-доступ к файлу обязателен.
- Нажмите «Запустить тестирование», после чего в окне плеера нажмите кнопку воспроизведения.
Несколько секунд в начале видео не кодируется DRM. Если видео было запаковано правильно, оно доиграет до конца без искажений.
В мобильных браузерах тестирование может быть проведено аналогично.
3.3.2. Playready + Desktop
- В браузере откройте https://playernow.ru.
- Нажмите «Выберите источник», в появившемся меню выберите пункт «Конструктор».
- В поле “Playready License” вставьте адрес сервера лицензий Playready (например https://[project].nowdrm.co/playready)
- В поле “DASH” вставьте URL к mpd-файлу с запакованным видео (например https://myhost.tld/some/folder/index.mpd). HTTPS-доступ к файлу обязателен.
- Нажмите «Запустить тестирование», после чего в окне плеера нажмите кнопку воспроизведения.
Несколько секунд в начале видео не кодируется DRM. Если видео было запаковано правильно, оно доиграет до конца без искажений.
3.3.3. Fairplay + Desktop
- В браузере откройте https://playernow.ru/.
- Нажмите «Выберите источник», в появившемся меню выберите пункт «Конструктор».
- В поле “Fairplay License” вставьте адрес сервера лицензий Fairplay (например https://[project].nowdrm.co/fairplay)
- В поле “HLS” вставьте URL к m3u8-файлу с запакованным видео (например https://myhost.tld/some/folder/master.m3u8). HTTPS-доступ к файлу обязателен.
- В поле «Сертификат» вставьте URL к *.der-сертификату, необходимому для запроса к серверу лицензий. HTTPS-доступ к файлу обязателен.
Для тестирования Вы можете воспользоваться нашим сертификатом https://playernow.ru/cdnnow.der. - Нажмите «Запустить тестирование», после чего в окне плеера нажмите кнопку воспроизведения.
Несколько секунд в начале видео не кодируется DRM. Если видео было запаковано правильно, оно доиграет до конца без искажений.
3.3.4. Wiseplay + Mobile
Вам понадобится скомпилировать и запустить на устройстве Huawei модифицированный Exoplayer https://github.com/HMS-Core/hms-wiseplay-demo-exoplayer.
При этом в файле “demos/main/src/main/assets/media.exolist.json” необходимо добавить следующий блок информации в секцию “samples”:
Несколько секунд в начале видео не кодируется DRM. Если видео было запаковано правильно, оно доиграет до конца без искажений.
4. Благодарности
Спасибо что дочитали нашу краткую инструкцию по интеграции drmnow! multi-drm!
Если у Вас остались вопросы смело обращайтесь к нам. Мы обязательно поможем.
Оставьте заявку
если вас заинтересовал наш сервис или есть вопросы
- Главная
- Как работает DRM
- Apple FairPlay
- Microsoft PlayReady
- Widevine Modular
- WisePlay Huawei
- DRM packager
- Документация по интеграции drmnow! multi-drm
- Цены
- Контакты
- English version
Источник: drmnow.ru
Магнитола Teyes и DRM-защита (Widevine CDN) или как смотреть зашифрованный контент
В рамках расширения мультимедийного функционала решил установить WINK на магнитолу, ТВ от Ростелекома (я их абонент). Но столкнулся с проблемой: показывало первых каналов 10, при попытке просмотра других каналов, а их у меня 270 в подписке, выдавало сообщение, что моё устройство не может воспроизводить зашифрованный контент.
Начал копать тему, оказалось, что в некоторый контент вшивают так называемую DRM-защиту, это защита от пиратства, копирования. И андроид устройство которое не имеет специального сертификата от Google (Widevine CDN) не сможет это воспроизвести. Скачать его нигде у меня не получилось, этот сертификат должен быть установлен на уровне прошивки.
Это касается не только Wink, но и Билайн ТВ и подозреваю всех официальных приложений телевидения, а может и не официальных тоже. Кстати Root тоже препятствие для просмотра защищенного контента. Можно посмотреть его наличие прямо в Wink (ещё…- Помощь — Security Level) или скачать бесплатное приложение в маркете DRM-info.
Есть три уровня защиты: L1, L2, L3.
Widevine L3 — решение полностью программное (разработка Google), не предполагает задействование Trusted Execution Environment (TEE), аппаратной среды для шифрования и не изолировано от т.н. «богатой среды исполнения» (Rich Execution Environment, REE), в которой функционируют операционная система и приложения мобильного устройства. Поэтому L3 — это самый слабый уровень шифрования, устройства, поддерживающие L3, воспроизводят защищенный контент только с низким качеством (преимущественно в разрешении 480p).
Widevine L2 — TEE предусмотрена, однако обработка видео выполняется отдельным программным обеспечением или на отдельном оборудовании. Защищенный контент воспроизводится с разрешением до 540p.
Widevine L1 — наивысший уровень защиты, на котором процессы дешифровки и обработки данных выполняются только в TEE. Устройства с поддержкой L1 защищенный видеоконтент воспроизводят с максимальным доступным разрешением.
Полный размер
На моём телефоне уровень L1
Но решение для Teyes по крайней мере нашлось, на не безызвестном сайте 4pda.
Решение для spro+ и cc2+
Обновление от 03.03.2022 устанавливается как прошивка, но самое приятное ничего не сбивает, как было так и останется, только добавится сертификат, правда уровня L3. Но хоть так, качество воспроизведения всё равно приемлемое.)) Единственное, оно не подходит для CC3. У меня на SPRO+ всё заработало прекрасно))
Полный размер
После обновления
Полный размер
Источник: www.drive2.ru