TRTC vs Agora: 1:1 Mobile Video Call Quality Comparison

10 min read
Oct 28, 2026

trtc vs agora.png

1. Summary​​

Both SDKs used the identical video source, matching configurations, and the same network impairment conditions — packet loss, bandwidth limitation, and jitter — applied with a professional hardware network impairment device, and receiver-displayed frame rate was compared. TRTC was tested with the video smoothness preference “Ensuring smoothness”, which prioritizes smooth motion over image clarity. This is an account-level setting; contact technical support to have it provisioned for your account before reproducing the test (see “2. Test Conditions”).

Three metrics where TRTC came out ahead in this test

  1. 4.8% higher average frame rate during the impairment period — averaged across the 8 weak-network scenarios, TRTC reached 25.4 fps during the impairment period vs. 24.3 fps for Agora (a difference of 1.1 fps). Scenario by scenario, TRTC led by more than 5% in 3 scenarios, while the gap stayed within 5% in the other 5
  2. Slightly higher frame rate on a normal network and during recovery — TRTC measured 29.6 fps on a normal network and 29.7 fps during the recovery period, vs. 28.7 fps and 28.7 fps for Agora, a gap of about 1 fps
  3. Shorter total freeze duration — across the 8 scenarios, TRTC was completely frozen (below 1 fps) for 7 s in total, vs. 11 s for Agora; time at a low frame rate (below 15 fps) was 30 s for both

2. Test Conditions

Both SDKs were tested under identical controlled conditions, using the same video source, encoding parameters and receiving device, and the test cases covered the same network impairments: packet loss, bandwidth limitation, and jitter.

Sending deviceiPhone 12 Pro
Receiving deviceiPhone 14
SDK version

TRTC SDK 13.5.0.21355

Agora SDK 4.7.0

TRTC configuration“Ensuring smoothness” video smoothness preference — smoothness prioritized over image clarity (account-level setting, provisioned by technical support)
Video configuration640×480, 30 fps, 800 Kbps target bitrate (identical for both, using the same source video file)
Network impairmentProfessional hardware network impairment device
Frame-rate measurement methodFrames actually rendered on the receiving device , rather than frame-rate values reported internally by the SDK. Any single-second sample above the configured 30 fps (frame catch-up after a freeze) is counted as 30 fps
How the impairment period is definedThe baseline is the average over 16–50 s of that scenario; the impairment onset is the first moment between 55 s and 65 s at which the frame rate drops below 80% of that baseline. The impairment period is the 30 s starting from that point, and everything after it is the recovery period

Test constraints

This report presents TRTC performance with the “Ensuring video smoothness” preference, i.e. the setting that prioritizes video smoothness over image clarity. This is an account-level setting that is disabled by default; to reproduce the test, contact TRTC Technical Support​ to have this setting provisioned for your account.

Test Scenarios and Timeline

ScenarioNetwork ConditionDuration
Normal NetworkNormal network conditions used as baseline90 s
Uplink 50% Packet Loss50% packet loss applied on the uplink30 s
Downlink 50% Packet Loss50% packet loss applied on the downlink30 s
Uplink 500 Kbps Cap500 Kbps bandwidth cap applied on the uplink30 s
Downlink 500 Kbps Cap500 Kbps bandwidth cap applied on the downlink30 s
Uplink 500 Kbps Cap + 25% Loss500 Kbps cap + 25% packet loss applied on the uplink30 s
Downlink 500 Kbps Cap + 25% Loss500 Kbps cap + 25% packet loss applied on the downlink30 s
Uplink 600 ms Jitter600 ms jitter applied on the uplink30 s
Downlink 600 ms Jitter600 ms jitter applied on the downlink30 s

Each scenario followed the same overall sequence: establish baseline → apply network impairment → remove impairment → observe recovery. In each weak-network scenario, impairment was applied at around the 60 s mark and removed 30 s later. Because the time the impairment device actually takes effect can differ from the script timer by a few seconds, all statistics are based on the impairment onset actually detected. The first 15 s after stream start and the last 5 s before the end are excluded.

3. Frame Rate Under Weak-Network Conditions

The table below gives the average frame rate during the impairment period of each scenario (30 s from the impairment onset), together with the frame rate retention relative to the pre-impairment baseline of that scenario. Retention shows how far each SDK fell from its own baseline, and the two baselines are not identical (about 29.5–29.9 fps for TRTC and 28.6–28.9 fps for Agora), so judge smoothness by the frame rate during the impairment period and treat retention as a reference only.

ScenarioTRTC BaselineTRTC ImpairmentTRTC RetentionAgora BaselineAgora ImpairmentAgora RetentionResult
Uplink 50% Packet Loss29.928.996.8%28.928.598.6%Approximately equal
Downlink 50% Packet Loss29.827.191.0%28.624.385.1%TRTC
Uplink 500 Kbps Cap29.927.291.0%28.925.588.1%TRTC
Downlink 500 Kbps Cap29.719.264.6%28.819.065.9%Approximately equal
Uplink 500 Kbps Cap + 25% Loss29.721.271.4%28.720.069.5%TRTC
Downlink 500 Kbps Cap + 25% Loss29.523.479.3%28.722.478.0%Approximately equal
Uplink 600 ms Jitter29.728.194.8%28.827.495.1%Approximately equal
Downlink 600 ms Jitter29.928.495.1%28.927.394.4%Approximately equal
Average—25.485.5%—24.384.3% 

