January 28, 2021
Earlier this week, WebRTC became an official W3C and IETF standard for enabling real time communication (RTC) between browsers and other mobile applications via a set of simple APIs. GStreamer has a powerful and rapidly maturing WebRTC implementation. So, the obvious question is: how do we build this on Windows?
There are two ways of building GStreamer on Windows - either with cerbero or gst-build. For a simple GStreamer install with WebRTC support, cerbero will just work out of the box. However, for a more flexible solution that builds significantly faster, we use
gst-build. Unfortunately, it's not just a matter of using gst-build. You also need the OpenSSL dependency so that
gst-build will build the WebRTC element.
Here's how to add this support:
If you haven't already followed my previous guide on GStreamer and Windows, please follow the steps there to build GStreamer from source.
Next, we will need to clone and build OpenSSL
git clone https://github.com/openssl/openssl.git
c:/bin/OpenSSlas our OpenSSL install directory, but this is easily changed to the directory of your choice.
> cd openssl > set PATH=%PATH%;C:\Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin > perl Configure VC-WIN64A --prefix=c:/bin/OpenSSL > nmake > nmake test > nmake install
Now, download the OpenSSL
pkg-config folder here and place it in the
lib directory of your OpenSSL install directory.
Next, we need to add the OpenSSL install directory to the
PKG_CONFIG_PATH environment variable that we set in my previous post:
PKG_CONFIG_PATH equal to
We also need to add the OpenSSL bin directory
C:\bin\OpenSSL\bin to the Windows path.
And finally, we open a new 64 bit VS command shell and execute the following:
> cd %SOURCE_DIR%gst-build > meson build --reconfigure --prefix=%GSTREAMER_1_0_ROOT_X86_64% -Dtls=disabled -Ddevtools=disabled && ninja -C build install
> gst-inspect-1.0 webrtcbin
should find the webrtcbin plugin!
If you have any questions about GStreamer WebRTC support on Windows or any other platform, please contact us!
This summer, Christoph Haag and I had the pleasure of taking part in Google Summer of Code as mentors for xrdesktop, the Open Source project…
Earlier this year, from January to April 2021, I worked on adding support for stateless decoders for GStreamer as part of a multimedia internship…
In our previous post, we presented a project backed by INVEST-AI which introduces a multi-stage neural network-based solution. Now let's…
Initiated as a joint effort by the Google Chrome OS team and Collabora, the recent KernelCI hackfest brought the addition of new tests including…
There's a lot that has happened in the world of Zink since my last update, so let's see if I can bring you up to date on the most important…
Panfrost, the open source driver for Arm Mali, now supports OpenGL ES 3.1 on both Midgard (Mali T760 and newer) and Bifrost (Mali G31, G52,…