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 live streaming modes allow a maximum of 100,000 concurrent users in each room with smooth mic on/off. Co-anchoring latency is kept below 300 ms and watch latency below 1,000 ms. The live streaming modes are suitable for use cases such as low-latency interactive live streaming, interactive classrooms for up to 100,000 participants, video dating, online education, remote training, and mega-scale conferencing.switchRole
) to “anchor”. The switching process involves users being migrated from proxy servers to access servers. TRTC’s low-latency streaming and smooth mic on/off technologies help keep this process short.Podfile
file in the root directory of your project and add the code below.Podfile
file in the directory, run the pod init
command to create one and add the code below.target 'Your Project' dopod 'TXLiteAVSDK_TRTC'end
pod install
Info.plist
file.Key | Value |
Privacy - Camera Usage Description | The reason for requesting camera permission, for example, “camera access is required to capture video” |
Privacy - Microphone Usage Description | The reason for requesting mic permission, for example, “mic access is required to capture audio” |
TRTCCloud
instance.// Create a `TRTCCloud` instance_trtcCloud = [TRTCCloud sharedInstance];_trtcCloud.delegate = self;
delegate
to subscribe to event callbacks and listen for event and error notifications.// Error events must be listened for and captured, and error messages should be sent to users.- (void)onError:(TXLiteAVError)errCode errMsg:(NSString *)errMsg extInfo:(NSDictionary *)extInfo {if (ERR_ROOM_ENTER_FAIL == errCode) {[self toastTip:@"Failed to enter room"];[self.trtcCloud exitRoom];}}
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 |
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.Fill
: aspect fill. The image may be scaled up and cropped, but there are no black bars.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 stream[self.trtcCloud startLocalPreview:_isFrontCamera view:self.view];// Set local video encoding parametersTRTCVideoEncParam *encParams = [TRTCVideoEncParam new];encParams.videoResolution = TRTCVideoResolution_640_360;encParams.videoBitrate = 550;encParams.videoFps = 15;[self.trtcCloud setVideoEncoderParam:encParams];
Smooth
: smooth. This style features more obvious skin smoothing effect and is typically used by influencers.Nature
: natural. This style retains more facial details and is more natural.Pitu
: this style is supported only in the Professional Edition.5
is recommended).5
is recommended).role
field in TRTCParams to TRTCRoleType.anchor
to take the role of “anchor”.appScene
, and a room whose ID is the value of the roomId
field in TRTCParams
will be created.TRTCAppScene.LIVE
: the interactive video streaming mode, which is used in the example of this documentTRTCAppScene.voiceChatRoom
: the interactive audio streaming moderesult
is greater than 0, room entry succeeds, and the value 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.- (void)enterRoom() {TRTCParams *params = [TRTCParams new];params.sdkAppId = SDKAppID;params.roomId = _roomId;params.userId = _userId;params.role = TRTCRoleAnchor;params.userSig = [GenerateTestUserSig genTestUserSig:params.userId];[self.trtcCloud enterRoom:params appScene:TRTCAppSceneLIVE];}- (void)onEnterRoom:(NSInteger)result {if (result > 0) {[self toastTip:@"Entered room successfully"];} else {[self toastTip:@"Failed to enter room"];}}
role
field in TRTCParams to TRTCRoleType.audience
to take the role of “audience”.roomId
field in TRTCParams
, specifying appScene
.TRTCAppScene.LIVE
: the interactive video streaming mode, which is used in the example of this documentTRTCAppScene.voiceChatRoom
: the interactive audio streaming modeuserId
, call startRemoteView(userId, view: view) with the anchor’s userId
passed in to play the anchor's video.userId
, find the anchor’s userId
in the onUserVideoAvailable() callback, which you will receive after room entry, and call startRemoteView(userId, view: view) with the anchor’s userId
passed in to play the anchor’s video.TRTCRoleType.TRTCRoleAnchor
).// Sample code: start co-anchoring[self.trtcCloud switchRole:TRTCRoleAnchor];[self.trtcCloud startLocalAudio:TRTCAudioQualityMusic];[self.trtcCloud startLocalPreview:_isFrontCamera view:self.view];// Sample code: end co-anchoring[self.trtcCloud switchRole:TRTCRoleAudience];[self.trtcCloud stopLocalAudio];[self.trtcCloud stopLocalPreview]
roomId
and userId
of anchor B in the format of {"roomId": 978,"userId": "userB"}
to the API.connectOtherRoom()
to call anchor B in room “002” successfully all users in room "001" will receive the onUserVideoAvailable(B, available: true)
and onUserAudioAvailable(B, available: true)
callbacks, and all users in room "002" will receive the onUserVideoAvailable(A, available: true)
and onUserAudioAvailable(A, available: true)
callbacks.// Sample code: cross-room competitionNSMutableDictionary * jsonDict = [[NSMutableDictionary alloc] init];[jsonDict setObject:@([_otherRoomIdTextField.text intValue]) forKey:@"roomId"];[jsonDict setObject:_otherUserIdTextField.text forKey:@"userId"];NSData* jsonData = [NSJSONSerialization dataWithJSONObject:jsonDict options:NSJSONWritingPrettyPrinted error:nil];NSString* jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];[self.trtcCloud connectOtherRoom:jsonString];
// Please wait for the `onExitRoom` callback after calling the room exit API.[self.trtcCloud exitRoom];- (void)onExitRoom:(NSInteger)reason {NSLog(@"Exited room: reason: %ld", reason)}
onExitRoom
callback to start other SDKs; otherwise, the device busy error may occur.
Was this page helpful?