Использование Azure Media Services для доставки лицензий DRM с помощью Shaka Packager? - PullRequest
2 голосов
/ 04 марта 2020

Я создаю службу Video On Demand на основе подписки. Для защиты контента я выбираю Widevine & Azure Медиа-сервисы для доставки Лицензии, стоимость которой составляет 0,20 доллара США за 100 лицензий. Shaka Packager для упаковки носителей.

Я следовал этому руководству и получил:

Created key nb:kid:UUID:d2c69XXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX with key value XXXXXXXXXXXXXXXXf7Kc7g==
PlayReady License Key delivery URL: https://xxxxxxx.keydelivery.centralindia.media.azure.net/PlayReady/
Widevine License Key delivery URL: https://xxxxxxx.keydelivery.centralindia.media.azure.net/Widevine/?KID=d2c69XXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Added authorization policy: nb:ckpid:UUID:5274f7da-XXXX-XXXX-XXXX-XXXXXXXXXXXX

Shaka Packager Документация

$ packager <stream_descriptor> ... \
  --enable_widevine_encryption \
  --key_server_url <key_server_url> \
  --content_id <content_id> \
  --signer <signer> --aes_signing_key <aes_signing_key> \
  --aes_signing_iv <aes_signing_iv> \
  [Other options, e.g. DASH options, HLS options]

Итак, у меня есть key_server_url, content_id

, где я могу найти aes_signing_key & aes_signing_iv?

1 Ответ

2 голосов
/ 14 марта 2020

Ссылка на документацию и пример, который вы предоставили, предназначены для использования сервера ключей Widevine с информацией, возвращаемой через API, связанный с этой страницей, «Common Encryption API для Widevine DRM».

Обратите внимание, что ссылка на этот документ может не работать без разрешения, но вы, как правило, можете увидеть версию в качестве примера, если вы ищете в Google название API.

В вашем случае вы, вероятно, захотите используйте инструкции для 'Использование необработанного ключа' в документации Shaka здесь: https://google.github.io/shaka-packager/html/tutorials/raw_key.html#using -raw-key

Это включает в себя такие примеры, как:

$ packager \
  in=h264_baseline_360p_600.mp4,stream=audio,output=audio.mp4,drm_label=AUDIO \
  in=h264_baseline_360p_600.mp4,stream=video,output=h264_360p.mp4,drm_label=SD \
  in=h264_main_480p_1000.mp4,stream=video,output=h264_480p.mp4,drm_label=SD \
  in=h264_main_720p_3000.mp4,stream=video,output=h264_720p.mp4,drm_label=HD \
  in=h264_high_1080p_6000.mp4,stream=video,output=h264_1080p.mp4,drm_label=HD \
  --enable_raw_key_encryption \
  --keys label=AUDIO:key_id=f3c5e0361e6654b28f8049c778b23946:key=a4631a153a443df9eed0593043db7519,label=SD:key_id=abba271e8bcf552bbd2e86a434a9a5d9:key=69eaa802a6763af979e8d1940fb88392,label=HD:key_id=6d76f25cb17f5e16b8eaef6bbf582d8e:key=cb541084c99731aef4fff74500c12ead \
  --mpd_output h264.mpd

For ' key_Id 'вы используете возвращенный ключ UUID и для' key = 'возвращаемое' значение ключа '.

Хотя это не требуется здесь для ввода, просто для полноты отметим вектор инициализации,' aes_signing_iv ' в Widevine API, как правило, не является секретным значением. Это просто начальное значение, которое используется для запуска инициализации блока для шифрования AES. Он может быть создан и передан упаковщику, и часто представляет собой просто случайный 8 или 16-байтовый IV для каждого фрагмента содержимого.

...