The framework for low latency, high performance, system-wide multimedia streams
PipeWire is the next generation multimedia framework for Linux-based systems that facilitates exchanging audio and video content between system components (multimedia bus). PipeWire implements functionality of traditional audio systems, such as PulseAudio, JACK, and ALSA. It brings in similar features for video resources (including screen sharing and cameras) with support for low latency, high performance streaming and a much improved, container-ready, security model.
When it comes to distributing media content inside a system with full application isolation, fine-grained policy control and real-time performance, PipeWire is the top-most software choice for any use case. In the past, implementing a system with such features often meant writing an entirely custom media handling pipeline. With the arrival of PipeWire, it is now possible to use a standard open-source framework.
- Real-time capable: PipeWire's core has been designed from the ground up to be used for real-time processing. It carefully avoids having any allocations or other processing with unpredictable timing on the critical path. This means that it can reliably operate under hard real-time requirements.
- Low latency: Unlike PulseAudio and most other generic stream routing systems, PipeWire is designed with low latency in mind. Capable of dealing with frames as short as 1.5 milliseconds, it is suitable for applications requiring live performance.
- Low overhead: Dealing with low latency media requires dealing with the media data often, even very often. To make such a framework useful, it needs to be lightweight when it comes to processing time. PipeWire is designed for this and outperforms previous solutions.
- Pro-Audio ready and capable: PipeWire unifies the two audio systems used on the desktop, JACK for low-latency professional audio and PulseAudio for normal desktop use-cases. PipeWire is designed to be able to accommodate both use cases, delivering very low latency, while at the same time not wasting CPU resources.
- Audio and video multiplexing: All modern operating systems have a sound server that is used to multiplex the sound devices, allowing multiple applications to capture or playback sounds at the same time. But until now, Linux lacked a way to multiplex access to camera devices. PipeWire changes that, multiplexing access to camera devices just like it does with audio.
- Container ready: In a world where security is more important than ever and container technology is being applied to all kinds of use cases, PipeWire is a first class citizen, enabling containerized applications to access media resources efficiently without compromising the container's security barrier.
- Media access control built-in: Traditional Linux based APIs such as ALSA, V4L2, PulseAudio and JACK have always been designed such that if an application can access the media device, it can have full control over it. With PipeWire, it's finally possible to enforce security policies giving each application only the access it needs to complete its task.
- External policy management: PipeWire does not dictate policy management. Being a graph based system, it exposes nodes to be connected, but leaves the decisions on the connections to the policy manager. This manager is an external application that owns and controls the multimedia policy. At Collabora, we've designed WirePlumber, a framework to create policy systems. It enables device creators to easily build policies that match their product's requirements.
- ALSA, PulseAudio, JACK and GStreamer compatibility built-in: Having been designed to superseed existing systems such as PulseAudio and JACK, PipeWire offers library APIs compatible with both. It also includes an ALSA plug-in, making its presence transparent for native ALSA applications. Additionally, it provides GStreamer plugins to allow for the full low-level access to PipeWire specific functionalities from GStreamer.
- Extensible and customizable: PipeWire uses a modular design that allows customizing it at multiple levels, from modifying deep core components to extending it with external management tools and media filters. This allows PipeWire to be adapted to serve even the most unconventional use cases.
How can Collabora help you with PipeWire?
As the largest contributor to PipeWire after its original author, and the team behind WirePlumber, the default session manager for PipeWire, Collabora is the leading provider of consulting and development services for PipeWire. Having successfully designed and deployed solutions based on this software combination, we can help you adapt PipeWire to meet your precise requirements.
Our engineering team can help you integrate and test PipeWire for your device or application, add or improve functionalities of the framework, and more. Contact us today to learn more about the possibilities this new multimedia framework brings.