Nam*_*ham 3 encryption html5 drm ffmpeg webm
我正在开发一个小型系统,用于通过MSE/EME API在网络上传输受保护的内容.
这是我正在使用的一些工具:
我可以创建.webm文件并使用shaka-packager将它们打包到mpd文件中,以便提供给shaka-player.但是遵循Shaka文档中的Clear Key部分我必须加密webm文件需要对KeyId和Key.通过使用webm_crypt,我可以按照2.2.7上的这个文档创建加密内容,但我不知道如何获取shaka-player DRM系统的密钥对.
如果您使用的是Clear Key,则可以使用密钥服务器列表配置播放器.播放器向密钥服务器发出JSON请求(请求采用此格式),密钥服务器提供"许可证" - 包含Base64编码的对称密钥和keyId的JSON响应.然后使用该对称密钥来解密内容.
更新
要将密钥ID与未受保护的内容密钥关联以使用ClearKey进行调试,请为drm.clearKeys十六进制编码中的keyId 提供一个JSON元素作为映射的"密钥","value"是十六进制编码的内容加密密钥.
player.configure({
drm: {
clearKeys: {
'deadbeefdeadbeefdeadbeefdeadbeef': '18675309186753091867530918675309',
'02030507011013017019023029031037': '03050701302303204201080425098033'
}
}
});
Run Code Online (Sandbox Code Playgroud)
在加密时或在随附的清单文件中将相同的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
Run Code Online (Sandbox Code Playgroud)
因为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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1803 次 |
| 最近记录: |