查看详情

PSSH and PSSH Box 介绍

最近在工作遇到了关于 pssh0 的关键词标记。当然你第一样看,可能并不清楚这个是什么东西,但是如果你是做多媒体 DRM 的,你或许会对 PSSH 有所了解。这里结合着搜索的资料简单介绍下这个 PSSH是什么东西,而这里面的 0 又是什么含义。 PSSH-Protection System Specific Headers 顾名思义,就是保护系统特定头部信息。当视频内容受到 DRM 保护时,内容会被加密,并且会将元数据添加到内容中。添加此类元数据的过程称为 DRM 信号传输。 PSSH 是一个标准化容器,用于保存用于保护数字内容的保护系统所特有的元数据。因此,PSSH 是 DRM 信号传输的一部分。 PSSH不包含加密密钥本身(它是一个秘密),但它包含有关加密的必要信息,例如密钥 ID、加密方案以及从许可证服务器获取密钥所需的其他信息。 PSSH 最终在“ISO/IEC 23001-7:2023 MPEG 系统技术 - 第 7 部分: 详情 »

查看详情

HEVC DRM 在 Chrome 支持的问题

Chrome 在 105 版本后更新了对 HEVC 的支持,意味着,你可以直接在 Chrome浏览中播放 HEVC(H265) 的视频了。 对这个新的更新,当然大家都非常开心,可以放心给 Web 测提供 HEVC 的内容了,然而,这里还有一个点需要大家注意: 不幸的是,当前最大的缺点是,不支持带有 Widevine DRM 的 HEVC,只支持清晰、不受保护的内容。目前尚不清楚 Google 是否计划在未来增加对此的支持。 近期的验证告诉我们,当前Chrome依旧不支持 DRM + HEVC. 所以你依旧需要选择 AVC + DRM 的方式或者 AV1。 https://support.google.com/chrome/thread/206528835/does-chrome-desktop-107-support-hevc-with-widevine-drm?hl=en https://stackoverflow.com/questions/ 详情 »

查看详情

Multiple DRM Keys 介绍

本来没有这一期的,但是最近项目上遇到了,便记录一下。 往期回顾 多重DRM(Multiple Digital Rights Management)是一种通过叠加多种数字版权管理技术来保护数字内容的综合性解决方案。简单来说,就是给数字内容穿上多层“铠甲”,让盗版者难以攻破。 为什么需要多重DRM? 随着数字内容的爆炸式增长,盗版问题也日益严峻。单一的DRM技术很容易被破解,而多重DRM则通过组合不同的DRM技术,大大提高了内容保护的安全性。 多层防护: 就像密码设置一样,多重DRM相当于设置了多道关卡,破解难度成倍增加。 适应性强: 不同的DRM技术适用于不同的场景,多重DRM可以根据内容的价值和受众特点,灵活组合不同的技术。 抵御新型攻击: 黑客不断更新攻击手段,多重DRM可以通过及时更新和调整技术组合,来应对新的威胁。 多重DRM的工作原理 多重DRM通常包括以下几个步骤: 内容加密: 使用多种加密算法对内容进行加密,让未经授权的用户无法直接读取。 许可证管理: 生成不同的许可证,授予不同用户不同的访问权限,例如只能在线观看、不能下载等。 设备绑定: 将内容的使用与特定的设备绑定,防止内容被非法复制到其他设备。 动态密钥管理: 定期更新密钥,增加破解难度。 两种常见实现方案 单独定义不同内容要求的 DRM 秘钥 使用不同的 DRM 许可证保护内容的哪些轨道,因为这些许可证定义了允许播放指定内容的不同环境。 详情 »

查看详情

HDCP 介绍以及在 Web 的应用

