Pipewire-1.2.7

Introduction to Pipewire

The pipewire package contains a server and userspace API to handle multimedia pipelines. This includes a universal API to connect to multimedia devices, as well as sharing multimedia files between applications.

[Note]

Note

Development versions of BLFS may not build or run some packages properly if LFS or dependencies have been updated since the most recent stable versions of the books.

Package Information

Pipewire Dependencies

Recommended

Optional

alsa-lib-1.2.13, Avahi-0.8, fdk-aac-2.0.3, FFmpeg-7.1, libcanberra-0.30, libdrm-2.4.124 (for one example and libcamera support), libxcb-1.17.0, libsndfile-1.2.2, libusb-1.0.27, Opus-1.5.2, SDL2-2.30.10 (for some examples), Valgrind-3.24.0, Vulkan-Loader-1.3.301, Xorg Libraries, Doxygen-1.12.0 and Graphviz-12.2.1 (for documentation), ffado, JACK, LC3plus, ldacBT, libcamera, libmysofa, lilv, and xmltoman

Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/pipewire

Installation of Pipewire

Install pipewire by running the following commands:

mkdir build &&
cd    build &&

meson setup ..                 \
      --prefix=/usr            \
      --buildtype=release      \
      -D session-managers="[]" &&
ninja

To test the result, issue: ninja test.

Now, as the root user:

ninja install

Command Explanations

--buildtype=release: Specify a buildtype suitable for stable releases of the package, as the default may produce unoptimized binaries.

-D session-managers="[]": This switch allows specifying the session managers to build as subprojects. We specify an empty list to prevent meson from downloading any external copy of the session managers. A Pipewire session manager recommended by the PipeWire developers for general use, Wireplumber-0.5.7, is available as a separate BLFS package. Build it after installing Pipewire if you need to run the Pipewire daemon (for example in order to support Snapshot-47.1).

-D docs=true: This switch enables the generation of HTML documentation. The optional dependencies for documentation need to be installed for this to work.

-D man=true: This switch enables the generation of manual pages. The optional dependencies for documentation need to be installed for this to work.

-D ffmpeg=enabled: This switch enables using ffmpeg for audio conversion as a SPA backend.

-D vulkan=enabled: This switch enables using Vulkan for video rendering as a SPA backend.

Contents

Installed Programs: pipewire, pw-cat, pw-cli, pw-config, pw-dot, pw-dump, pw-jack, pw-link, pw-loopback, pw-metadata, pw-mididump, pw-mon, pw-profiler, pw-reserve, pw-top, pw-v4l2, spa-acp-tool, spa-inspect, spa-json-dump, spa-monitor, spa-resample, and pipewire-aes67, pipewire-avb, pipewire-pulse (symlinks to pipewire), pw-dsdplay, pw-encplay, pw-midiplay, pw-midirecord, pw-play, pw-record (symlinks to pw-cat)
Installed Libraries: libpipewire-0.3.so and 60 modules below /usr/lib/pipewire-0.3 and /usr/lib/spa-0.2
Installed Directories: /usr/include/pipewire-0.3, /usr/include/spa-0.2, /usr/lib/alsa-lib, /usr/lib/pipewire-0.3, /usr/lib/spa-0.2, /usr/share/alsa-card-profile, /usr/share/pipewire, and /usr/share/spa-0.2

Short Descriptions

pipewire

is a service that allows access to multimedia devices and allows sharing of multimedia files between applications

pipewire-pulse

starts a Pulseaudio-compatible version of the pipewire service

pw-cat

allows you to play or record media using a pipewire instance

pw-cli

allows you to interact with a pipewire instance

pw-config

allows you to interact with pipewire's configuration system for debugging purposes or syntax checking

pw-dot

lists all of the daemons and objects in use by pipewire

pw-dump

dumps debug messages from a local or remote pipewire instance to the console

pw-jack

runs JACK applications on a pipewire instance

pw-link

links pipewire ports together

pw-loopback

initializes a loopback link between two different pipewire ports. This is useful for testing and debugging

pw-metadata

inspects, adds, and removes metadata for objects

pw-mididump

dumps MIDI messages from a file to the screen

pw-mon

allows you to monitor pipewire instances

pw-profiler

tracks memory usage and API calls used by pipewire

pw-reserve

reserves or monitors a device via D-Bus

pw-top

displays real-time performance information from pipewire

pw-v4l2

runs v4l2 applications on a pipewire instance

spa-acp-tool

inspects the card profile of a given sound card

spa-inspect

allows you to inspect pipewire plugins

spa-json-dump

dumps the current pipewire configuration in JSON format

spa-monitor

allows you to monitor pipewire plugins

spa-resample

resamples a given file

libpipewire-0.3.so

contains API functions for handling multimedia pipelines