bot-1.0.11 is not a library.
Videocall Synthetic Client Bot
Enhanced bot that streams synthetic audio and video to videocall-rs for load testing and scale validation.
Features
- WebTransport Client: Connects using WebTransport instead of WebSocket
- Audio Streaming: Loops WAV files and encodes to Opus (50fps, 20ms packets)
- Video Streaming: Cycles through JPEG images and sends mock video packets (30fps)
- Per-Client Configuration: Individual audio/video settings per client
- Linear Ramp-up: Configurable delay between client starts
- Multi-Client Support: Run multiple synthetic clients per container
Configuration
Option 1: YAML Configuration File (Recommended)
Create a config.yaml
file:
ramp_up_delay_ms: 1000
server_url: "https://webtransport-us-east.webtransport.video"
clients:
- user_id: "bot001"
meeting_id: "test-room"
enable_audio: true
enable_video: false
- user_id: "bot002"
meeting_id: "test-room"
enable_audio: false
enable_video: true
Then run:
BOT_CONFIG_PATH=config.yaml
Option 2: Environment Variables (Backwards Compatible)
N_CLIENTS=3
SERVER_URL="https://webtransport-us-east.webtransport.video"
ROOM="test-room"
CLIENT_0_ENABLE_AUDIO=true
CLIENT_0_ENABLE_VIDEO=false
CLIENT_1_ENABLE_AUDIO=false
CLIENT_1_ENABLE_VIDEO=true
CLIENT_2_ENABLE_AUDIO=true
CLIENT_2_ENABLE_VIDEO=true
Assets
The bot includes pre-loaded media assets:
- Audio:
BundyBests2.wav
- Looped and encoded to Opus - Video:
output_120.jpg
tooutput_124.jpg
- Cycled as mock video frames
Usage Examples
Test Audio-Only Clients
BOT_CONFIG_PATH=config.yaml RUST_LOG=info
Quick 10-Client Test
N_CLIENTS=10 ROOM="load-test"
Docker Build
Media Protocol
- Audio: 50fps (20ms Opus packets) following neteq_player.rs pattern
- Video: 30fps (~33ms packets) with mock VP9 data
- Transport: WebTransport unidirectional streams
- Format: videocall-types protobuf MediaPacket
TODO
- Add proper VP9 encoding (currently sends mock data)
- Add Helm chart for Kubernetes deployment
- Add metrics collection and Prometheus export
- Add graceful shutdown handling
- Add configurable test duration
Development
Compile and check:
Run with debug logging:
RUST_LOG=debug