Result criterion: a frame rate difference of more than 5% during the impairment period is recorded as a win for the SDK with the higher value; otherwise the scenario is marked “Approximately equal”. This 5% threshold is defined by this report to separate perceptible differences from test-to-test variation, and is not an industry standard.

Freeze Duration (within the impairment period; lower is better)

Freeze duration is counted from the frames actually rendered on the receiving device each second: a freeze means a rendered frame rate below 1 fps, and a low frame rate means below 15 fps (freezes included).

ScenarioTRTC Freeze (s)TRTC Low fps (s)Agora Freeze (s)Agora Low fps (s)
Uplink 50% Packet Loss0 s0 s0 s0 s
Downlink 50% Packet Loss0 s3 s3 s4 s
Uplink 500 Kbps Cap0 s2 s0 s5 s
Downlink 500 Kbps Cap4 s11 s4 s6 s
Uplink 500 Kbps Cap + 25% Loss2 s8 s3 s9 s
Downlink 500 Kbps Cap + 25% Loss1 s4 s1 s4 s
Uplink 600 ms Jitter0 s1 s0 s1 s
Downlink 600 ms Jitter0 s1 s0 s1 s
Total7 s30 s11 s30 s

4. Frame Rate Curves by Scenario

Y-axis: receiver frame rate (fps). X-axis: time within scenario. Both curves are aligned to 60 s using their own detected impairment onset, so 60–90 s corresponds to the impairment period in the table above. The curves show the raw rendered frame rate (including frame catch-up, not capped), smoothed with a centered five-point moving average, with the first 15 s after stream start and the last 5 s removed.

1. Normal Network

01_normal_network.png

5. Network Recovery

The recovery window runs from the impairment onset + 30 s to 5 s before the end of the test. A frame-rate recovery was counted when the receiver reached at least 90% of that scenario’s baseline fps for three consecutive 1 Hz samples.

ScenarioTRTC Recovery fpsTRTC Recovery timeAgora Recovery fpsAgora Recovery time
Uplink 50% Packet Loss29.80 s29.20 s
Downlink 50% Packet Loss29.90 s29.00 s
Uplink 500 Kbps Cap29.00 s29.00 s
Downlink 500 Kbps Cap30.00 s28.40 s
Uplink 500 Kbps Cap + 25% Loss29.60 s27.60 s
Downlink 500 Kbps Cap + 25% Loss29.50 s28.10 s
Uplink 600 ms Jitter30.00 s29.00 s
Downlink 600 ms Jitter30.00 s29.10 s
Average29.7 28.7 

Smoothness after recovery: TRTC averaged 29.7 fps during the recovery period, and Agora averaged 28.7 fps. In every scenario, both SDKs met the 90%-of-baseline recovery criterion at the start of the recovery window, with no visible difference in recovery speed.

6. CPU and Memory Usage

ScenarioTRTC CPUAgora CPUTRTC MemoryAgora Memory
Normal Network14.1%11.9%50.2 MB52.0 MB
Uplink 50% Packet Loss14.9%12.8%51.1 MB53.1 MB
Downlink 50% Packet Loss15.4%13.1%52.7 MB53.6 MB
Uplink 500 Kbps Cap15.7%12.5%53.0 MB63.7 MB
Downlink 500 Kbps Cap14.7%12.6%51.7 MB53.1 MB
Uplink 500 Kbps Cap + 25% Loss14.2%12.4%51.3 MB53.0 MB
Downlink 500 Kbps Cap + 25% Loss14.9%12.6%52.3 MB53.8 MB
Uplink 600 ms Jitter16.0%13.0%53.3 MB52.0 MB
Downlink 600 ms Jitter16.9%14.6%53.5 MB52.7 MB
Average15.2%12.8%52.1 MB54.1 MB

The measurement window is from 16 s to 5 s before the end of the test. The resource figures include receiver-side decoding, rendering, and demo overhead, not video encoding. CPU uses a single-core 100% reference (a six-core device can total 600%). Memory is the process phys_footprint; reported values include demo and receiver-side processing costs, so the averages help compare these measured implementations and should not be read as the exact additional CPU or RAM that either SDK would require in a different app.

All figures are based on measurements sampled on the receiving device, and the win / “Approximately equal” results follow the criterion defined in this report. These results apply specifically to the devices, SDK versions, video configuration, and network conditions described in this benchmark. Performance may vary with other devices, SDK releases, encoding settings, network routes, or application configurations.

Talk to us

We'd love to answer your questions and discuss how our RTC solutions can help meet your needs!
You can request demos, learn about pricing, or get personalized onboarding support. Complete the form below and one of our solution experts will be in touch shortly.
Submit
Submit that agree with the above information for contact purposes. Please read our Privacy Policy.