问题标签 [eme]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2864 浏览

html - HTML5 视频中的加密媒体扩展

这可能是题外话,但我呼吁 SO 的神允许这个线程存在。

我一直在使用我知道的所有关键字排列搜索网络,试图找到在 HTML5 视频中实现加密媒体扩展的可靠指南。

有大量关于EME 是什么的信息,但没有关于实施它的实用指南。

你有没有找到任何关于实施端到端 EME 管道的实用指南,或者至少有一些指向这一点的东西?

0 投票
1 回答
610 浏览

video-streaming - 在 Hls js 中启用 EME

目前我正在将 hls js 与视频 js 一起使用,我需要将 EME 与 hls js 一起使用。是否可以将 EME 与 hls js 一起使用?

https://www.w3.org/TR/encrypted-media/

https://github.com/dailymotion/hls.js/tree/master

0 投票
1 回答
899 浏览

html - 如何在没有视频的情况下使用 HTML5 的加密媒体扩展

好的 - 所以我知道加密媒体扩展 (EME) 都是关于开发人员的视频解密。我的理解是 EME 检测何时存在加密,获取适当的密钥(带有许可证)解密内容并将其传递给正确的编解码器进行渲染。

现在 - 更详细地查看;从这篇关于谷歌开发者的好介绍文章中,我想看看我是否可以调整 EME 引擎以用于非视频内容的流式传输。

我正在研究的挑战是以 EME 可以为我处理密钥并为我解密的方式加密一些静态内容。

我希望 EME 足够通用,以便我可以挂钩回调以向浏览器提供更多静态内容(加密)(因为标准仅规定了密钥系统、CDM、许可证服务器和打包服务的接口) . 问题是我将如何去做这件事?

我确信我们必须有自己的包装服务。但现在问题延伸到这些细节: -

  • 我是否需要制作自己的许可证服务器(以及它的规格是什么)
  • 我可以重复使用 Chrome 附带的其中一个关键系统和 CDM,还是有一种方法我应该自己构建?
  • 我是否必须定义自己的“编解码器”来呈现内容?如果是; 有没有办法可以用浏览器注册这个编解码器?

好吧 - 简而言之就是这样;欢迎任何建议或启发。

0 投票
1 回答
1571 浏览

javascript - 示例加密媒体扩展加密

我是加密媒体扩展的新手。是否有人有加密媒体扩展示例或任何其他用于在浏览器中播放视频的链接?

0 投票
1 回答
5661 浏览

php - 如何在 PHP 中实现 Clear-Key 视频加密并在 HTML 中播放

我想php在 HTML5 视频中实现视频加密并播放加密视频。我已经阅读了一些关于它的文件:

而且我知道我可以使用其他工具和服务:

我想提供这样的例子:

我应该通过哪些步骤?我在服务器端使用 PHP(laravel)。

0 投票
1 回答
309 浏览

cobalt - 不能使用 update_request_callback 来发送 Provisioning 请求

我遇到了同样的问题,Widevine 需要 Provisioning 请求。

“最好将配置请求报告为第一个许可请求,应用程序将为您发送 HTTP POST。然后,一旦收到配置响应,您就可以将真正的许可请求作为未经请求的许可请求发送”

您的意思是使用 SbDrmSessionUpdateRequestFunc 向页面发送消息,让页面向配置服务器发送配置请求并获得配置响应吗?youtube页面或质量页面有这个逻辑吗?

Drm 流程如下,对吗?如果不对,可以给我详细的过程吗?

SbDrmCreateSystem -> SbDrmGenerateSessionUpdateRequest -> SbDrmSessionUpdateRequestFunc(使用有效票证和有效 session_id 发送配置请求)-> SbDrmUpdateSession(更新对 CDM 的配置响应)-> SbDrmSessionUpdatedFunc(如果需要此回调?)-> SbDrmSessionUpdateRequestFunc(无效票证和有效 session_id发送真实的许可请求)-> SbDrmUpdateSession(更新对 CDM 的许可响应)-> SbDrmSessionUpdatedFunc(通知许可成功)

但是当我调用 SbDrmSessionUpdateRequestFunc 将配置 url 和消息发布到页面时,页面不使用我发布到它的 url。它是 Eme qual 页面上页面上的固定值。

