PipeWire – Improved Audio & Video Handling on Linux

PipeWire is a free and open source application created by Wim Taymans who works as the Principal Engineer at Red Hat and is the co-creator of the GStreamer multimedia framework.

It has been built from scratch with a particular focus on supporting Wayland and Flatpak in a bid to modernize audio and video processing. This includes support for single frame screenshots, screen capture, local desktop recording to video, and maybe even native casting of Wayland desktops to TVs and Monitors!

According to project’s website, its aim is to

greatly improve handling of audio and video under Linux. It aims to support the usecases currently handled by both PulseAudio and Jack and at the same time provide same level of powerful handling of Video input and output.

It also introduces a security model that makes interacting with audio and video devices from containerized applications easy, with supporting Flatpak applications being the primary goal. Alongside Wayland and Flatpak we expect PipeWire to provide a core building block for the future of Linux application development.

Features in PipeWire

  • FOSS: Free to download and use with source code available on GitHub.
  • Excellent audio and video playback with minimal latency.
  • Real-time audio and video multiprocessing.
  • Multiprocess architecture: applications can share multimedia content.
  • Support for GSTreamer plugins to allow for widespread app integration.
  • Support for sandboxed applications e.g. Flatpak.
  • Excellent audio and video capture.

In this blog post, Christian explains that PipeWire introduces a security model that facilitates easier interactions between audio and video devices from sandboxed apps; and with the way Flatpak and other container models are taking over the market, this does seem like a win-win situation.

Installation and Documentation

At the time of writing PipeWire is not readily available for installation on most distros but you can work around that by grabbing its source code from GitHub and compiling from source or installing either of the packages made for Fedora 27 and Fedora Rawhide.

To clone the repo from GitHub use the code below:

$ git clone https://github.com/PipeWire/pipewire.git

Next, using the Meson build system, enter the following commands:

$ ./autogen.sh --prefix=$PREFIX
$ make
$ make install

The $PREFIX is commonly set to /usr or /usr/local.

Now, test run the PipeWire server from the source directory with the command:

$ make run

If you want to test its video capture and display with SDL from the source directory, use:

$ SPA_PLUGIN_DIR=build/spa/plugins PIPEWIRE_MODULE_DIR=build  build/src/examples/export-sink

You can play around with the other examples as well.

Remember that if you don’t set the correct environment variables as shown above the plugins and modules won’t be found.

Check for a collection of useful pages on PipeWire on its wiki page and its API documentation here.

Clearly, it takes quite a hassle to get PipeWire running on your system, but sooner or later installation will no longer be an issue.

If you are able to get on with the installation don’t forget to share your usage experience with us in the comments section below.

Divine Okoi is a cybersecurity postgrad with a passion for the open-source community. With 700+ articles covering different topics in IT, you can always trust him to inform you about the coolest tech.

Each tutorial at GeeksMint is created by a team of experienced writers so that it meets our high-quality writing standards.

2 thoughts on “PipeWire – Improved Audio & Video Handling on Linux”

Got Something to Say? Join the Discussion...