For the past 4 years, Tim and I have spent thousands of hours on better Windows support for GStreamer. Starting in May 2016 when I first wrote about this and then with the first draft of the work before it was revised, updated, and upstreamed.
Since then, we've worked tirelessly to improve Windows support in GStreamer with patches to many projects such as the Meson build system, GStreamer's Cerbero meta-build system,
and writing build files for several non-GStreamer projects such as x264, openh264, ffmpeg, zlib, bzip2, libffi,
glib, fontconfig, freetype, fribidi, harfbuzz, cairo, pango, gtk, libsrtp, opus, and
many more that I've forgotten.
More recently, Seungha has also been working on new GStreamer elements for Windows such as d3d11, mediafoundation, wasapi2, etc. Sometimes we're able to find someone to sponsor all this work, but most of the time it's on our own dime.
Most of this has been happening in the background; noticed only by people who follow GStreamer development. I think more people should know about the work that's been happening upstream, and the official and supported ways to build GStreamer on Windows. Searching for this on Google can be a very confusing experience with the top results being outdated links or just plain clickbait.
So here's an overview of your options when you want to use GStreamer on Windows:
Installing GStreamer on Windows
GStreamer has released MinGW binary installers for Windows since the early 1.0 days using the Cerbero meta-build system which was created by
Andoni for the non-upstream "GStreamer SDK" project, which was based on GStreamer 0.10.
Today it supports building GStreamer with both MinGW and Visual Studio, and even supports outputting
UWP packages. So you can actually go and download all of those from the download page:
This is the easiest way to get started with GStreamer on Windows.
Building GStreamer yourself for Deployment
If you need to build GStreamer with a custom configuration for deployment, the easiest option is to use Cerbero, which is a meta-build system. It will download all the dependencies for you (including most of the build-tools), build them with Autotools, CMake, or Meson (as appropriate), and output a neat little MSI installer.
The README contains all the information you need, including screenshots for how to set things up:
As of a few days ago, after months of work the native Cerbero Windows builds have also been integrated into our
Continuous Integration pipeline that runs on every merge request, which further improves the quality of our Windows support. We already had native Windows CI using gst-build, but this increases our coverage.
Contributing to GStreamer on Windows
If you want to contribute to GStreamer from Windows, the best option is to clone the gstreamer
monorepo (derived from gst-build which was created by
Thibault), which is basically a meson 'wrapper' project that has all the gstreamer repositories aggregated as subprojects. Once again, the README file is pretty easy to follow and has screenshots for how to set things up:
It's All Upstream.
You don't need any special steps, and you don't need to read complicated blog posts to build GStreamer on Windows. Everything is upstream.
This post previously contained examples of such articles and posts that are spreading misinformation, but I have removed those paragraphs after discussion with the people who were responsible for them, and to keep this post simple. All I can hope is that it doesn't happen again.