HDCP(High-Definition Content Protection)是数字内容保护的一种方案,旨在保护数字视频内容在从设备传输到显示器或投影仪的途中不被非法复制。它由英特尔开发,并已成为高清数字内容传输的行业标准。 HDCP 的工作原理 HDCP 使用一对加密密钥来保护数字内容。第一个密钥由源设备(例如蓝光播放器或计算机)生成,第二个密钥由显示器或投影仪生成。当源设备将视频信号发送到显示器或投影仪时,它会使用第一个密钥对信号进行加密。显示器或投影仪使用第二个密钥来解密信号。如果缺少正确的密钥,则无法解密信号,因此无法复制内容。 HDCP 兼容设备拥有自己独特的加密密钥集,当尝试将受 HDCP 保护的内容从一台设备传输到另一台设备时,它们会相互交换这些密钥。这些加密密钥既可以确认每台设备都符合 HDCP 标准,又可用于在传输内容时对其进行加密,然后在另一端解密。这可以防止中间人攻击在传输过程中窃取未受保护的媒体。 现代显示器理所当然地都支持 HDCP,因此您最有可能遇到与推出时不支持 HDCP 的旧高清电视的兼容性问题。如果您使用不支持 HDCP 的电缆或分线器,即使显示器本身支持 HDCP,也会出现这种情况。 虽然 HDCP 最常用于蓝光光盘等物理媒体,但它也用于一些流媒体服务。例如,迪士尼和华纳兄弟使用 HDCP 来加密和保护几乎所有自己的节目,因此如果您在流媒体服务(尤其是他们的第一方服务)上遇到它们, 详情 »

查看详情

常见的流媒体 DRM 方案

前一篇什么是 DRM详细说明了 DRM 大概做什么。今天将会罗列常见的流媒体的 DRM 方案。我们目前主流是: Widevine PlayReady FairPlay 这些都是大厂背书的解决方案,这背后也是意味着他们各家的产品线都会上自家的方案。因此如果你做多媒体工作,肯定因为这么多套解决方案的适配感到烦恼。 Widevine Widevine 是谷歌公司收购而来的。常见的 Chrome 浏览器,或者 Android 上我们都能看到他们的身影。而且非常重要的一点,它是免费的,因此很多厂商都会选择它。 Widevine 实现视频加密,主要有下面几个重要步骤: 内容加密: 内容提供商首先使用 Widevine 的加密密钥对视频内容进行加密。这会使视频流变得无法观看,除非拥有正确的解密密钥。 设备授权: 用户设备必须经过 Widevine 认证才能播放受保护的内容。这通常涉及在设备上安装 Widevine 的客户端软件并注册 Google 帐户。 密钥交付: 当用户尝试观看受保护的内容时,他们的设备会向 Google 的许可服务器请求解密密钥。如果设备经过授权,服务器会提供密钥。 内容解密: 设备使用解密密钥来解密视频流。这使视频可以播放到用户的设备上 Widevine 详情 »

查看详情

实现类似 Medium 风格的视频加载

