GStreamer
open source multimedia framework
Home
Features
News
Annual Conference
Planet (Blogs)
Download
Applications
Security Center
GitLab
Developers
Documentation
Mailing Lists
File a Bug
Bug Lists
Artwork
Follow @gstreamer on Twitter

Download GStreamer

If you're on Linux or a BSD variant, you can install GStreamer using your package manager.

For other platforms, specifically Windows, macOS, Android, and iOS, we provide binary releases in the form of official installers or tarballs maintained by the GStreamer project.

Windows

Binary releases in the form of MSI installers are available. The installers are split into runtime and development packages. For development, you will want to install both packages.

For each of the above listed targets, a zip file with .msm modules is available for integration into your own WiX-based app installer.

If you are not sure which to pick between MSVC and MinGW, just pick MSVC. However, do see the toolchain compatibility notes below which may affect you based on what toolchain your app will be built with.

NOTE: The library names in MSVC are different from MinGW; specifically the DLLs are of the form foo.dll instead of libfoo.dll.

NOTE: GstSharp .NET bindings require the MSVC binaries starting with 1.18.

NOTE: Some of the plugins shipped with the MSVC binaries link to non-gstreamer libraries built with MinGW because they are built with Autotools. See below for what this means for your application.

Older 1.x binary releases are also available.

Universal Windows Platform

Binary releases built to target the Universal Windows Platform (UWP). Used for shipping apps on the Windows Store, such as for an XBox, HoloLens 2, etc.

UWP apps cannot use plugins that use dependencies built with MinGW because of forbidden APIs. Hence, these plugins are omitted from the binaries.

Toolchain Compatibility Notes

On Windows, you can use a number of different toolchains and versions thereof, and it is not always obvious how these can be mixed and matched with the binaries provided above by GStreamer.

The first step is ensuring that you're using the correct architecture. You should not try to mix 32-bit code built with any toolchain with 64-bit code built with any toolchain.

Next, understand that since GStreamer is written mostly in C, all APIs exported by GStreamer libraries and plugins use C ABIs. Even plugins written in other languages such as Rust, C++, C#, Python, etc, are loaded using the C ABI.

This means you can consume the GStreamer binaries from any toolchain that uses the same C ABI. Using the same CRT (C Runtime) is better, but it's not always a requirement. Here's the matrix outlining the CRT used for each GStreamer version:

GStreamer version MinGW MSVC
1.14.x msvcrt.dll N/A
1.16.x msvcrt.dll ucrtbase.dll
1.18.x ucrtbase.dll ucrtbase.dll

This is the toolchain compatibility matrix with the stable releases:

App Toolchain 1.16 MinGW 1.16 MSVC 1.18 MinGW 1.18 MSVC
Visual Studio 2015 and newer (ucrtbase.dll) PARTIAL FULL FULL FULL
Visual Studio 2013 and older (msvcrt.dll) PARTIAL PARTIAL PARTIAL PARTIAL
MinGW (msvcrt.dll) FULL PARTIAL PARTIAL PARTIAL
MinGW-w64 (msvcrt.dll) FULL PARTIAL PARTIAL PARTIAL
MSYS2 MinGW-w64 (msvcrt.dll) FULL PARTIAL PARTIAL PARTIAL
Cygwin NONE NONE NONE NONE

FULL means full C compatibility, including debugging symbols.

PARTIAL means mixing the two should be fine as long as you are careful while passing memory across CRT boundaries.

NONE means fully unsupported, and will lead to crashes.

macOS

Binary releases in the form of .pkg framework installers are available. The installers are split into runtime and development packages. For development, you will want to install both packages.

GStreamer is also available on Homebrew, and you should be able to use that. However, please note that some plugins are not shipped by Homebrew, and you should avoid mixing Homebrew and the official installers on the same system.

Older 1.x binary releases are also available.

Android

Binary releases are available with each in the form of a single "universal" tarball with armv7, arm64, x86, and x86_64 architectures in subfolders.

The Android NDKs used by the stable releases are:

GStreamer version NDK Version
1.16.x r18b
1.18.x r21

The Android APIs targeted by the GStreamer 1.16.x and 1.18.x stable release(s) are:

Architecture API Targeted
armv7 v16 (Jelly Bean)
x86 v16 (Jelly Bean)
arm64 v21 (Lollipop)
x86_64 v21 (Lollipop)

Older 1.x binary releases are also available.

iOS

Binary releases that integrate into XCode are available in the form of a single "universal" package with fat library frameworks. Bitcode support is built-in and the target SDK version for 1.16.x was iOS 9.0, and for 1.18.x is 11.0.

Older 1.x binary releases are also available.

Linux and BSDs

All Linux distributions and many BSD variants provide packages of GStreamer. You will find these in your distribution's package repository.

Note that some distributions split the GStreamer plugins up further than the upstream sources. Additionally, some distributions do not include some plugins from the gst-plugins-bad package, or omit the gst-plugins-ugly and gst-libav packages entirely in their main repository for legal reasons.

Sources

For building the aforementioned binary releases, you need to use the Cerbero build aggregator maintained by the GStreamer project which supports Linux, macOS, and Windows.

For downloading each GStreamer module individually, check our modules page, or go straight to our source download directory.

Generally, you should not need to build from source yourself unless you need features that are only available in a newer version of GStreamer than is provided by your distribution or in the last stable release.

For doing GStreamer development, we recommend using the gst-build project which will aggregate all the GStreamer modules using Meson's subproject feature.


Report a problem on this page.