我试图了解 Apple 在其 iOS 设备以及 Safari 上支持的 HTTP Live Streaming 协议如何保护解锁内容的密钥。
我理解它的方式,.m3u8 文件将整个内容放在一起并引用内容(在 MPEG2 TS 容器中,AES 128 加密)和 TS 文件的密钥。
就像在这个例子中一样:
#EXTM3U
#EXT-X-MEDIA-SEQUENCE:7794
#EXT-X-TARGETDURATION:15
#EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=52"
#EXTINF:15,
http://media.example.com/fileSequence52-1.ts
#EXTINF:15,
http://media.example.com/fileSequence52-2.ts
#EXTINF:15,
http://media.example.com/fileSequence52-3.ts
#EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=53"
#EXTINF:15,
http://media.example.com/fileSequence53-1.ts
假设基于浏览器的播放,其中<video>
元素在“src”属性中被提供一个 m3u8 文件。在这种情况下,即使密钥是通过 https 传递的,我如何确保用户不会简单地在浏览器中输入 https URL 并将密钥保存到他的硬盘中?我理解机制的方式,密钥下载是由<video>
标签完成的,因为它使用浏览器的 https 堆栈播放 m3u8 源 - 浏览器内的合法客户端如何与仅在地址栏中键入它的用户区分开来?这一定很明显,但我只是没有看到它......
一切顺利,
丹施