跳到主要内容

自定义加密

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

自定义加密机

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

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

// 定义加解密钩子
const encryptor: IRCEncryptorHooks = {
encode(chunk) {
if (chunk instanceof RTCEncodedVideoFrame) {
// 自定义 H.264 视频加密算法
return encodeH264(chunk)
} else {
// 自定义 Opus 音频加密算法
return encodeOpus(chunk)
}
},
decode(chunk) {
if (chunk instanceof RTCEncodedVideoFrame) {
// 自定义 H.264 视频解密算法
return decodeH264(chunk)
} else {
// 自定义 Opus 音频解密算法
return decodeOpus(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 开始废弃,且不支持自定义加解密功能。