Джек проти Pulseaudio - як це швидше?


27

Я бачу купу тверджень, що Джек швидше Pulse і має меншу затримку. Як це так? Чому Pulse називає себе легким, а хлопці Джека називають це жирним? Чи може хтось розбити внутрішність цих двох демонів мирянам?


2
Як я їх розумію, вони розроблені для різних цілей, що може пояснити проблему їх порівняння.
NN

Відповіді:


30

Джек вимагає від вас - знаючого користувача -, щоб налаштувати сервер для визначення найменшої затримки обробки вашої машини. (Затримка обробки - це час, який потрібен серверу для переміщення даних до / з клієнтських додатків, а потім надсилання / отримання чергового "відрізка" аудіо-зразків за межами системи.) Джек або доставить ці шматки аудіоданих вчасно, або це не вдасться і дасть вам недоїдання буфера (іноді його називають "випаданням"), або з'являється і натискає). Якщо Джек послідовно отримує недоліки, то ваша робота - або перезапустити сервер з різними налаштуваннями, або змінити щось у клієнтських додатках, щоб зробити їх ефективнішими, щоб ви могли дотримуватися своїх аудіо термінів. Оскільки налаштування вашого сервера застосовуються рівномірно для всіх клієнтів, Джек є досить корисним для маршрутизації аудіо серед кількох аудіопрограм та отримання прогнозованих результатів. (Тобто це як підключення "гнізда" до різних аудіокомпонентів.)

Імпульс призначений мінімізувати кількість випадків, коли аудіо виходить із-за того, що сервер не дотримується граничного терміну для надсилання / отримання звуку поза системою. Мабуть, це намагається зробити, обираючи великий буфер для клієнтських додатків, які не вимагають низької затримки обробки , а потім "вводити" зразки в цей буфер для клієнтських додатків, у яких раніше термін. Якщо він спробує ввести зразки так швидко, що він пропустить термін і спричинить недоїдання, Pulse автоматично збільшить найменший час, який дозволить клієнту відправити оновлення звуку на сервер. Імпульсні документи чітко заявляють, що надвисока затримка-- скажімо, менше 10 мс затримки в обробці- не є метою дизайну. Зважаючи на те, що сам Linux (і, можливо, ваше обладнання) не був розроблений для планування аудіо в режимі реального часу, я був би схильний їм повірити.

З точки зору конфігурації користувача, Pulse є "легким". (Можна сказати, що Pulse має низьку затримку конфігурації , що, на жаль, багато програм для аудіо Linux, мабуть, не враховують.) З точки зору своєї основної складності порівняно з Джеком, Pulse "жирний".

Щоб отримати остаточну відповідь про те, що швидше, вам просто доведеться отримати пристрій зворотного зв'язку і виміряти затримку в зворотному напрямку у власній системі, щоб знати правду. Затримка в зворотному напрямку - це час, який ваша система потребує для обробки аудіо та отримання того, що обробляється, назад в систему. В Інтернеті є навчальні посібники, які пояснюють, як це зробити під Linux. Це дасть вам уявлення про те, що ви насправді шукаєте, яка сприймається затримка - час, який проходить з моменту запуску події (наприклад, загравання струн гітари) до моменту, коли ви вперше почуєте звук що дає результати (наприклад, чути акорди гітари).

Нарешті, майте на увазі, що і Pulse, і Джек сидять над ALSA у більшості дистрибутивів GNU / Linux. Я знаю, ви запитуєте лише про Джека проти Пульса. Але якщо ви використовуєте єдину аудіо-програму, яка може підключитися безпосередньо до ALSA, немає можливого способу, що додавання Pulse або Jack дозволить отримати меншу затримку, ніж лише ALSA. У цьому сенсі і Пульс, і Джек "жирні".

tldr; ALSA одна найшвидша, Джек корисний для з'єднання декількох аудіоприкладних програм, і Pulse, мабуть, найпростіший у використанні, коли вам не байдуже надто низькі затримки. Ігноруйте будь-яку документацію або дискусії, де використовується термін затримки, не пояснюючи, який тип затримки мається на увазі. (На жаль, як офіційні документи Джека, так і записи блогу Леннарта про Pulse потрапляють до цієї категорії.)

Примітка . Можуть бути випадкові випадки, коли ви хочете використовувати єдину аудіо-програму, і вона має крихкий інтерфейс ALSA та пристойний інтерфейс Джека. У такому випадку використання Джека може зменшити затримку. Але якщо ми говоримо про додатки, призначені для мінімізації затримок, то такі випадки мають бути рідкісними. Але підключіть пристрій для зворотного зв'язку і перевіряйте мою гіпотезу!


9

Вони насправді схожі за тим, що є звуковими серверами . JACK розроблений для реагування в режимі реального часу / низької затримки, що вимагається професійними аудіо рішеннями. PulseAudio орієнтований більше на загальний робочий стіл (де застосовуються менш суворі потреби). ПА, здається, важчий, ніж JACK - більш складний спосіб спонукає до великих витрат. В Linux обидва використовують ALSA для реального виводу в кінцевому підсумку. За допомогою ПА дані часто переводяться з ALSA (вихід програми) в PA (обробка) до ALSA (вихід), що, звичайно, повільніше, ніж маршрут JACK-ALSA. З іншого боку, він прозорий для додатків, які не можуть використовувати його на власному рівні, оскільки він пропонує їм віртуальну звукову карту з інтерфейсом ALSA.

