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
$PREFIX is commonly set to
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.
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.