Native build of Google's webrtc library.
Native build of Google’s webrtc library. The library is also packaged with BoringSSL and libyuv.
By default, libwebrtc is built with non-free codecs. To build without them, change the following flags in generate_ninja_files.bash and generate_ninja_files.bat.
rtc_use_h264=false
proprietary_codecs=false
ffmpeg_branding="Chromium"
sudo apt-get install ninja-build cmake build-essential libssl-dev libboost-all-dev
sudo apt-get install libglib2.0-dev libgtk-3-dev libpulse-dev libasound2-dev
# For cross compiling
sudo apt-get install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu
sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
# XCode and homebrew must be installed first.
brew install ninja
# Create build directory
mkdir build
# Go to build directory
cd build
# Run CMake with arguments
cmake ../ [-DCMAKE_BUILD_TYPE=Release|Debug] [-DCMAKE_BUILD_ARCHITECTURE=arm32|arm64|amd64|win64|osx64]
# Parallel build
make -j
# will copy to dist directory
make install
Building on Windows is not supported yet for recent versions of WebRTC.
You can submit a PR to help with this if you wish.
If you want to build on Windows, you can use the tag 4389.e7d9f7.130
.
There is also a prebuilt version of the library available in the releases section on GitHub.
ninja.exe
in 3rdParty/webrtc_native/
Control Panel
-> Programs
-> Programs and Features
Windows Software Development Kit
, and choose Change
Change
and click Next
Debugging Tools for Windows
and click Change
Add to PATH
for everything you install<python_dir>/python.exe
executable as <python_dir>/python3.exe
.python
, python3
, cmake
and git
are in your path.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem::LongPathsEnabled
is set to 0x1
CMD
prompt as Administrator, and execute git config --system core.longpaths true
Using a CMD prompt (not tested with powershell
or git-bash
or any other shell)
# Create build directory
mkdir build
# Go to build directory
cd build
# Run CMake with arguments
cmake .. -G "Ninja" [-DCMAKE_BUILD_TYPE=Release|Debug]
# Parallel build
ninja
# Copy to dist directory
ninja install
# Generate a zip archive in build/
ninja package
python.exe
has at least one space in itOn Windows, you will have to link any target that consumes this library to these additional Windows libraries:
secur32
winmm
dmoguids
wmcodecdspuuid
msdmo
strmiids
iphlpapi
If you don’t link against these libraries, your linker might see missing symbols like these ones:
__imp_timeGetTime
__imp_timeKillEvent
__imp_timeSetEvent
__imp_timeBeginPeriod
__imp_timeEndPeriod
CLSID_CWMAudioAEC
IID_IMediaObject
IID_IMediaBuffer
MoInitMediaType
MoFreeMediaType
InitializeSecurityContextA
AcquireCredentialsHandleA
__imp_FreeCredentialsHandle
CompleteAuthToken
__imp_DeleteSecurityContext
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
branch-head-number
branch-head-number
is the third number of the version (Version 120.0.6099.109 —> branch-head-number
= 6099)
git checkout branch-heads/<branch-head-number>
git rev-parse HEAD
branch-head-number
.first-6-digits-of-webrtc-commit-hash
.patch-number
To find the patch-number
for a given branch-head-number
, use the following web page:https://chromium.googlesource.com/chromium/src/+/branch-heads/<branch-head-number>/chrome/VERSION
GitHub Actions dropped support for MacOS 10.15 Catalina.
However, the latest tag might still work to build under MacOS 10.15.
There are also prebuilt versions of the library available in the releases section on GitHub, for tag version 5039.5df5b1.1
and earlier.
IntRoLab - Intelligent / Interactive / Integrated / Interdisciplinary Robot Lab