EME接口(w3c Encrypted Media Extensions)
参考文档:https://www.w3.org/TR/encrypted-media/
交流qq80101277
通常网页初始化时,会调用一堆requestMediaKeySystemAccess(),探测web能力:解码器(vp8,vp9,av1,h264,avc,hvc等),hdcp等;
然后为创建一个播放环境,示例:
const mediaKeySystemAccess = await window.Navigator.requestMediaKeySystemAccess("com.widevine.alpha", [{ initDataTypes: ["cenc"], audioCapabilities: [{contentType: "audio/mp4; codecs="mp4a.40.5""}], videoCapabilities: [{contentType: "video/mp4; codecs="avc1.4d400d""}], }]) => MediaKeySystemAccess instance { keySystem: "com.widevine.alpha", autoId: "MediaKeySystemAccess_4", }
指定一个keySystem ,上面是widevine,给一些解码器参数,返回一个工厂,类型:MediaKeySystemAccess
const mediaKeys = await mediaKeySystemAccess.createMediaKeys() // 调用cdm的CreateCdmInstance,InitializeCdmModule_4,Initialize等
const session = mediaKeys.createSession("temporary")
这个session应该是一个cdm实例(和cdm里面的update session不一样)
session.generateRequest (js调用这个接口把pssh发给底层cdm,里面是keyid,不需要返回数据)
向widevine server请求数据(http请求:根据pssh等,返回一个二进制数据,观察700字节左右protobuf格式)
session.update (参数:widevine server返回的数据,就是700字节左右的),返回cdm数据(protobuf格式)
如果有setServerCertificate会调用2次update
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [翻译] 为什么 Tracebit 用 C# 开发
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· 刚刚!百度搜索“换脑”引爆AI圈,正式接入DeepSeek R1满血版
2021-04-23 python日志库loguru
2021-04-23 node.js日志封装