You need to enable JavaScript to run this app.
文档中心
视频点播

视频点播

复制全文
视频加密
火山引擎私有加密(新版)
复制全文
火山引擎私有加密(新版)

火山引擎私有加密是一套云端一体的高安全级别视频加密解决方案。它采用私有加密算法,对视频内容本身进行加密,并通过受安全保护的链路传输密钥,能有效防止视频被破解、盗链和非法下载。

方案架构

火山引擎私有加密方案由加密转码解密播放两个核心模块组成。
Image

说明

关键概念:

  • DEK (Data Encryption Key):用于加密音视频数据的密钥。
  • KEK (Key Encryption Key):用于加密或“封装”数据加密密钥的密钥。可调用客户端播放器 SDK 生成公钥和私钥对。公钥会经过一层加密(即 DrmKEK),传给服务端,用于加密 DEK。私钥则由客户端自行保存,无需传给服务端,用于解密 DEK。
  • 加密转码:
    1. 业务方上传视频。
    2. 视频点播存储源文件。
    3. 业务方触发加密转码操作。
    4. 点播转码服务从密钥管理服务获取密钥,对视频文件进行加密。
    5. 转码完成后,存储加密后的视频文件。
  • 解密播放:
    1. 业务授权:移动端 App 或 Web 页面访问视频时,需先访问业务方自身的 API 或后端页面。业务方在此可添加自身的权限控制机制,如要求用户登录后才能播放,建议采用 HTTPS 协议。若业务允许播放,业务方通过子账号的 AK/SK 签发播放 Token,并将其返回给 App/Web 端。
    2. 获取播放地址:播放端将视频 ID 和播放 Token 传递给播放器 SDK,由 SDK 负责:
      • 从视频点播服务获取相应的多格式、多清晰度播放地址。
      • 获取对应的密钥。该密钥会进行二次加密,以提高安全性。
    3. 解密播放:
      • 播放器 SDK 通过播放地址获取加密视频文件。
      • 运用加密密钥对视频进行解密后播放。

优势特性

  • 每个视频文件均使用独立密钥,可有效防范因单一密钥泄露可能引发的安全风险。此外,密钥经过二次加密,进一步提升了安全性。
  • 提供适配 Android、iOS、Web 等平台的播放器 SDK,能够自动解密并播放加密内容。同时,支持设备级 UnionInfo 校验,可降低密钥泄露后任意设备播放的风险。
  • 对视频数据进行加密处理,即便视频下载至本地,仍处于加密状态,可有效防止视频被盗用。

费用说明

  • 火山引擎私有加密属于免费服务,但需通过视频转码实现加密功能。转码将产生费用,具体计费标准请参考媒体处理计费
  • 经火山引擎私有加密的视频,仅可使用视频点播提供的播放器 SDK 对加密内容进行解密播放。播放器 SDK 使用 License 计费,具体计费标准请参考播放器 SDK 计费

服务端配置

前提条件

加密转码

  1. 视频点播控制台创建媒体处理模板。音频转码模板、视频转码模板和极致超清模板均支持开启私有加密。您需开启私有加密开关,如下图所示。
    Image

    说明

    媒体处理模板的其他参数配置请见以下文档:

  2. (可选)在视频点播控制台创建工作流。根据您创建的媒体处理模板类型勾选相应的工作流任务并关联开启了私有加密的媒体处理模板。
    Image
  3. 触发私有加密转码。您可以直接通过单个媒体处理模板发起转码,或基于包含媒体处理任务的工作流去发起转码。具体请见以下文档:
    • 单模板处理:可在视频点播控制台通过指定单个媒体处理模板来触发媒体处理任务,具体请见触发单模板处理任务
    • 工作流处理:可设置空间级别的默认工作流、上传时指定工作流 ID 或上传后手动触发工作流。具体操作请见触发工作流
  4. 查看私有加密转码结果。
  1. 登录视频点播控制台,进入指定空间。
  2. 媒资管理 > 视频管理页面,单击目标视频操作列的详情按钮,进入视频详情页面。
  3. 单击视频地址页签。您可以查看该加密转码输出的流会标识私有加密字样。
    Image

客户端解密播放

经火山引擎私有加密的视频,仅可使用视频点播提供的播放器 SDK 对加密内容进行解密播放。

播放原理与整体流程

火山引擎私有加密在客户端采用了一套基于设备信息的安全机制,以确保密钥仅能被授权的设备解密。整体流程如下图所示:
Image

  1. 客户端生成设备信息:客户端播放器 SDK 生成代表当前设备的唯一信息 UnionInfo 和一个用于加密的公钥 (DrmKek)。
  2. 客户端请求临时播放 Token:客户端将 UnionInfoDrmKek 发送给您的业务服务端。
  3. 服务端签发临时播放 Token:您的业务服务端在调用视频点播服务签发 PlayAuthToken 时,必须附带上从客户端收到的 UnionInfoDrmKek
  4. 客户端获取播放信息:播放器 SDK 使用这个绑定了设备信息PlayAuthToken 去请求视频点播服务。
  5. 点播服务下发加密密钥:点播服务会使用 DrmKek 对真实的视频解密密钥进行加密,然后才下发给客户端。这意味着只有持有对应私钥的设备才能解开它。
  6. 客户端解密播放:播放器 SDK 内部使用设备本地的安全模块解密获取到视频密钥,并用该密钥解密视频流,最终完成播放。

集成步骤

Native 端 Vid 模式下整体解密播放流程如下:

  1. 生成 UnionInfo 和 DrmKek:调用播放器 SDK 的 getEngineUniqueIdgetEngineUniqueKek 方法生成 UnionInfo(设备唯一信息)和 DrmKek(对称加密的加密公钥)。

    • Android 播放器 SDK:

      String unionInfo = TTVideoEngine.getEngineUniqueId(context);
      String kek = TTVideoEngine.getEngineUniqueKek(context); 
      
    • iOS 播放器 SDK:

      NSString *kek = [TTVideoEngine getEngineUniqueKek];
      NSString* unionInfo = [TTVideoEngine getEngineUniqueId]];
      
  2. 请求临时播放 Token:携带上一步所生成的 UnionInfo 和 DrmKek,向应用服务端发起请求,以生成临时播放 Token。应用服务端通过视频点播服务端 SDK 本地签发临时播放 Token,然后下发给客户端。服务端在生成 Token 时,需将 FileType 参数设为 private_evideoUnionInfo 参数为播放器 SDK 生成的 UnionInfo,DrmKEK 参数设为播放器 SDK 生成的 DrmKek。具体示例代码,请见以下文档:

  3. 设置播放源:播放器 SDK 仅支持通过 Vid 模式播放私有加密视频。参考以下文档传入 Vid 和临时播放 Token 设置播放源:

  4. 请求播放信息:播放器 SDK 自发向点播服务端发起请求以获取视频信息。点播服务端会对播放密钥进行多次加密处理,从而最大程度地提高密钥的安全性。最终,点播服务端会将视频地址和经过加密的播放密钥返回给播放器 SDK。

  5. 请求加密视频内容:播放器 SDK 内部通过 PlayUrl 向 CDN 请求加密视频内容。

  6. 解密播放:播放器 SDK 解析出真实密钥,最终使用该密钥对视频进行解密并播放。

Web 端

详见 播放私有加密视频(新版)

最近更新时间:2026.03.06 14:36:14
这个页面对您有帮助吗?
有用
有用
无用
无用