У будь-якому випадку, якщо ви не збираєтеся створювати музику або не можете жити без регулювання гучності додатків (або перенаправляти звук на іншу машину через мережу), звичайний ALSA зробить чудово, з меншими накладними витратами. Деякі драйвери можуть робити апаратне змішування, і навіть якщо ні, ALSA може змішуватися за допомогою плагіна (можливо, не настільки швидко, як JACK, але "нормальне" використання повинно бути нормальним).


Чи посилання на зображення ПА перенаправлено?
NN

@NN працював на мене, але я змінив його зараз, тож сподіваюся, він стане кращим.
петерф

@Sukminder помилка здається цілком випадковою.
петерф

1
Я не думаю, що ця відповідь скорочує це: по-перше, ви не говорите про те, як Джек швидше, а по-друге, ви згортаєте відповідь прикладом, який передбачає драйвер псевдо-альси, а не прямий Pulse Sink. Питання досить чітке, але якщо бути більш прямим - як JACK швидше, швидше, порівняно з Pulse?
Еван Керролл

Мені просто набридло чути, що команда Джека каже, що це швидше, тому що вона не має важкої ваги, не пояснюючи, чому у важкій вазі, а у важкій вазі - пульс повільніше. Ця відповідь відчуває декартову підтвердження передумови у питанні.
Еван Керролл

4

Джек призначений для додатків, які потребують низької затримки, наприклад: аудіоінженерія / створення для музикантів, відео-виробників тощо

  • немає перекомпонування!
  • примусові джерела змішування програмного забезпечення
  • належна маршрутизація речей (звук, синхронізація тощо) між додатками, пристроями, плагінами ladspa / lv2 / vst тощо
  • можна використовувати з pulseaudio (міст)

Імпульс призначений для звичайних настільних додатків (не сподівайтесь на низьку затримку)

  • забезпечують сумісність з aRts та esd
  • може використовуватися як alsaі ossвихідний
  • силове перекомпонування програмного забезпечення
  • примусові джерела змішування програмного забезпечення
  • програмне забезпечення upmix, downmix тощо
  • дає гарні api для плагінів (наприклад: pulseeffects )
  • проста маршрутизація (підключити вихід до іншого пристрою чи програми)
  • регулювання гучності на додаток

Рівень користувальницького простору Alsa (не драйвери) робить мінімальний (затримка між [*])

  • [*] апаратне перекомпонування, змішування джерел, змішування та інше (для його використання потрібна адекватна звукова карта , інакше буде використано програмне забезпечення )
  • плагіни ladspa, які ви можете встановити у потворному форматі конфігурації
  • простий / глобальний контроль рівня гучності

У більшості випадків Pulse - найкращий вибір для постійних користувачів настільних ПК. Джек - найкращий вибір для музикантів тощо.


Я кинув заяву, але не впевнений, що це відповідь на питання, як хороше порівняння. Чому PulseAudio повільніше, якщо він не робить повторний відбір проб?
Еван Керролл

> Чому PulseAudio повільніше, якщо він не робить повторну вибірку?
3ED

Ні? Вони містять програмне забезпечення, наприклад: примусовий перекомпонування (ви можете вибрати між 2). Джек частково обходить альсу. Джек - щось схоже на азіо. Імпульс, схожий на стандартний звук вікна, починає від виду вгору. Не однакові, але схожі поняття. Імпульс є чудовим для дешевих / інтегрованих / не належним чином підтримуваних звукових карт, які не можуть робити речі апаратно.
3ED

2

Це насправді не питання "проти". Спочатку рум'яна ми можемо побачити, що вони обидва "сервери звуку". Таким чином, можливо, для висновку потрібно просто вибрати між ними. Це не так. Порівняйте, наприклад, відеокамеру та камеру FLIR, обидві - це камери. Але між ними не просто «вибирати». Вони виконують дуже різні ролі, ці ролі можуть бути компліментарними, але вони жодним чином не є конкурентоспроможними. Кожному потрібен джек, або одному потрібен пульс, або одному може знадобитися і те, і інше. Вибір визначається проблемною областю, а не функціональними елементами, такими як певна затримка.

Щодо "FAT" проти ні, термін використовується в занадто багато способів, щоб мати справжнє значення. Але, як правило, термін FAT, що використовується, коли додаток "робить все для вас", більш-менш. "Легкий" схильний до того, щоб ви завантажили потрібну вам нечутливість, можливо, вибираючи з палітри варіантів і відкидаючи решту. Імпульс - це програма "великої краплі", якій ви даєте кілька параметрів і, майже все, вона йде. Потрібна чи ні, велика кількість функціональності завантажується при запуску пульсу. Джек є однією крихітною і марною програмою, на яку ви склеюєте будь-яку кількість плагінів, програм тощо для створення того, що вам потрібно. Програмісти схильні розглядати світ з боку машинних ресурсів.

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


1
Дещо суб’єктивно: я вважаю, що звуковий сервер повинен відповідати дизайну JACK, оскільки неможливо позбутися будь-яких затримок, доданих сервером. Потім розробник програми повинен використовувати більші буфери для дискового або мережевого вводу / виводу, перетворення швидкості вибірки тощо. Затримки вище позначки 10 мс є високими.
user877329
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.