Engine Configuration
Quick Reference
The RTC engine provides the following configurable parameters:
Platform | Configuration Item | Default Value |
---|---|---|
All | Auto-reconnect | Enabled |
All | Stats report callback interval | 1000ms |
All | Audio initialization - Codec type | Opus |
Android | Audio initialization - Audio source | Voice communication |
Android | Audio initialization - Sample rate | 16000 |
Android | Audio initialization - Stereo | Enabled |
Android | Audio initialization - Microphone capture | Enabled |
All | Video initialization - Simulcast | Enabled |
Android | Video initialization - Hardware encoding | Enabled |
Android | Video initialization - Hardware decoding | Enabled |
Android | Video initialization - High compression encoding | Disabled |
Android | Video initialization - Hardware encoder frame rate | 30 Fps |
Android | Video initialization - Texture-based capture/decoding | Enabled |
Auto-reconnect
Auto-reconnect is enabled by default. Disable it during engine initialization:
RCRTCEngineSetup setup = RCRTCEngineSetup.create(reconnectable: false);
engine = RCRTCEngine.create(setup);
Stats Report Callback Interval
The default callback interval is 1000ms (minimum 100ms). Note that shorter intervals may impact performance.
Modify during initialization:
/// Set callback interval to 2 seconds
RCRTCEngineSetup setup = RCRTCEngineSetup.create(statsReportInterval: 2000);
engine = RCRTCEngine.create(setup);
Audio Initialization
Modify Audio Codec Type
Supports PCMU and OPUS (default: OPUS). Configure during initialization:
/// Set audio codec to PCMU
RCRTCAudioSetup audioSetup = RCRTCAudioSetup.create(codec: RCRTCAudioCodecType.pcmu);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(audioSetup: audioSetup);
engine = RCRTCEngine.create(setup);
Modify Audio Source
Default source: Voice communication. Android-only configuration:
/// Set audio source to microphone
RCRTCAudioSetup audioSetup = RCRTCAudioSetup.create(audioSource: RCRTCAudioSource.mic);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(audioSetup: audioSetup);
engine = RCRTCEngine.create(setup);
RCRTCAudioSource
maps to Android's MediaRecorder.AudioSource
.
Modify Sample Rate
Supported rates: 8000, 16000, 32000, 44100, 48000 (default: 16000). Android-only:
/// Set sample rate to 32000
RCRTCAudioSetup audioSetup = RCRTCAudioSetup.create(audioSampleRate: 32000);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(audioSetup: audioSetup);
engine = RCRTCEngine.create(setup);
Enable/Disable Stereo
Enabled by default. Disable during initialization (Android-only):
RCRTCAudioSetup audioSetup = RCRTCAudioSetup.create(enableStereo: false);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(audioSetup: audioSetup);
engine = RCRTCEngine.create(setup);
Enable/Disable Microphone Capture
Enabled by default. Disable during initialization (Android-only):
RCRTCAudioSetup audioSetup = RCRTCAudioSetup.create(enableMicrophone: false);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(audioSetup: audioSetup);
engine = RCRTCEngine.create(setup);
Once disabled, microphone capture cannot be re-enabled during the engine's lifecycle.
Video Initialization
Enable/Disable Simulcast
Enabled by default. Disable during initialization:
RCRTCVideoSetup videoSetup = RCRTCVideoSetup.create(enableTinyStream: false);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(videoSetup: videoSetup);
engine = RCRTCEngine.create(setup);
Enable/Disable Hardware Encoding
Enabled by default. Disable during initialization (Android-only):
RCRTCVideoSetup videoSetup = RCRTCVideoSetup.create(enableHardwareEncoder: false);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(videoSetup: videoSetup);
engine = RCRTCEngine.create(setup);
Enable/Disable Hardware Decoding
Enabled by default. Disable during initialization (Android-only):
RCRTCVideoSetup videoSetup = RCRTCVideoSetup.create(enableHardwareDecoder: false);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(videoSetup: videoSetup);
engine = RCRTCEngine.create(setup);
Enable/Disable High Compression Encoding
Disabled by default. Enable during initialization (Android-only):
RCRTCVideoSetup videoSetup = RCRTCVideoSetup.create(enableHardwareEncoderHighProfile: true);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(videoSetup: videoSetup);
engine = RCRTCEngine.create(setup);
High compression encoding may cause compatibility issues. Use with caution.
Configure Hardware Encoder Frame Rate
Range: 0-30 FPS (default: 30). Android-only configuration:
/// Set hardware encoder frame rate to 25 FPS
RCRTCVideoSetup videoSetup = RCRTCVideoSetup.create(hardwareEncoderFrameRate: 25);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(videoSetup: videoSetup);
engine = RCRTCEngine.create(setup);
Enable/Disable Texture-based Capture/Decoding
Enabled by default. Disable during initialization (Android-only):
RCRTCVideoSetup videoSetup = RCRTCVideoSetup.create(enableTexture: false);
RCRTCEngineSetup setup = RCRTCEngineSetup.create(videoSetup: videoSetup);
engine = RCRTCEngine.create(setup);
When disabled, capture/decoding will use YUV data format. Recommended for Android 5.0+ devices for better compatibility.