/openwebrtc

A flexible cross-platform WebRTC client framework based on GStreamer

Primary LanguageCBSD 2-Clause "Simplified" LicenseBSD-2-Clause

OWR Logo

A flexible cross-platform WebRTC client framework based on GStreamer.

OpenWebRTC is built on the belief that the WebRTC standard would transcend the pure browser environment and that native apps, implementing the same protocols and API's, would become an important part of the WebRTC ecosystem. This is especially true on mobile platforms where native app distribution is often preferred over pure web apps. Native OpenWebRTC apps can either talk to other native apps or browsers that support WebRTC. OpenWebRTC can also provide the WebRTC-backend to web browsers.

Having independent, interoperable, implementations is important for the health of any standard, and WebRTC is no exception. The ambition of OpenWebRTC is to follow the WebRTC standard closely as it continues to evolve.

Architecture

OpenWebRTC was designed for flexibility and modularity. The bulk of the API layer is implemented in JavaScript, making it super fast to modify and extend with new functionality. Below is a simplified sketch of the architecture.

Simplified architecture

Applications built on top of OpenWebRTC will be interoperable with popular WebRTC-enabled browsers such as Chrome and Firefox.

Building

External programs to install

iOS

To build for the iOS platform Xcode and the command line tools needs to be installed on the computer.

Android

The NDK version r9d needs to be installed and the ndk-build program must be in the path. The latest SDK shall also be installed and the adb program be available in the path.

Extracting the code

Fork the OpenWebRTC git and then extract your local copy.

git clone https://github.com/<YourName>/openwebrtc.git --recursive
cd openwebrtc

Environment configuration

Before we can start building OpenWebRTC we need to build some tools. This is done in the bootstrap directory:

cd scripts/bootstrap
./bootstrap.sh -r osx
cd -

If you are using a Linux computer instead of a Mac exchange the "osx" argument above to "linux".

Build the external open source

The external open source that is used by OpenWebRTC framework is built separately using the following commands:

cd scripts/dependencies
./build-all.sh -r osx ios android ios-simulator
./deploy_deps.sh
cd -

The available target platforms when building on Mac can be seen above, if you are building on Linux the available target platforms are "linux" and "android".

Build OpenWebRTC

The OpenWebRTC framework is built using one command:

./build.sh -r osx ios android ios-simulator

The available target platform when building on Mac can be seen above, if you are building on Linux the available target platforms are "linux" and "android".

Now the OpenWebRTC framework is compiled and ready to be incorporated into your application.

Community

For support, questions and discussions:

Examples using OpenWebRTC

Bowser is a mobile browser that uses OpenWebRTC as a WebRTC back-end. As you can see here, Bowser is in fact a very thin layer of UI code on top of OpenWebRTC.

Before being released publicly, OpenWebRTC has been used by Ericsson Research to build several research prototypes such as this and that.

License

OpenWebRTC is released under BSD-2 clause. See LICENSE for details.