WebRTC is a free, open software project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.
To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.
The WebRTC initiative is a project supported by Google, Mozilla, and Opera, amongst others.
See here for instructions on how to get started developing with the native code.
For a detailed list of directories containing the native API header files, refer to the authoritative list.
- Official website: WebRTC.org
- Master source code repo: WebRTC Source
- Samples and reference apps: GitHub Repository
- Mailing list: Discuss WebRTC
- Continuous build: Build Console
- Coding style guide
- Code of conduct
- Reporting bugs
- Documentation
A complete testing framework for WebRTC applications built using native C++ code. This testbed enables:
- Automated peer connection testing between multiple endpoints
- Network condition simulation and testing
- Performance benchmarking and metrics collection
-
Install depot tools (Linux setup guide)
-
Create
.gclient
file in your root directory:solutions = [ { "url": "https://github.com/lgs96/native-webrtc-project.git", "managed": False, "name": "src", "deps_file": "DEPS", "custom_deps": {}, "custom_vars": {}, }, ] target_os = ["linux"] # Adjust based on your target platform
-
Sync dependencies:
gclient sync
-
Generate build files:
gn gen out/Default
-
Install additioanl dependencies
sudo apt-get install libwebsocket-dev
-
Build peer connection client:
ninja -C out/Default peerconnection_client
# Basic connection test
./out/Default/peerconnection_client --server={signaling_server} --room_id={room_id} --experiment_mode=real (or emulation), --y4m_path={your_file.y4m}
--server
: Signaling server address (default: localhost)--room_id
: Room identifier (default: auto-generated)--experiment_mode
: Real environment or emulation (default: real)--y4m_path
: Test video path (should be a y4m file) (default: square test video)