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

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

Основні зміни в PipeWire 0.3:

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

Нагадаємо, 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) та сервера для керування доступом до апаратних пристроїв захоплення відео.

Джерело: opennet.ru

Додати коментар або відгук