畅直播
  • iOS
  • Android : Java
  • macOS
  • Windows
  • Web
  • Flutter
  • 产品简介
    • 概述
    • 发布日志
    • 基本概念
    • 产品优势
    • 应用场景
    • 限制说明
    • 升级指南
  • 计费说明
  • 下载
  • 快速开始
  • 直播推流
  • 直播拉流
  • 基础功能
  • 进阶功能
  • 最佳实践
  • 常用错误码
  • 服务端 API
  • 客户端 API
  • 常见问题

音视频流加密

更新时间:2021-12-04 19:41

1 功能简介

该功能可用于加密流信息以保护通信安全。

开发者可在推流时对流进行加密。对于已经加密的流,在拉流时,开发者需提供与加密密钥一致的解密密钥,否则无法成功拉流。

2 示例源码下载

请参考 下载示例源码 获取源码。

相关源码请查看 “/ZegoExpressExample/Others/src/main/java/com/example/others/security” 目录下的文件。

3 前提条件

在使用音视频流加密功能之前,请确保:

4 使用步骤

4.1 设置推流加密密钥

调用 setPublishStreamEncryptionKey 接口可设置推流的加密密钥,该接口在推流前后调用都可生效。加密密钥由开发者自行设定,长度仅支持 16/24/32 字节。开发者在拉加密后的流时,需提供与加密密钥一致的解密密钥,否则无法成功拉流。

  • 该接口仅当向 ZEGO 实时音视频服务器推流时调用有效。
  • 支持在推流中途调用 setPublishStreamEncryptionKey 更新加密密钥,注意需要先更新拉流端解密密钥后,才能更新推流端加密密钥。
  • 若先更新推流端加密密钥再更新拉流端解密密钥,拉流端可能出现部分帧无法解密的情况,进而导致拉流失败。若先更新拉流端解密密钥,则 SDK 会存储新旧两个解密密钥,可以做到无缝切换。
  • 调用 stopPublishingStreamlogoutRoom 都将会清空加密密钥。
// key 为加密密钥,长度仅支持 16/24/32 字节。
// 加密密钥由开发者自行设定。
engine.setPublishStreamEncryptionKey(key);

4.2 设置拉流解密密钥

调用 setPlayStreamDecryptionKey 接口可设置拉流解密密钥,该接口在拉流前后调用都可生效。

  • 该接口仅当从 ZEGO 实时音视频服务器低延迟直播服务器拉流时调用有效。
  • 支持在拉流中途调用 setPlayStreamDecryptionKey 更新解密密钥,注意需要先更新拉流端解密密钥后才能更新推流端加密密钥。
  • 调用 stopPlayingStreamlogoutRoom 都将会清空解密密钥。

// playStreamID 为拉流 ID
// key 为解密密钥,长度仅支持 16/24/32 字节。
engine.setPlayStreamDecryptionKey(playStreamID,key);

4.3 开始推流/拉流

请参考 快速开始 - 实现流程 依次完成推流和拉流相关操作。

5 API 参考列表

方法 描述
setPublishStreamEncryptionKey 设置推流加密密钥
setPlayStreamDecryptionKey 设置拉流解密密钥