Доступен мультимедийный сервер PipeWire 0.3, идущий на смену PulseAudio

Опубликован значительный выпуск проекта PipeWire 0.3.0, развивающего мультимедийный сервер нового поколения, идущий на замену PulseAudio. PipeWire расширяет возможности PulseAudio средствами для работы с потоками видео, обработкой звука с минимальными задержками и новой моделью безопасности для управления доступом на уровне отдельных устройств и потоков. Проект поддерживается в GNOME и уже активно применяется в Fedora Linux для обработки видео и совместного доступа к экрану в окружениях на базе Wayland. Код проекта написан на языке Си и распространяется под лицензией LGPLv2.1.

Основные изменения в PipeWire 0.3:

  • Полностью переработан планировщик обработки потоков. Изменения позволили добиться возможность запуска прослойки для обеспечения совмстимости со звуковым сервером JACK, производительность которой сравнима с JACK2.
  • Переработан и объявлен стабильным API. Все дальнейшие изменения в API планируется производить без нарушения обратной совместимости c существующими приложениями.
  • В состав включён менеджер сеанcов, позволяющий управлять графом мультимедийных узлов в PipeWire, а также добавлять новые потоки. Пока менеджер лишь предоставляет простейший набор базовых функций и в будущем будет расширен или заменён на более функциональный и гибкий вариант, такой как WirePlumber.
  • Улучшены входящие в состав библиотеки для обеспечения совместимости с PulseAudio, JACK и ALSA, позволяющие использовать PipeWire с существующими приложениями, рассчитанными на работу с другими звуковыми системами. Библиотека для ALSA уже почти доведена до полной готовности, но библиотеки для JACK и PulseAudio ещё требуют доработки. PipeWire пока не готов для полной замены PulseAudio и JACK, но в следующих выпусках вопросам совместимости будет уделено первоочерёдное внимание.
  • В состав включены некоторые плагины GStreamer для взаимодействия с PipeWire. Плагин pipewiresrc, использующий PipeWire в качестве источника звука, большинстве ситуация работает без проблем. Плагин pipewiresink для вывода звука через PipeWire пока не лишён отдельных известных проблем.
  • Поддержка PipeWire 0.3 интегрирована в оконный менеджер Mutter, развиваемый проектом GNOME.

Напомним, что изначально проект развивался одним из создателей фреймворка GStreamer под именами PulseVideo и Pinos. PipeWire расширяет область применения PulseAudio обработкой любых мультимедийных потоков и способен смешивать и перенаправлять потоки с видео. PipeWire также предоставляет возможности для управления источниками видео, такими как устройства захвата видео, web-камеры или выводимое приложениями содержимое экрана. Например, PipeWire даёт возможность организовать совместную работу нескольких приложений с веб-камерой и решает проблемы с безопасным захватом содержимого экрана и удалённым доступом к экрану в окружении Wayland.

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

Основные возможности:

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



Источник: http://www.opennet.ru/opennews/art.shtml? num=52406

© OpenNet