tencent cloud

Tencent Real-Time Communication

Release Notes and Announcements
Release Notes
Recent Product Announcement
TRTC Live (TUILiveKit) Product Launch Announcement
TRTC Conference Official Editions Launched
The commercial version of Conference is coming soon
Terms and Conditions Applicable to $9.9 Starter Package
Rules for the "First Subscription $100 Discount" Promotion
Announcement on the Start of Beta Testing for Multi-person Audio and Video Conference
TRTC Call Official Editions Launched
License Required for Video Playback in New Version of LiteAV SDK
TRTC to Offer Monthly Packages
Product Introduction
Overview
Concepts
Features
Strengths
Use Cases
Performance Statistics
Tencent RTC Quickplay: Experience Ultimate Real-Time Audio and Video Interaction!
Purchase Guide
Billing Overview
Free Minutes
Monthly subscription
Pay-as-you-go
TRTC Overdue and Suspension Policy
FAQs
Refund Instructions
User Tutorial
Free Demo
Call
Overview
Activate the Service
Run Demo
Integration
Offline Call Push
Conversational Chat
On-Cloud Recording
AI Noise Reduction
UI Customization
Calls integration to Chat
Additional Features
No UI Integration
Server APIs
Client APIs
Solution
ErrorCode
Release Notes
FAQs
Conference
Overview(TUIRoomKit)
Activate the Service (TUIRoomKit)
Run Demo(TUIRoomKit)
Integration(TUIRoomKit)
Screen Sharing (TUIRoomKit)
Schedule a meeting (TUIRoomKit)
In-meeting Call (TUIRoomKit)
UI Customization(TUIRoomKit)
Virtual Background (TUIRoomKit)
Conference Control (TUIRoomKit)
Cloud Recording (TUIRoomKit)
AI Noise Reduction (TUIRoomKit)
In-Conference Chat (TUIRoomKit)
Robot Streaming (TUIRoomKit)
Enhanced Features (TUIRoomKit)
Client APIs (TUIRoomKit)
Server APIs (TUIRoomKit)
FAQs (TUIRoomKit)
Error Code (TUIRoomKit)
SDK Update Log (TUIRoomKit)
Live
Billing of Video Live Component
Overview
Activating the Service (TUILiveKit)
Run Demo
No UI Integration
UI Customization
Live Broadcast Monitoring
Video Live Streaming
Voice Chat Room
Advanced Features
Client APIs
Server APIs
Error Codes
Release Notes
FAQs
RTC Engine
Activate Service
SDK Download
API Examples
Usage Guidelines
API Reference Manual
Advanced Features
AI Integration
Overview
Configure MCP Server
Install Skills
Integration Guide
FAQ
RTC RESTFUL API
History
Introduction
API Category
Room Management APIs
Stream mixing and relay APIs
On-cloud recording APIs
Data Monitoring APIs
Pull stream Relay Related interface
Web Record APIs
AI Service APIs
Cloud Slicing APIs
Cloud Moderation APIs
Making API Requests
Call Quality Monitoring APIs
Usage Statistics APIs
Data Types
Appendix
Error Codes
Console Guide
Application Management
Package Management
Usage Statistics
Monitoring Dashboard
Development Assistance
Solution
Real-Time Chorus
FAQs
Migration Guide
Billing
Features
UserSig
Firewall Restrictions
How to Downsize Installation Package
Android and iOS
Web
Flutter
Electron
TRTCCalling for Web
Audio and Video Quality
Others
Legacy Documentation
RTC RoomEngine SDK(Old)
Integrating TUIRoom (Web)
Integrating TUIRoom (Android)
Integrating TUIRoom (iOS)
Integrating TUIRoom (Flutter)
Integrating TUIRoom (Electron)
TUIRoom APIs
On-Cloud Recording and Playback (Old)
RTC Analytics Monthly Packages (Previous Version)
Protocols and Policies
Compliance
Security White Paper
Notes on Information Security
Service Level Agreement
Apple Privacy Policy: PrivacyInfo.xcprivacy
TRTC Policy
Privacy Policy
Data Processing And Security Agreement
Glossary

Android&iOS&Windows&Mac

PDF
Focus Mode
Font Size
Last updated: 2024-06-07 22:18:34
It is difficult for ordinary users to measure network quality. Before calls are made, we recommend that you test the network speed to get more accurate results on network quality.

Notes

To ensure call quality, do not run the test during a video call.
Speed testing consumes traffic and consequently generates a small traffic fee (almost negligible).

Supported Platforms

iOS
Android
macOS
Windows
Electron
Web
✓ (Reference: Detect Network Quality)

How Speed Testing Works




During speed testing, the SDK sends a batch of probe packets to the server node, measures the quality of return packets, and returns the testing result via a callback API.
The testing result can be used to optimize the SDK's server selection policy, so you are advised to run the test before the first call, which will help the SDK select the optimal server. If the result is unsatisfactory, you can show a UI message asking users to change to a better network.
The test result (TRTCSpeedTestResult) includes the following parameters:
Parameter
Type
Description
success
Success result
Whether the test is successful.
errMsg
Error message
Error message of bandwidth test.
ip
Server address
Testing server IP
quality
Network quality score
Network quality measured by the SDK. Lower packet loss and shorter RTT result in a higher network quality score.
upLostRate
Upstream packet loss rate
Value range: 0-1.0. `0.3` indicates that for every 10 data packets sent to the server, 3 may be lost.
downLostRate
Downstream packet loss rate
Value range: 0-1.0. `0.2` indicates that for every 10 data packets received from the server, 2 may be lost.
rtt
Latency
The time it takes for data to travel from the SDK to the server and back again. The shorter the RTT, the better. The normal range of RTT is 10-100 ms.
availableUpBandwidth
Upstream bandwidth
Estimated upstream bandwidth in Kbps. -1 indicates an invalid value.
availableDownBandwidth
Downstream bandwidth
Estimated downstream bandwidth in Kbps. -1 indicates an invalid value.

