产品动态
产品近期公告
关于 TRTC Live 正式上线的公告
关于TRTC Conference 正式版上线的公告
Conference 商业化版本即将推出
关于多人音视频 Conference 开启内测公告
关于音视频通话 Call 正式版上线的公告
关于腾讯云音视频终端 SDK 播放升级及新增授权校验的公告
关于 TRTC 应用订阅套餐服务上线的相关说明

trtc-electron-sdk 安装到您现有的项目中:npm install trtc-electron-sdk --save
trtc-electron-sdk 实例:import TRTCCloud from 'trtc-electron-sdk';let trtcCloud = new TRTCCloud();
onError 事件:// 错误通知是要监听的,需要捕获并通知用户let onError = function(err) {console.error(err);}trtcCloud.on('onError',onError);
参数 | 类型 | 说明 | 示例 |
sdkAppId | 数字 | 1400000123 | |
userId | 字符串 | 只允许包含大小写英文字母(a-z、A-Z)、数字(0-9)及下划线和连词符。建议结合业务实际账号体系自行设置。 | test_user_001 |
userSig | 字符串 | eJyrVareCeYrSy1SslI... | |
roomId | 数字 | 数字类型的房间号。如果您想使用字符串形式的房间号,请使用 TRTCParams 中的 strRoomId。 | 29834 |
import {TRTCParams,TRTCRoleType} from "trtc-electron-sdk/liteav/trtc_define";let param = new TRTCParams();param.sdkAppId = 1400000123;param.roomId = 29834;param.userId = 'test_user_001';param.userSig = 'eJyrVareCeYrSy1SslI...';param.role = TRTCRoleType.TRTCRoleAnchor; // 设置角色为"主播"
setLocalViewFillMode() 可以设定本地视频画面的显示模式:TRTCVideoFillMode.TRTCVideoFillMode_Fill: 模式表示填充,画面可能会被等比放大和裁剪,但不会有黑边。TRTCVideoFillMode.TRTCVideoFillMode_Fit: 模式表示适应,画面可能会等比缩小以完全显示其内容,可能会有黑边。//示例代码:发布本地的音视频流trtcCloud.startLocalPreview(view);trtcCloud.startLocalAudio();trtcCloud.setLocalViewFillMode(TRTCVideoFillMode.TRTCVideoFillMode_Fill);//设置本地视频编码参数let encParam = new TRTCVideoEncParam();encParam.videoResolution = TRTCVideoResolution.TRTCVideoResolution_640_360;encParam.resMode = TRTCVideoResolutionMode.TRTCVideoResolutionModeLandscape;encParam.videoFps = 25;encParam.videoBitrate = 600;encParam.enableAdjustRes = true;trtcCloud.setVideoEncoderParam(encParam);
TRTCBeautyStyle.TRTCBeautyStyleSmooth: 光滑,适用于美女秀场,效果比较明显。TRTCBeautyStyle.TRTCBeautyStyleNature: 自然,磨皮算法更多地保留了面部细节,主观感受上会更加自然。// 开启美颜trtcCloud.setBeautyStyle(TRTCBeautyStyle.TRTCBeautyStyleNature, 5, 5, 5);
role为 **TRTCRoleType.TRTCRoleAnchor**,表示当前用户的角色为主播。roomId 的值为房间号的音视频房间,并指定 appScene 参数:TRTCAppScene.TRTCAppSceneLIVE:视频互动直播,支持平滑上下麦,切换过程无需等待,主播延时小于300ms;支持十万级别观众同时播放,播放延时低至1000ms。本文以该模式为例。TRTCAppScene.TRTCAppSceneVoiceChatRoom:语音互动直播,支持平滑上下麦,切换过程无需等待,主播延时小于300ms;支持十万级别观众同时播放,播放延时低至1000ms。 TRTCAppScene 的详细介绍,请参见 TRTCAppScene 。result 大于0时表示进房成功,具体数值为加入房间所消耗的时间,单位为毫秒(ms);当 result 小于0时表示进房失败,具体数值为进房失败的错误码。let onEnterRoom = function (result) {if (result > 0) {console.log(`onEnterRoom,进房成功,使用了 ${result} 秒`);} else {console.warn(`onEnterRoom: 进房失败 ${result}`);}};trtcCloud.on('onEnterRoom', onEnterRoom);let param = new TRTCParams();param.sdkAppId = 1400000123;param.roomId = 29834;param.userId = 'test_user_001';param.userSig = 'eJyrVareCeYrSy1SslI...';param.role = TRTCRoleType.TRTCRoleAnchor;trtcCloud.enterRoom(param, TRTCAppScene.TRTCAppSceneLIVE);
role 为 **TRTCRoleType.TRTCRoleAudience**,表示当前用户的角色为观众。enterRoom() 即可进入 TRTCParams 参数中 roomId 代指的音视频房间,并指定 appScene 参数:TRTCAppScene.TRTCAppSceneLIVE:视频互动直播。TRTCAppScene.TRTCAppSceneVoiceChatRoom:语音互动直播。userId,直接在进房成功后使用主播 userId 调用 startRemoteView(userId, view) 即可显示主播的画面。userId,观众端在进房成功后会收到 onUserVideoAvailable() 事件通知,使用回调中获取的主播 userId 调用 startRemoteView(userId, view) 便可显示主播的画面。<div id="video-container"></div><script>const videoContainer = document.querySelector('#video-container');const roomId = 29834;// 进房回调,当进房成功时,会触发此回调let onEnterRoom = function(result) {if (result > 0) {console.log(`onEnterRoom,进房成功,使用了 ${result} 秒`);} else {console.warn(`onEnterRoom: 进房失败 ${result}`);}};// 当主播开启/关闭摄像头推流时,会触发此回调let onUserVideoAvailable = function(userId, available) {if (available === 1) {let id = `${userId}-${roomId}-${TRTCVideoStreamType.TRTCVideoStreamTypeBig}`;let view = document.getElementById(id);if (!view) {view = document.createElement('div');view.id = id;videoContainer.appendChild(view);}trtcCloud.startRemoteView(userId, view);trtcCloud.setRemoteViewFillMode(userId, TRTCVideoFillMode.TRTCVideoFillMode_Fill);} else {let id = `${userId}-${roomId}-${TRTCVideoStreamType.TRTCVideoStreamTypeBig}`;let view = document.getElementById(id);if (view) {videoContainer.removeChild(view);}}};trtcCloud.on('onEnterRoom', onEnterRoom);trtcCloud.on('onUserVideoAvailable', onUserVideoAvailable);let param = new TRTCParams();param.sdkAppId = 1400000123;param.roomId = roomId;param.userId = 'test_user_001';param.userSig = 'eJyrVareCeYrSy1SslI...';param.role = TRTCRoleType.TRTCRoleAudience; // 设置角色为“观众”trtcCloud.enterRoom(param, TRTCAppScene.TRTCAppSceneLIVE);</script>
TRTCRoleType.TRTCRoleAnchor)。//示例代码:观众上麦trtcCloud.switchRole(TRTCRoleType.TRTCRoleAnchor);trtcCloud.startLocalAudio();trtcCloud.startLocalPreview(frontCamera, view);//示例代码:观众下麦trtcCloud.switchRole(TRTCRoleType.TRTCRoleAudience);trtcCloud.stopLocalAudio();trtcCloud.stopLocalPreview();
roomId和userId拼装成格式为{"roomId": 978,"userId": "userB"}的参数传递给接口函数。connectOtherRoom()与房间“002”中的主播 B 拉通跨房通话后, 房间“001”中的用户会收到主播 B 的onUserVideoAvailable(B, true)回调和onUserAudioAvailable(B, true)回调。 房间“002”中的用户会收到主播 A 的onUserVideoAvailable(A, true) 回调和onUserAudioAvailable(A, true)回调。
//示例代码:跨房连麦 PKlet onConnectOtherRoom = function(userId, errCode, errMsg) {if(errCode === 0) {console.log(`成功连上主播 ${userId} 的房间`);} else {console.warn(`连接其他主播房间失败:${errMsg}`);}};const paramJson = '{"roomId": "978","userId": "userB"}';trtcCloud.connectOtherRoom(paramJson);trtcCloud.on('onConnectOtherRoom', onConnectOtherRoom);
// 调用退房后请等待 onExitRoom 事件回调let onExitRoom = function (reason) {console.log(`onExitRoom, reason: ${reason}`);};trtcCloud.exitRoom();trtcCloud.on('onExitRoom', onExitRoom);
onExitRoom回调后再启动其它音视频 SDK,否则可能会遇到硬件占用问题。文档反馈