产品动态
产品近期公告
关于 TRTC Live 正式上线的公告
关于TRTC Conference 正式版上线的公告
Conference 商业化版本即将推出
关于多人音视频 Conference 开启内测公告
关于音视频通话 Call 正式版上线的公告
关于腾讯云音视频终端 SDK 播放升级及新增授权校验的公告
关于 TRTC 应用订阅套餐服务上线的相关说明
flutter pub add tencent_rtc_sdk
Info.plist 的第一级<dict>目录下加入对相机和麦克风的权限申请:<key>NSCameraUsageDescription</key><string>授权摄像头权限才能正常视频通话</string><key>NSMicrophoneUsageDescription</key><string>授权麦克风权限才能正常语音通话</string>
io.flutter.embedded_views_preview,并设定值为 YES。deployment postprocessing,将其设置为 Yes 。
strip style,将其中 Release 的值设置为 Non-Global Symbols 。
/android/app/src/main/AndroidManifest.xml文件。<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /><uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission.CAMERA" /><uses-feature android:name="android.hardware.camera.autofocus" />
android/app/build.gradle 文件中对应位置添加:android {.....packagingOptions {pickFirst 'lib/**/libliteavsdk.so'}buildTypes {release {......minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}}
-keep class com.tencent.** { *; }
.xcworkspace工程文件后,在 Xcode 的导航栏中点击左侧的 Project Navigator,点击 Runner 并确保在编辑区域选择正确的 TARGETS。General选项卡的 Frameworks, Libraries, and Embedded Content 部分添加 ScreenCaptureKit.framework。
import 'package:tencent_rtc_sdk/trtc_cloud.dart';import 'package:tencent_rtc_sdk/trtc_cloud_def.dart';import 'package:tencent_rtc_sdk/trtc_cloud_listener.dart';
late TRTCCloud trtcCloud;
// 创建 TRTC 实例trtcCloud = (await TRTCCloud.sharedInstance())!;// 创建 TRTCCloudListener 实例TRTCCloudListener listener = TRTCCloudListener(// 根据需要实现对应的回调onError: (errCode, errMsg) {// TODO});// 注册监听器,将 listener 绑定到 trtcCloud 实例trtcCloud.registerListener(listener);
if (!(await Permission.camera.request().isGranted) || !(await Permission.microphone.request().isGranted)) { print('You need to obtain audio and video permission to enter'); return; }


enterRoom 接口函数即可进入房间。trtcCloud.enterRoom(TRTCParams(sdkAppId: sdkAppId, // 请替换为您的 SDKAppIDuserId: "userId", // 请替换为您的 useriduserSig: '', // 请替换为您的 userSigrole: TRTCRoleType.anchor,roomId: 123123, // 请替换为您的 roomId),TRTCAppScene.live);
trtcCloud.enterRoom(TRTCParams(sdkAppId: sdkAppId, // 请替换为您的 SDKAppIDuserId: "userId", // 请替换为您的 useriduserSig: '', // 请替换为您的 userSigrole: TRTCRoleType.audience,roomId: 123123, // 请替换为您的 roomId),TRTCAppScene.live);
import 'package:tencent_rtc_sdk/trtc_cloud_video_view.dart';
TRTCCloudVideoView(key: valueKey,onViewCreated: (viewId) {localViewId = viewId;// TODO},),
viewId 为视频渲染控件 TRTCCloudVideoView 的唯一标识符。您可以以您想要的方式存储该标识符。此处使用 localViewId 来存储,用以后续渲染本地采集的视频流。startLocalPreview 打开摄像头预览之前,您可以通过调用接口 setLocalRenderParams 来设置本地预览的渲染参数。// 设置本地预览渲染参数trtcCloud.setLocalRenderParams(TRTCRenderParams(fillMode: TRTCVideoFillMode.fill,mirrorType: TRTCVideoMirrorType.auto,rotation: TRTCVideoRotation.rotation0,),);// 对前置摄像头采集内容进行本地预览trtcCloud.startLocalPreview(true, localViewId);// 对后置摄像头采集内容进行本地预览trtcCloud.startLocalPreview(false, localViewId);
stopLocalPreview关闭摄像头预览并停止推送本地视频信息。trtcCloud.stopLocalPreview();
TXDeviceManager 来完成“切换前后摄像头”、“设置对焦模式”、“闪光灯”等设备扩展功能的使用。import 'package:tencent_rtc_sdk/tx_device_manager.dart';
// 获取设备管理器实例TXDeviceManager manager = trtcCloud.getDeviceManager();// 判断是否为前置摄像头if (manager.isFrontCamera()) {// 切换为后置摄像头manager.switchCamera(false);} else {// 切换为前置摄像头manager.switchCamera(true);}
// 获取设备管理器实例TXDeviceManager manager = trtcCloud.getDeviceManager();// 设备是否支持自动识别人脸位置if (manager.isAutoFocusEnabled()) {// 开启自动对焦功能manager.enableCameraAutoFocus(true);} else {// 关闭自动对焦功能manager.enableCameraAutoFocus(false);}
// 获取设备管理器实例TXDeviceManager manager = trtcCloud.getDeviceManager();// 切换后置摄像头时可开启闪光灯manager.enableCameraTorch(true);// 关闭闪光灯manager.enableCameraTorch(false);
startLocalAudio 来开启麦克风采集,该接口需要您通过 quality 参数确定采集模式,建议根据您的需求选择以下其中一个适合您项目的模式。// 开启麦克风采集,设置当前场景为:语音模式// 具有高的噪声抑制能力,有强有弱的网络阻力trtcCloud.startLocalAudio(TRTCAudioQuality.speech);
// 开启麦克风采集,设置当前场景为:音乐模式// 为获得高保真度,低音质损失,建议配合专业声卡使用trtcCloud.startLocalAudio(TRTCAudioQuality.music);
stopLocalAudio关闭麦克风采集并停止推送本地音频信息。trtcCloud.stopLocalAudio();
onUserVideoAvailable(userId, true)通知时,表示该路画面已经有可播放的视频帧到达。denny,预计要将用户 denny 的视频流渲染到唯一标识符为 remoteViewId 的 TRTCCloudVideoView 控件中。startRemoteView 来播放远端用户的视频画面。// 播放远端用户 denny 的主流视频画面trtcCloud.startRemoteView("denny", TRTCVideoStreamType.big,remoteViewId);
stopRemoteView 停止某个远端用户的视频,也可以通过接口 stopAllRemoteView 停止播放所有远端用户的视频。// 停止播放远端用户 denny 的主流视频画面trtcCloud.stopRemoteView("denny", TRTCVideoStreamType.big);// 停止播放所有远端用户的视频画面trtcCloud.stopAllRemoteView();
muteRemoteAudio/muteAllRemoteAudio选择播放或停止远端声音。// 仅静音远端用户 dennytrtcCloud.muteRemoteAudio("denny", true);// 静音所有远端用户trtcCloud.muteAllRemoteAudio(true);
// 取消静音远端用户 dennytrtcCloud.muteRemoteAudio("denny", false);// 取消静音所有远端用户trtcCloud.muteAllRemoteAudio(false);
exitRoom 退出当前的房间:trtcCloud.exitRoom();
onExitRoom 回调事件通知您。TRTCCloudListener listener = TRTCCloudListener(onExitRoom: (reason) {// TODO});trtcCloud.registerListener(listener);
文档反馈