Кристиан Шаллер (Christian Schaller), возглавляющий группу по развитию десктоп-систем в компании Red Hat и Fedora Desktop Team, официально анонсировал проект PipeWire, в рамках которого развивается мультимедийный сервер нового поколения, расширяющий возможности PulseAudio средствами для обработки потоков видео, и в будущем идущий на замену PulseAudio. Первым этапом внедрения станет поставка PipeWire в Fedora 27 для обработки видео, в то время как PulseAudio пока продолжит применяться для звука. Код проекта написан на языке Си и распространяется под лицензией LGPLv2.1.
Изначально проект развивался одним из создателей фреймворка GStreamer под именами PulseVideo и Pinos (в честь испанского города), но позднее было выбрано более подходящее имя. PipeWire расширяет область применения PulseAudio обработкой любых мультимедийных потоков и способен смешивать и перенаправлять потоки с видео. PipeWire также предоставляет возможности для управления источниками видео, такими как устройства захвата видео, web-камеры или выводимое приложениями содержимое экрана. Например, PipeWire позволяет организовать совместную работу нескольких приложений с веб-камерой и решает проблемы с безопасным захватом содержимого экрана и удалённым доступом к экрану в окружении Wayland.
PipeWire также может выступать в роли звукового сервера, обеспечивающего минимальные задержки и предоставляющего функциональность комбинирующую возможности PulseAudio и JACK, в том числе учитывающую потребности систем профессиональной обработки звука, на которую не мог претендовать PulseAudio. Кроме того, PipeWire предлагает расширенную модель безопасности, позволяющую управлять доступом на уровне отдельных устройств и конкретных потоков и упрощающую организацию проброса звука и видео из изолированных контейнеров и в них. Одной из главных целей является поддержка самодостаточных приложений в формате Flatpak и работа в графическом стеке на базе Wayland.
Основные возможности:
- захват и воспроизведение звука и видео с минимальными задержками;
- средства для обработки видео и звука в режиме реального времени;
- многопроцессная архитектура, позволяющая организовать совместный доступ к контенту нескольких приложений;
- модель обработки на основании графа мультимедийных узлов с поддержкой циклов обратной связи и атомарных обновлений графа;
- возможность подключение обработчиков как внутри сервера, так и внешних плагинов;
- эффективный интерфейс доступа к видеопотокам через передачу файловых дескрипторов и доступа к звуку через совместно используемые кольцевые буферы (shared ringbuffer);
- возможность обработки мультимедийных данных от любых процессов;
- наличие плагина к GStreamer для упрощения интеграции с существующими приложениями;
- поддержка изолированных окружений и Flatpak;
- поддержка плагинов в формате SPA (Single Page Application) и возможность создания плагинов, работающих в режиме жесткого реального времени;
- гибкая система согласования используемых мультимедийных форматов и выделения буферов;
- использование одного фонового процесса для маршрутизации звука и видео, а также возможность работы в форме звукового сервера, хаба для предоставления видео приложениям (например, для gnome-shell screencast API) и сервера для управления доступом к аппаратным устройствам захвата видео.
>>> Подробности