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

标签 html encryption ffmpeg drm webm

我正在开发一个小型系统,用于使用 MSE/EME API 在 Web 上流式传输 protected 内容。

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

我可以创建 .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 系统的 key 对。

最佳答案

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

更新

要将 key ID 与未 protected 内容 key 相关联以使用 ClearKey 进行调试,请为 drm.clearKeys 提供一个 JSON 元素,并将十六进制编码的 keyId 作为 map 的“ key ” “值”是十六进制编码的内容加密 key 。

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

在加密时或在随附的 list 文件中将相同的 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,文档非常粗略,但我相信它是通过 -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_01234567‌​89012345.webm 

关于html - 如何使用 Clear Key 加密 webm 文件以使用 Google 的 Shaka Player 播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41758639/

相关文章:

ffmpeg - 为什么我做 -tune ssim 时 ffmpeg 不显示 SSIM 结果?

c# - 适用于 UWP 应用的 FFmpegInterop.UWP 或 VLC.MediaElement

c - 加密c源文件

javascript - 这是使用 AngularJS 获取数据到 <li><a href> 的错误吗?

CSS 属性的 Python 文件内容替换

java - 无法加载以下字体

Java Android - 加密/解密文件内容

javascript - 压缩js加密的字符串

ffmpeg - [FFmpeg]什么是已弃用的 avpicture_alloc、avpicture::data 的替代品

javascript - 在 Bootstrap 中向下拉菜单添加开放类的问题