该页面是 https://yt-media-test.appspot.com/2018.html?test_type=encryptedmedia-test&command=off&disable_log=true×tamp=1517552801994 运行第一个测试用例,许可证服务器是文件页面上的固定值 https://yt-media-test.appspot.com/js/lib/streams/mediaStreams-20180119121527.js

VideoSmallCenc: ['//yt-dash-mse-test.commondatastorage.googleapis.com/unit-tests/media/oops_cenc-20121114-142.mp4', 8017271, 242.71, { 'mimeType': 'video/mp4; codecs="avc1.4d4015"', 'video_id': '03681262dc412c06', 'playready_signature': '448279561E2755699618BE0A2402189D4A30B03B.0CD6A27286BD2DAF00577FFA21928665DCD320C2', 'widevine_signature': '9C4BE99E6F517B51FED1F0B3B31966D3C5DAB9D6.6A1F30BB35F3A39A4CA814B731450D4CBD198FFD'}], VideoMultiKeyCenc: ['//yt-dash-mse -test.commondatastorage.googleapis.com/unit-tests/media/tears_h264_main_720p_1500.mp4', 105466539, 734.17, {'mimetype':'video/mp4; codecs="avc1.4d401f"', 'pssh': util.createUint8ArrayFromJSArray([0, 0,https://proxy.staging.widevine.com/proxy '}],

0 投票
2 回答
5531 浏览

video - Widevine DRM - 正文请求有效负载

我正在集成一个播放器,该播放器必须在浏览器中播放受 Widevine DRM 保护的流。

我检查了一些知名玩家:

幸运的是,这些播放器提供了一些使用 Widevine DRM 保护的流样本。

我的问题涉及 XHR 执行以检索 DRM 密钥。在任何 Widevine 安全流中,我可以看到(在 devtools 中)至少有 2 个针对许可证服务器的 XHR。

举个例子:https ://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest_1080p.mpd

此流可用于:

在 Chrome (65.0.3325.181) 上,当我加载流时,我可以 2 XHR(让我们省略飞行前的“OPTIONS”xhr):

  • 邮政https://drm-widevine-licensing.axtest.net/AcquireLicense
    • X-AxDRM-Message特定于 Axinom 的请求标头
    • 要求Content-Length: 2
    • 请求有效负载等于\x08\x04(右键单击 XHR,然后“复制为 cURL”并将其粘贴到任何文本编辑器中)
    • 回复Content-Length: 706
  • 邮政https://drm-widevine-licensing.axtest.net/AcquireLicense
    • X-AxDRM-Message特定于 Axinom 的请求标头
    • 要求Content-Length: 3929
    • 具有一定数据量的请求有效负载
    • 回复Content-Length: 426

我不明白为什么有 2 个 XHR?\x08\x04此外,无论选择哪种流(在 Widevine DRM 流的情况下),总是发送带有两个字符的第一个 XHR ,是否有特定含义?

0 投票
1 回答
92 浏览

chromium - How to know the eme spec version from cobalt code or other?

  1. how to clarify the eme version at cobalt version
  2. how to know cobalt from Chromium version

Browser SDK version Chromium EME spec

Cobalt 11.107588 ? ? Cobalt 11.153049 ? ? Cobalt 16.162639 ? ?

Thank you

0 投票
1 回答
170 浏览

javascript - 是否可以在不使用“持久许可”类型的情况下允许离线播放?

使用与Encrypted Media Extensions兼容的浏览器,是否可以保存允许离线播放的任何(或多个)数据,而不依赖于持久许可类型?

例如,如果您可以捕获来自许可证服务器的响应,您是否可以重新使用它,只要许可证没有过期?

还是 EME 有内置的东西来解决这个问题?

我在 Chrome 中使用 Widevine 对分叉的 dash.js 进行了一些鬼混,我尝试捕获不同的外部提供的片段,将它们保存到磁盘,然后再将它们重新注入,但播放只是停滞不前抛出错误消息,所以我想知道这是否值得投入更多时间,或者它是否无法按设计工作。

0 投票
1 回答
867 浏览

protocol-buffers - how to use pssh python script using Python ProtoBuf library?

I am not able to figure out how Python ProtoBuf library is related to use pssh python script in this documentation https://github.com/google/shaka-packager/tree/master/packager/tools/pssh

How can I build the pssh.py script without the proto file?