You need to enable JavaScript to run this app.
导航
HLS 标准加密
最近更新时间:2024.08.16 16:42:50首次发布时间:2024.08.15 10:14:34

视频直播支持 HLS 标准加密,本文为您介绍在视频直播使用 HLS 的实现原理和进行HLS 加密配置的前置操作。

实现原理

视频直播 HLS 加密功能使用 HLS 协议的通用加密方案,该方案通过使用 AES-128 加密算法对每个 TS(Transport Stream)进行加密,并在生成的播放清单文件中添加解密信息。

本方案中视频直播服务端自身集成了 KMS 服务可提供加密密钥生成和定时轮换功能。

加密解密流程如下:

  1. 客户端使用 HLS 拉流地址发起对加密直播的拉流请求。

  2. 视频直播服务收到请求后,使用自身生成的密钥对直播流进行加密,并将带有解密信息的 M3U8 文件返回给客户端。
    其中,#EXT-X-KEY 标签包含了加密信息,其中 URI 即为向客户自建密钥管理服务请求密钥的地址,M3U8 文件部分内容示例如下。

    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-MEDIA-SEQUENCE:107326
    #EXT-X-TARGETDURATION:2
    #EXT-X-PROGRAM-DATE-TIME:2024-05-07T17:59:02.927+08:00
    #EXT-X-KEY:METHOD=AES-128,URI="https://example.kms.com/get_hls_enc_key?key_id=08e765a4da*****c4028755c3c",IV=0x00000000000000000000018F4E83AD11
    #EXTINF:2.000,
    HD_1080p_1715075942927_3070957834_107326.ts?ps=11&app=live&stream=HD_1080p&vhost=push.example.com
    
  3. 客户端使用 M3U8 中的解密信息向自建密钥管理服务发起获取密钥请求。

  4. 自建密钥管理服务向视频直播发起获取密钥请求。

    说明

    自建密钥管理服务需具备密钥缓存能力,当下次有其他拉流请求时可直播返回密钥,无需每次都向视频直播请求获取。

  5. 自建密钥管理服务将视频直播服务返回的密钥返回给拉流客户端,客户端通过获取的密钥解密播放 M3U8 文件。

前提条件

自建密钥管理服务

如需使用 HLS 加密,并实现解密播放功能,您需要自行搭建密钥管理服务。且需具备如下功能。

  • 支持向视频直播服务获取密钥: HLS 加密密钥由视频直播提供,因此您的密钥管理服务需要调用视频直播提供的GetHLSEncryptDataKey API,获取对应加密密钥。
  • 支持对获取的密钥进行缓存:为了避免所有拉流行为均从视频直播服务获取密钥,您的密钥管理服务应具备缓存功能,实现客户端向密钥管理服务获取密钥的能力。

鉴权

您可以使用视频直播提供的远程鉴权对拉流请求的合法性进行鉴权,如需使用请您创建工单联系技术支持,获取配置方法。

操作步骤

  1. 登录视频直播控制台

  2. 左侧导航栏选择功能管理 > 加密管理,选择HLS 标准加密页签。

  3. 单击编辑配置,填写以下参数。

    参数说明
    密钥获取地址客户自建密钥管理服务后,客户端向密钥管理服务请求获取密钥的地址。
    轮换时间视频直播服务端生成密钥的更新周期,单位为秒,取值范围为 [60,604800]。
  4. 单击确认

后续操作

  1. 添加 HLS 类型的直播加密配置,参考加密配置
  2. 生成 HLS 类型的加密流的拉流地址,参考地址生成器