非常早之前写过关于一篇《[译]Medium 是如何优化图片加载的》 的文章。 最近在看一些视频封面的优化,其中会有一些黑屏的问题,于是乎想到了是不是可以借鉴这种风格。 大概原理还是,可以根据视频的 loadeddata 事件,然后将覆盖在上面的模糊的封面图隐藏,然后播放视频。 html <div class="video-container"> <video width="720" src=""></video> <div class="cover"></div> </div> CSS .video-container { position: relative; width: 720px; display: none; 详情 »

查看详情

什么是 DRM

DRM (英语:Digital rights management,缩写为DRM)是一系列访问控制技术,通常用于控制数字内容和设备在被销售之后的使用过程[3][4][5]。DRM有时也称为拷贝保护、复制控制、技术保护措施等。许多数字出版社和软件厂商都使用了DRM,例如亚马逊、AT&T、AOL、Apple Inc等。它如今一次成为很多公司最为基本的一想服务和要求。而且在音视频,文档,电子书领域都有他的存在。这里自己主要介绍音视频中的 DRM。 如今,电视音乐已经成为我们生活的一部分。如果大家回忆历史的话,我们最初接触这些东西是通过电视,而不是 APP。那个时候大家还流行通过租借 VCD 的形式,来看成龙周星驰的电影。随着数字媒体的兴起,我们可以非常容易的在网上看到最新的电影,这给电影的制作商带来了非常大的利益损失。因此对于非常复制的盗版打击,一直都是这些从事内容提供商一直需要去处理的事情。 DVD论坛的内容扰乱系统是一个早期的DRM系统。它使用简单的加密算法,制作DVD播放器的厂商必须获得授权在产品中实现此技术,然后才能解密并播放DVD中的加密内容。授权条款规定了播放DVD内容的方式,包括输出信号的格式和方式,以保证在电视上播放时视频的加密不受破坏。 在1999年,微软发布了WMDRM,用于执行媒体文档包含的DRM指令,限制用户对媒体文档的使用。这些DRM指令可以指定文档的播放次数、是否能被备份或转发。 详情 »

查看详情

深入理解 DRM 系列

准备开始写一系列关于 DRM。由于自己主要从事流媒体工作,这里也以流媒体的内容为主。 这里大概会写几篇,代码部分会聚焦在 Web 端的内容处理。自己最近一直在从事这方面的工作,因此也希望罗列整理一些资料,分享自己在这方面的一些心得。 DRM 目前已经存在于绝大多数的服务 APP 中。最直观的体验,就是你可以尝试看一些来自 Disney 等电影公司的电影,时候你可以尝试截图试一下: 我们可以从 Bilibili 网站点击进去,发现截图的时候是黑屏。这样也是为了防止录屏将视频流出去。尽管我们有 DRM 保护技术,但是还是依旧存在严重的流媒体盗版事件。因此DRM发展依旧有很长的路。 这一些列文章,自己将从下面几个部分区介绍: 什么是 DRM 常见的流媒体DRM 方案 Web 前端如何支持 DRM 深入理解 Widevine HDCP介绍 PSSH and PSSH Box 介绍 常见的 DRM 问题 希望这一系列文章,可以帮助大家去慢慢理解 DRM 工作,并且在日常工作中有所实践。 详情 »

查看详情

loadedData,loadedMetadata,canplay 什么时候播放最好

最近一直在做 MSE 相关的事情,机缘巧合下碰到了关于 ReadyState 和它有可能触发的事情的研究,于是写下这篇文章作为记录。 前面一篇文章 HTML5 Video 元素 Ready State 分析 分析了 readyState 状态的具体含义,今天则会根据状态和关键事件来进行分析。 VIdeo 关于启动播放,有下面这些事件选择: loadedmetadata: 事件在元数据(metadata)被加载完成后触发 loadeddata: 事件在媒体当前播放位置的视频帧(通常是第一帧)加载完成后触发。 canplay: 事件在终端可以播放媒体文件时(但估计还没有加载足够的数据来播放媒体直到其结束,即后续可能需要停止以进一步缓冲内容)被触发。 canplaythrough: 事件在终端可以播放媒体文件时(估计已经加载了足够的数据来播放媒体直到其结束,而不必停止以进一步缓冲内容)被触发。 我们可以看到事件先后顺序是: loadedmetadata -> loadeddata -> canplay -> canplaythrough 我们再看看 3G 网速下的测试效果: 可以看到还是 loadedmetadata -& 详情 »

查看详情

HTML5 Video 元素 Ready State 分析

最近一直在做 MSE 相关的事情,机缘巧合下碰到了关于 ReadyState 和它有可能触发的事情的研究,于是写下这篇文章作为记录。 Video 元素维持内部几个非常重要的状态,这些都是只读的: paused 属性,你可以直接从 video elment 上读取,当你暂停视频的时候,Video 元素会讲这个属性值改为 true, 这里还有一些别的情况,我会在后面一篇文章分析 readyState 属性,当然你也可以从 Video 元素上读取,不同 readyState 意味着 video 的不同状态。 官方罗列了这些状态值: // video element ready state Enum const unsigned short HAVE_NOTHING = 0; const unsigned short HAVE_METADATA = 1; const unsigned short HAVE_CURRENT_DATA 详情 »