drmnow! multi-drm распространяется в виде интернет-сервиса (SaaS), специальные действия по установке программного обеспечения на стороне пользователя не требуются.
В состав нашего drmnow! multi-drm решения входят следующие DRM-системы:
Мы рекомендуем использовать Shaka Packager — утилиту для запаковывания и шифрования аудио/видео-контента.
Если вы планируете подключить DRM-систему Wiseplay от Huawei, Вам понадобится специальная сборка Shaka Packager. Для ее получения напишите нам на электронную почту req@drmnow.ru.
Для начала работы Вам понадобятся [project] и [token].
Для их получения создайте drmnow! multi-drm проект в личном кабинете cdnnow!
Shaka packager поддерживает видео в различных форматах.
Для VOD мы рекомендуем использовать формат mp4.
Для Live есть возможность использовать два варианта:
Защищенное drmnow! multi-drm видео можно запаковать в один из следующих форматов:
Во время конвертации видео разбивается на фрагменты, каждый из которых шифруется ключом, полученным с сервера ключей.
Информация о фрагментах записывается в плейлист, который передается плееру для воспроизведения.
Ниже приведены примеры работы drmnow! multi-drm для разных DRM-систем.
Здесь и далее подразумевается использование ОС Linux.
Используйте следующий 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"
ffprobe path/to/video.mp4
.
--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-систем, то есть запаковка прошла успешно.
Список идентификаторов DRM систем.
Используйте следующий 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].
Подробнее о формате запроса можно прочитать на официальном сайте — https://docs.aws.amazon.com/speke/latest/documentation/standard-payload-components.html.
Используйте следующий 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 \
Вам понадобится специальная сборка Shaka Packager с поддержкой MSS.
Для её получения напишите
нам на электронную почту req@drmnow.ru.
Интеграция с 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];
}
Для воспроизведения зашифрованного контента используйте следующие сервера лицензий:
Минимальные системные требования для настольных устройств:
Минимальные системные требования для мобильных устройств:
Для тестирования можно воспользоваться нашим плеером по адресу https://playernow.ru.
Перед проигрыванием убедитесь, что ваша операционная система и браузер поддерживают соответствующий тип DRM
(список совместимых с вашим браузером и ОС DRM-систем отображается на странице плеера в конце страницы).
В мобильных браузерах тестирование может быть проведено аналогично.
Вам понадобится скомпилировать и запустить на устройстве Huawei модифицированный Exoplayer
https://github.com/HMS-Core/hms-wiseplay-demo-exoplayer.
При этом в файле “demos/main/src/main/assets/media.exolist.json” необходимо добавить следующий блок
информации в
секцию “samples”:
{
"name": "test",
"uri": "https://myhost.tld/somevideo.mpd",
"drm_scheme": "wiseplay",
"drm_license_url": "https://[project].nowdrm.co/wiseplay"
},
Несколько секунд в начале видео не кодируется DRM. Если видео было запаковано правильно, оно доиграет до конца без искажений.
Спасибо что дочитали нашу краткую инструкцию по интеграции drmnow! multi-drm!
Если у Вас остались вопросы смело обращайтесь к нам. Мы обязательно поможем.
Спасибо!