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

时间:2017-01-20 07:56:00

标签: html5 encryption ffmpeg drm webm

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

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

我可以创建.webm文件并使用shaka-packager将它们打包到mpd文件中,以便提供给shaka-player。但是Clear Key section in the Shaka docs后面我必须加密webm文件,需要KeyIdKey对。 通过使用webm_crypt,我可以按照this document on 2.2.7创建加密内容,但我不知道如何获取shaka-player DRM系统的密钥对。

1 个答案:

答案 0 :(得分:6)

如果您使用的是Clear Key,则可以为播放器配置密钥服务器列表。播放器向密钥服务器发出JSON请求(请求在this format中),密钥服务器提供“许可证” - JSON response containing the Base64-encoded symmetric key and keyId。然后使用该对称密钥来解密内容。

<强>更新

要将密钥ID与未受保护的内容密钥关联以使用ClearKey进行调试,请为drm.clearKeys提供一个JSON元素,其中十六进制编码的keyId(s)作为地图的“关键字”和“值”是十六进制编码的内容加密密钥。

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

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

Encrypting media file with 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