当前位置:  开发笔记 > 前端 > 正文

如何使用Clear Key加密webm文件以使用Google的Shaka Player?

如何解决《如何使用ClearKey加密webm文件以使用Google的ShakaPlayer?》经验,为你挑选了1个好方法。

我正在开发一个小型系统,用于通过MSE/EME API在网络上传输受保护的内容.

这是我正在使用的一些工具:

FFMPEG

谷歌的Shaka-Packager

webm_crypt

我可以创建.webm文件并使用shaka-packager将它们打包到mpd文件中,以便提供给shaka-player.但是遵循Shaka文档中的Clear Key部分我必须加密webm文件需要对KeyIdKey.通过使用webm_crypt,我可以按照2.2.7上的这个文档创建加密内容,但我不知道如何获取shaka-player DRM系统的密钥对.



1> Andy..:

如果您使用的是Clear Key,则可以使用密钥服务器列表配置播放器.播放器向密钥服务器发出JSON请求(请求采用此格式),密钥服务器提供"许可证" - 包含Base64编码的对称密钥和keyId的JSON响应.然后使用该对称密钥来解密内容.

更新

要将密钥ID与未受保护的内容密钥关联以使用ClearKey进行调试,请为drm.clearKeys十六进制编码中的keyId 提供一个JSON元素作为映射的"密钥","value"是十六进制编码的内容加密密钥.

player.configure({
  drm: {
    clearKeys: {
      'deadbeefdeadbeefdeadbeefdeadbeef': '18675309186753091867530918675309',
      '02030507011013017019023029031037': '03050701302303204201080425098033'
    }
  }
});

在加密时或在随附的清单文件中将相同的keyId与媒体文件相关联.

使用mp4split加密媒体文件:

#!/bin/bash

KID=10000000100010001000100000000001
CEK=3a2a1b68dd2bd9b2eeb25e84c4776668
LAURL="http://playready.directtaps.net/pr/svc/rightsmanager.asmx?PlayRight=1&UseSimpleNonPersistentLicense=1"
PSSH=YOUR_PSSH

mp4split --package_mpd -o audio.mp4 \
  --iss.key=${KID}:${CEK} --iss.license_server_url=${LAURL} \
  --widevine.key=${KID}:${CEK} --widevine.drm_specific_data=${PSSH} \
  oceans-64k.mp4

mp4split --package_mpd -o video-1.mp4 \
  --iss.key=${KID}:${CEK} --iss.license_server_url=${LAURL} \
  --widevine.key=${KID}:${CEK} --widevine.drm_specific_data=${PSSH} \
  oceans-250k.mp4

mp4split --package_mpd -o video-2.mp4 \
  --iss.key=${KID}:${CEK} --iss.license_server_url=${LAURL} \
  --widevine.key=${KID}:${CEK} --widevine.drm_specific_data=${PSSH} \
  oceans-380k.mp4

因为webm_crypt,文档非常粗略,但我相信它是在content_id=0123456789ABCDEF命令行标志中完成的-video_options:

foo@bar-linux:~/chromium_code/webm_crypt/webm_crypt$ ./webm_crypt 
    -i mediafiles/Chrome_44_5sec-chunks_video_only.webm -video true -audio false 
    -video_options base_file=bear.key,content_id=0123456789012345 
    -o /home/foo/www/no_crawl/eme/media/Chrome_44_5sec-chunks_video??_only-enc_v_01234567??89012345.webm 


如果你提供了用于验证的普通密钥,只需提供你在`webm_crypt`中使用的密钥的十六进制编码(`base_file`的内容)来加密与`drm.Clearkeys` JSON对象相关的内容.密钥ID.
`content_id`是keyId; `initialize_iv`是初始化向量,`base_file`的内容是键.
推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有