PipeWire — мультимедійний сервер нового покоління, що йде на заміну PulseAudio. PipeWire розширює можливості PulseAudio засобами для роботи з потоками відео, можливістю обробки звуку з мінімальними затримками і новою моделлю безпеки для управління доступом на рівні окремих пристроїв і потоків. Проект підтримується в GNOME і станом на 2020 активно застосовується в Fedora Linux для запису вмісту екрана (screencasting) і спільного доступу до екрана в середовищах на базі Wayland.

Код проекту написаний мовою Сі і поширюється під ліцензією LGPLv2.1.

Історія Спочатку проект називався PulseVideo. Пізніше проект назвали Pinos (в честь міста Pinos de Alhaurin в Іспанії, в якому жив Вім Тайманс). Однією з початкових цілей було поліпшити роботу з відео під Linux таким же чином, як PulseAudio поліпшив роботу з аудіо. Ідеї для проекту були взяті з PulseVideo Вільяма Менлі (William Manley) (назва «PulseVideo», що використовується Вільямом Менлі, не пов'язане з тією ж назвою, яке використовував ДІМ Тайман на початку проекту).

Огляд PipeWire розширює сферу застосування PulseAudio обробкою будь-яких мультимедійних потоків і здатний змішувати і перенаправляти потоки з відео. PipeWire також надає можливості для управління джерелами відео, такими як пристрої захоплення відео, вебкамери або виведений застосунками вміст екрана. Наприклад, PipeWire дає можливість організувати спільну роботу декількох застосунків з вебкамерою і вирішує проблеми з безпечним захопленням вмісту екрана і віддаленим доступом до екрана в оточенні Wayland.

PipeWire також може виступати в ролі звукового сервера, що забезпечує мінімальні затримки і надає функціональність комбінування можливостей PulseAudio і JACK, в тому числі враховує потреби систем професійної обробки звуку, на яку не міг претендувати PulseAudio. Крім того, PipeWire пропонує розширену модель безпеки, що дозволяє управляти доступом на рівні окремих пристроїв і конкретних потоків, і спрощує організацію проштовхування звуку і відео з ізольованих контейнерів і в них. Однією з головних цілей є підтримка самодостатніх застосунків у форматі Flatpak і робота в графічному стеці на базі Wayland.

Основні можливості Захоплення і відтворення звуку і відео з мінімальними затримками; Засоби для обробки відео і звуку в режимі реального часу; Багатопроцесна архітектура, що дозволяє організувати спільний доступ до контенту декількох застосунків; Модель обробки на основі графа мультимедійних вузлів з підтримкою циклів зворотного зв'язку і атомарних оновлень графа. Допускається підключення оброблювачів як всередині сервера, так і зовнішніх плагінів; Ефективний інтерфейс доступу до відеопотоку через передачу файлових дескрипторів і доступу до звуку через спільно використовувані кільцеві буфери (shared ringbuffer); Можливість обробки мультимедійних даних від будь-яких процесів; Наявність плагіну до GStreamer для спрощення інтеграції з існуючими застосунками; Підтримка ізольованих оточень і Flatpak; Підтримка плагінів у форматі SPA (Simple Plugin API) і можливість створення плагінів, які працюють в режимі жорсткого реального часу; Гнучка система узгодження використовуваних мультимедійних форматів і виділення буферів; Використання одного фонового процесу для маршрутизації звуку і відео. Можливість роботи в формі звукового сервера, хаба для надання відео застосунків (наприклад, для gnome-shell screencast API) і сервера для управління доступом до апаратних пристроїв захоплення відео.

Виноски

Посилання

Presentation of Pinos by Wim Taymans The PipeWire multimedia framework and its potential in AGL (PDF) PulseVideo