VideoCall
) and audio call (VoiceCall
) are the call modes, and interactive video streaming (Live
) and interactive audio streaming (VoiceChatRoom
) are the live streaming modes.
The call modes allow a maximum of 300 users in each TRTC room, and up to 50 of them can speak at the same time. The call modes are suitable for scenarios such as one-to-one video calls, video conferencing with up to 300 participants, online medical consultation, remote interviews, video customer service, and online Werewolf playing.SimpleDemo
SimpleDemo
.SimpleDemo
successfully, then you know how to install Electron in your project.trtc-electron-sdk
into your projecttrtc-electron-sdk
in your project.npm install trtc-electron-sdk --save
trtc-electron-sdk
instance:import TRTCCloud from 'trtc-electron-sdk';let trtcCloud = new TRTCCloud();
onError
event:// Error events must be listened for and captured, and error messages should be sent to users.let onError = function(err) {console.error(err);};trtcCloud.on('onError',onError);
TRTCParams
Parameter | Type | Description | Example |
sdkAppId | Number | 1400000123 | |
userId | String | Can contain only letters (a-z and A-Z), digits (0-9), underscores, and hyphens. We recommend you set it based on your business account system. | test_user_001 |
userSig | String | eJyrVareCeYrSy1SslI... | |
roomId | Number | Numeric room ID. For string-type room ID, use strRoomId in TRTCParams . | 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...';
userId
cannot be in the same room at the same time as it will cause a conflict.appScene
must be the same on each client. Inconsistent appScene
may cause unexpected problems.roomId
field in TRTCParams
. If the room does not exist, the SDK will create a room whose number is the value of roomId
.appScene
parameter according to your actual application scenario. Inappropriate appScene
values may increase stutter or reduce video clarity.TRTCAppScene.TRTCAppSceneVideoCall
.TRTCAppScene.TRTCAppSceneAudioCall
.result
is greater than 0, room entry succeeds, and the value of result
indicates the time (ms) room entry takes; if result
is less than 0, room entry fails, and the value is the error code for the failure.import TRTCCloud from 'trtc-electron-sdk';import { TRTCParams, TRTCAppScene } from "trtc-electron-sdk/liteav/trtc_define";let trtcCloud = new TRTCCloud();let onEnterRoom = function (result) {if (result > 0) {console.log(`onEnterRoom, room entry succeeded and took ${result} seconds`);} else {console.warn(`onEnterRoom: failed to enter room ${result}`);}};// Subscribe to the room entry eventtrtcCloud.on('onEnterRoom', onEnterRoom);// Enter room. If the room does not exist, the TRTC will create one.let param = new TRTCParams();param.sdkAppId = 1400000123;param.roomId = 29834;param.userId = 'test_user_001';param.userSig = 'eJyrVareCeYrSy1SslI...';trtcCloud.enterRoom(param, TRTCAppScene.TRTCAppSceneVideoCall);
userId
), or muteAllRemoteAudio(true) to mute all remote users. The SDK will stop pulling the audio data of the user(s).view
.TRTCVideoFillMode.TRTCVideoFillMode_Fill
: aspect fill. The image may be scaled up and cropped, but there are no black bars.TRTCVideoFillMode.TRTCVideoFillMode_Fit
: aspect fit. The image may be scaled down to ensure that it’s displayed in its entirety, and there may be black bars.userId
or stopAllRemoteView() to block the video of all remote users. The SDK will stop pulling the video data of the user(s).<div id="video-container"></div><script>import TRTCCloud from 'trtc-electron-sdk';const trtcCloud = new TRTCCloud();const videoContainer = document.querySelector('#video-container');const roomId = 29834;/*** Whether camera video is enabled* @param {number} uid - user ID* @param {boolean} available - Whether video is enabled**/let onUserVideoAvailable = function (uid, available) {console.log(`onUserVideoAvailable: uid: ${uid}, available: ${available}`);if (available === 1) {let id = `${uid}-${roomId}-${TRTCVideoStreamType.TRTCVideoStreamTypeBig}`;let view = document.getElementById(id);if (!view) {view = document.createElement('div');view.id = id;videoContainer.appendChild(view);}trtcCloud.startRemoteView(uid, view);trtcCloud.setRemoteViewFillMode(uid, TRTCVideoFillMode.TRTCVideoFillMode_Fill);} else {let id = `${uid}-${roomId}-${TRTCVideoStreamType.TRTCVideoStreamTypeBig}`;let view = document.getElementById(id);if (view) {videoContainer.removeChild(view);}}};// Sample code: subscribe to or unsubscribe from the video image of a remote user based on the notification receivedtrtcCloud.on('onUserVideoAvailable', onUserVideoAvailable);</script>
startRemoteView()
to subscribe to the video stream immediately after receiving the onUserVideoAvailable()
callback, the SDK will stop pulling the remote video within 5 seconds.TRTCVideoFillMode.TRTCVideoFillMode_Fill
: aspect fill. The image may be scaled up and cropped, but there are no black barsTRTCVideoFillMode.TRTCVideoFillMode_Fit
: aspect fit. The image may be scaled down to ensure that it’s displayed in its entirety, and there may be black bars.// Sample code: publish the local audio/video streamtrtcCloud.startLocalPreview(view);trtcCloud.setLocalViewFillMode(TRTCVideoFillMode.TRTCVideoFillMode_Fill);trtcCloud.startLocalAudio();// Set local video encoding parameterslet 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);
// Please wait for the `onExitRoom` event callback after calling the room exit API.let onExitRoom = function (reason) {console.log(`onExitRoom, reason: ${reason}`);};trtcCloud.exitRoom();trtcCloud.on('onExitRoom', onExitRoom);
onExitRoom
callback to start other SDKs; otherwise the device busy error may occur.
Was this page helpful?