How to Test Speed

The speed test feature can be started through the startSpeedTest function of TRTCCloud. The speed test result will be called back through the callback function.
Objective-C
Java
C++
C#
// Sample code for starting speed testing. `sdkAppId` and `UserSig` are required. For how to get them, see Basic Features.
// The example below starts after login.
- (void)onLogin:(NSString *)userId userSig:(NSString *)userSid
{
TRTCSpeedTestParams *params;
// `sdkAppID` is the actual application ID obtained from the console.
params.sdkAppID = sdkAppId;
params.userID = userId;
params.userSig = userSig;
// Expected upstream bandwidth in Kbps. Value range: 10–5000. 0 indicates not to test
params.expectedUpBandwidth = 5000;
// Expected downstream bandwidth in Kbps. Value range: 10–5000. 0 indicates not to test
params.expectedDownBandwidth = 5000;
[trtcCloud startSpeedTest:params];
}
- (void)onSpeedTestResult:(TRTCSpeedTestResult *)result {
// The speed test result will be called back after the test is completed
}

// Sample code for starting speed testing. `sdkAppId` and `UserSig` are required. For how to get them, see Basic Features.
// The example below starts after login.
public void onLogin(String userId, String userSig)
{
TRTCCloudDef.TRTCSpeedTestParams params = new TRTCCloudDef.TRTCSpeedTestParams();
params.sdkAppId = GenerateTestUserSig.SDKAPPID;
params.userId = mEtUserId.getText().toString();
params.userSig = GenerateTestUserSig.genTestUserSig(params.userId);
params.expectedUpBandwidth = Integer.parseInt(expectUpBandwidthStr);
params.expectedDownBandwidth = Integer.parseInt(expectDownBandwidthStr);
// `sdkAppID` is the actual application ID obtained from the console.
trtcCloud.startSpeedTest(params);
}

// Listen for the test result. Inherit `TRTCCloudListener` and implement the following method.
void onSpeedTestResult(TRTCCloudDef.TRTCSpeedTestResult result)
{
// The speed test result will be called back after the test is completed
}

// Sample code for starting speed testing. `sdkAppId` and `UserSig` are required. For how to get them, see Basic Features.
// The example below starts after login.
void onLogin(const char* userId, const char* userSig)
{
TRTCSpeedTestParams params;
// `sdkAppID` is the actual application ID obtained from the console.
params.sdkAppID = sdkAppId;
params.userId = userid;
param.userSig = userSig;
// Expected upstream bandwidth in Kbps. Value range: 10–5000. 0 indicates not to test
param.expectedUpBandwidth = 5000;
// Expected downstream bandwidth in Kbps. Value range: 10–5000. 0 indicates not to test
param.expectedDownBandwidth = 5000;
trtcCloud->startSpeedTest(params);
}

// Listen for the testing result
void TRTCCloudCallbackImpl::onSpeedTestResult(
const TRTCSpeedTestResult& result)
{
// The speed test result will be called back after the test is completed
}

// Sample code for starting speed testing. `sdkAppId` and `UserSig` are required. For how to get them, see Basic Features.
// The example below starts after login.
private void onLogin(string userId, string userSig)
{
TRTCSpeedTestParams params;
// `sdkAppID` is the actual application ID obtained from the console.
params.sdkAppID = sdkAppId;
params.userId = userid;
param.userSig = userSig;
// Expected upstream bandwidth in Kbps. Value range: 10–5000. 0 indicates not to test
param.expectedUpBandwidth = 5000;
// Expected downstream bandwidth in Kbps. Value range: 10–5000. 0 indicates not to test
param.expectedDownBandwidth = 5000;
mTRTCCloud.startSpeedTest(params);
}

// Listen for the testing result
public void onSpeedTestResult(TRTCSpeedTestResult result)
{
// The speed test result will be called back after the test is completed
}


Speed Test Tool

If you don't want to call an API to test the network speed, you can use the network speed test tool for PC provided by TRTC to quickly get the network quality details.

Test metrics

Metric
Description
WiFi Quality
Wi-Fi signal reception quality
DNS RTT
Tencent Cloud testing domain DNS round-trip time (RTT)
MTR
MTR is a network speed test tool, which can detect the packet loss rate and latency between client and TRTC node and display the details of each hop in the route
UDP Loss
UDP packet loss rate between client and TRTC node
UDP RTT
UDP latency between client and TRTC node
Local RTT
Latency between client and local gateway
Upload
Estimated upstream bandwidth
Download
Estimated downstream bandwidth

Tool screenshots

Quick test:

Continuous test:



Help and Support

Was this page helpful?

Help us improve! Rate your documentation experience in 5 mins.

Feedback