// 设置本地画面的预览模式:开启左右镜像,设置画面为填充模式trtcCloud.setLocalRenderParams(TRTCRenderParams(fillMode: TRTCCloudDef.TRTC_VIDEO_RENDER_MODE_FILL mirrorType: TRTCCloudDef.TRTC_VIDEO_MIRROR_TYPE_ENABLE);// 启动本地摄像头的预览(viewId 是 TRTCCloudVideoView 创建过程中 onViewCreated 调用时给予的视图唯一标识符)trtcCloud.startLocalPreview(isFrontCamera, viewId);// 通过 TXDeviceManager 开启自动对焦并将闪光灯打开bool? isAutoFocusEnabled = await manager.isAutoFocusEnabled(); if (isAutoFocusEnabled ?? false) { manager.enableCameraAutoFocus(true); } manager.enableCameraTorch(true);
quality 参数确定采集模式。虽然这个参数的名字叫做 quality,但并不是说质量越高越好,不同的业务场景有最适合的参数选择(这个参数更准确的含义是 scene)。// 开启麦克风采集,并设置当前场景为:语音模式(高噪声抑制能力、强弱网络抗性)trtcCloud.startLocalAudio(TRTCCloudDef.TRTC_AUDIO_QUALITY_SPEECH );// 开启麦克风采集,并设置当前场景为:音乐模式(高保真采集、低音质损失,推荐配合专业声卡使用)trtcCloud.startLocalAudio(TRTCCloudDef.TRTC_AUDIO_QUALITY_MUSIC);
// 创建 TRTCCloud 单例 trtcCloud = (await TRTCCloud.sharedInstance())!; // 注册 TRTC 事件回调 trtcCloud.registerListener(onRtcListener);enterRoom() async { try { userInfo['userSig'] = await GenerateTestUserSig.genTestSig(userInfo['userId']); meetModel.setUserInfo(userInfo); } catch (err) { userInfo['userSig'] = ''; print(err); }// 如果您的场景为“互动视频直播”,请将场景设置为 TRTC_APP_SCENE_LIVE,并在TRTCParams中为role字段设置相应的值。 await trtcCloud.enterRoom( TRTCParams( sdkAppId: GenerateTestUserSig.sdkAppId, userId: userInfo['userId'], userSig: userInfo['userSig'], role: TRTCCloudDef.TRTCRoleAnchor, roomId: meetId!), TRTCCloudDef.TRTC_APP_SCENE_LIVE); }
// 如果您当前的角色是观众(Audience),需要先调用 switchRole 切换到主播(Anchor)// If your current role is 'audience', you need to call switchRole to switch to 'anchor' firsttrtcCloud.switchRole(TRTCCloudDef.TRTCRoleAnchor);trtcCloud.startLocalAudio(TRTCCloudDef.TRTC_AUDIO_QUALITY_DEFAULT);trtcCloud.startLocalPreview(true, cameraVideo);// 如果切换角色失败,onSwitchRole 回调的错误码便不是 0// If switching operation failed, the error code of the 'onSwitchRole' is not zeroonRtcListener(type, param) async { if (type == TRTCCloudListener.onSwitchRole) { if (param['errCode'] != 0) { // TO DO } } }
文档反馈