跳到主要内容

自定义加密

RTCLib 从 5.7.0 版本开始支持自定义加密,用户可以自定义加密算法,实现对音频帧和视频帧的加密与解密。

自定义加密机

RTCLib 内部使用 H.264 视频编解码和 Opus 音频编解码,开发者可以按需实现自定义的加解密算法,并在 RTCLib 初始化时传递给 RTCLib。

RTCLib 从 5.7.3 版本开始,IRCEncryptorHooks 接口定义删除了 decodeencode 回调,新增 encodeAudioencodeVideodecodeAudiodecodeVideo 四个回调。

import { installPlugin } from '@rongcloud/imlib-next';
import { IRCEncryptorHooks, installer } from '@rongcloud/plugin-rtc';

// 定义加解密钩子
const encryptor: IRCEncryptorHooks = {
/**
* @since 5.7.3
* 加密音频回调
* data 为待加密的音频二进制数据对应的 Uint8Array 类型数组
*/
encodeAudio(data: Uint8Array) {
// 自定义音频加密算法
return encodeOpus(chunk)
},
/**
* @since 5.7.3
* 加密视频回调
* data 为待加密的视频二进制数据对应的 Uint8Array 类型数组
*/
encodeVideo(data: Uint8Array) {
// 自定义视频加密算法
return encodeH264(chunk)
}
/**
* @since 5.7.3
* 解密音频回调
* data 为加密后音频二进制数据对应的 Uint8Array 类型数组
*/
decodeAudio(data: Uint8Array) {
// 自定义音频解密算法
return decodeOpus(chunk)
},
/**
* @since 5.7.3
* 解密视频回调
* data 为加密后视频二进制数据对应的 Uint8Array 类型数组
*/
decodeVideo(data: Uint8Array) {
// 自定义视频解密算法
return decodeH264(chunk)
}
};

// 初始化 RTCLib
const rtcClient = installPlugin(installer, { encryptor })

启用加密机

从 5.7.0 开始,RTCLib 新增了 joinRTCRoomWithOptions 方法用于加入房间。通过指定 encrypt 参数为 true,即可启动自定义加密机,对房间内的上行音频帧和视频帧进行加密,对房间内的下行音频帧和视频帧进行解密。

const { code, room } = await rtcClient.joinRTCRoomWithOptions('<Room-Id>', {
// 启用加密机
encrypt: true
})

joinRTCRoom 方法自 5.7.0 开始废弃,且不支持自定义加解密功能。