使用 Azure 媒体服务通过 shaka 打包程序交付 DRM 许可证?
Posted
技术标签:
【中文标题】使用 Azure 媒体服务通过 shaka 打包程序交付 DRM 许可证?【英文标题】:Using Azure Media Services to deliver DRM licenses with shaka packager? 【发布时间】:2020-06-17 03:53:46 【问题描述】:我正在构建基于订阅的视频点播服务。对于内容保护,我选择 Widevine 和 Azure 媒体服务 来交付许可证,每 100 个许可证的费用为 0.20 美元。用于媒体包装的 Shaka Packager。
我关注了this guide 并得到了:
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
沙卡包装员Documentation
$ 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
?
【问题讨论】:
类似问题(未回答)在这里:***.com/questions/36018756/… 这里有相同的问题:social.msdn.microsoft.com/Forums/en-US/… 我发布了相同的问题,他们用文档中的测试凭据回答了我;我该怎么办:( 刚刚问过这里:github.com/MicrosoftDocs/azure-docs/issues/49780 也在这里问过:github.com/google/shaka-packager/issues/727 【参考方案1】:您提供的文档链接和示例适用于您使用 Widevine 密钥服务器时的情况,API 返回的信息链接到该页面上的“Widevine DRM 通用加密 API”。
请注意,未经许可,该文档的链接可能无法使用,但如果您在 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
对于“key_Id”,您使用返回的密钥 UUID,对于“key=”,您使用返回的“密钥值”。
尽管此处不需要作为输入,但为了完整性,Widevine API 中的初始化向量“aes_signing_iv”通常不是秘密值。它只是一个“种子”值,用于启动 AES 加密的块初始化。它可以被创建并传递给打包程序,并且通常只是每个内容的随机 8 或 16 字节 IV。
【讨论】:
所以没有选择使用 azure Widevine 许可证服务器? @GarvitJain - 您可以使用上面显示的回复中的信息,是的。 很好,这对我有用!将密钥传递给 shaka 打包程序时,必须从密钥 id 中删除破折号。在传递给 shaka 打包程序时,我必须将 azure 的键值从 base64 转换为十六进制。还必须通过这个标志,--protection_systems Widevine,PlayReady @BrianHarris 你是如何通过许可证服务器 url 的? @GarvitJain - 对于 Widevine,许可证 URL 未在清单或媒体中传递 - 它必须在播放器或客户端上进行配置。以上是关于使用 Azure 媒体服务通过 shaka 打包程序交付 DRM 许可证?的主要内容,如果未能解决你的问题,请参考以下文章
通过 Azure 媒体服务从 Azure 云存储 Blob 流式传输 mp3(仅限音频)
使用 Azure 媒体服务和 Asp.Net Core 上传和管理媒体文件的最佳方式
Azure 媒体服务 Widevine 和 PlayReady DRM 错误:无法解密加密的视频源 0x20500004