本项目是腾讯TRTC服务的RN版本。纯用爱发电,目前已经基本可以使用本框架完成语音厅,以及视频直播,视频聊天等功能。本框架不包含语音厅UI部分,UI需要自己实现。换句话说,如果你有自定义直播间样式的需求,那么你完全可以试试使用本框架!
npx expo install expo-tencent-trtc
RTC服务需要一堆权限,比如麦克风和相机权限。安卓的权限部分本插件已经自动帮你配置好了。
iOS的权限部分,需要你自己在app.json或者app.config.js中配置。
{
"expo": {
"ios": {
"infoPlist": {
"NSCameraUsageDescription": "需要访问摄像头",
"NSMicrophoneUsageDescription": "需要访问麦克风"
}
}
}
}在安卓上需要添加TRTC所需的混淆规则,以免打包时出现错误。
利用expo-build-properties来添加TRTC所需的额外混淆规则。在app.json或者app.config.js中添加以下内容:
{
"expo": {
"plugins": [
[
"expo-build-properties",
{
"extraProguardRules": "-keep class com.tencent.trtc.** { *; }"
}
]
]
}
}import { ExpoTencentTRTC } from 'expo-tencent-trtc'
/// 初始化TRTC Cloud实例。初始化后才可以调用后续方法。推荐在用户接受隐私协议后调用。
ExpoTencentTRTC.initTRTCCloud()初始化TRTC Cloud实例。初始化后才可以调用后续方法。
进入房间。
EnterRoomParams 对象结构:
sdkAppId: 腾讯TRTC App IDuserId: 你的用户体系的用户IDroomId: 房间ID(可选)strRoomId: 字符串类型的房间ID(可选,与roomId互斥)userSig: 鉴权票据,可以前端计算,也可以后端下发role: 进入房间角色(TRTCRole类型),观众或者主播scene: 使用场景,语音厅或者视频通话(TRTCAppScene类型)
退出房间。
切换房间。适用于在线教育场景中,监课老师在多个房间中进行快速切换的场景。
SwitchRoomParams 对象结构:
roomId: 房间ID(可选)strRoomId: 字符串类型的房间ID(可选)userSig: 用户签名(可选)privateMapKey: 用于控制权限的权限票据(可选)
切换用户角色,主播或者观众。
打开本地麦克风采集。推荐先开启麦克风,再进入房间。
闭麦或取消闭麦。
对指定某个用户静音。
静音所有用户的远端音频。
设置通话外放音量大小。
设置某个指定用户的声音播放音量。
开启实时音量检测。
AudioVolumeEvaluationOptions 对象结构:
enable: 是否启用音量评估interval: 音量提示的时间间隔(毫秒)enableVadDetection: 是否启用语音活动检测enablePitchCalculation: 是否启用音高计算enableSpectrumCalculation: 是否启用频谱计算
设置人声的混响效果。
设置变声特效。
切换前置/后置摄像头。
禁用或开启控制台日志打印。
控制台打印日志级别。
videoCall: 视频通话场景live: 直播场景audioCall: 语音通话场景voiceChatRoom: 语音聊天室场景
anchor: 主播角色audience: 观众角色
speech: 语音模式,适合语音通话default: 默认模式music: 音乐模式,适合唱歌、游戏等场景
noEffect: 无混响ktv: KTV混响效果smallRoom: 小房间效果hall: 大厅混响效果- 等多种混响效果选项
noEffect: 原声badKid: 熊孩子loli: 萝莉uncle: 大叔- 等多种变声效果选项 如果有其他需求,也可以给我提issue
QQ群:682911244
- 渲染视频内容
- 增强视频渲染方案,拆分成LocalView以及RemoteView。