自定义加密
RTCLib 从 5.7.0 版本开始支持自定义加密,用户可以自定义加密算法,实现对音频帧和视频帧的加密与解密。
自定义加密机
RTCLib 内部使用 H.264 视频编解码和 Opus 音频编解码,开发者可以按需实现自定义的加解密算法,并在 RTCLib 初始化时传递给 RTCLib。
RTCLib 从 5.7.3 版本开始,IRCEncryptorHooks 接口定义删除了 decode
和 encode
回调,新增 encodeAudio
、encodeVideo
、decodeAudio
、decodeVideo
四个回调。
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 开始废弃,且不支持自定义加解密功能。