我正在开发一个小型系统,它将用于使用MSE/EME在web上传输受保护的内容。
这是我正在使用的一些工具:
我可以创建.webm文件,并将它们打包使用shaka-packager到mpd文件,以便提供给沙卡-播放器。但是在清除沙卡文档中的关键部分之后,我必须加密webm文件,这需要一对KeyId
和Key
。通过使用webm_crypt,我可以通过跟踪关于2.2.7的本文件创建加密的内容,但是我不知道如何获得shaka-player DRM系统的密钥对。
发布于 2017-01-23 03:47:34
如果使用的是透明密钥,则使用密钥服务器列表配置播放机。播放机向密钥服务器(请求在这种格式中)发出JSON请求,密钥服务器提供“许可”-- 包含Base64 64编码的对称密钥和keyId的JSON响应。然后使用该对称密钥解密内容。
更新
要将密钥ID与要用ClearKey调试的不受保护的内容键关联起来,请为drm.clearKeys
提供一个JSON元素,该元素使用十六进制编码的keyId(s)作为映射的“密钥”,“值”是十六进制编码的内容加密密钥。
player.configure({
drm: {
clearKeys: {
'deadbeefdeadbeefdeadbeefdeadbeef': '18675309186753091867530918675309',
'02030507011013017019023029031037': '03050701302303204201080425098033'
}
}
});
在加密媒体文件时或在伴随它的清单文件中,将相同的keyId与媒体文件关联。
#!/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
,文档非常粗略,但我相信它是用-video_options
中的content_id=0123456789ABCDEF
命令行标志完成的。
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_0123456789012345.webm
https://stackoverflow.com/questions/41758639
复制相似问题