Джек против Pulseaudio - как это быстрее?

27

Я вижу кучу утверждений, что Джек работает быстрее, чем Pulse, и у него меньше задержка. Как это так? Почему Пульс называет себя легким, а парни из Джека называют его толстым? Может ли кто-нибудь сломать внутренности этих двух демонов непрофессионалу?

Эван Кэрролл
источник
2
Насколько я понимаю, они предназначены для разных целей, что может объяснить проблему их сравнения.
NN

Ответы:

30

Джек требует, чтобы вы - знающий пользователь - настроили сервер для определения минимальной задержки обработки для вашей машины. (Задержка обработки - это время, которое требуется серверу для перемещения данных в / из клиентских приложений, а затем для отправки / получения следующего «фрагмента» аудиосэмплов за пределы системы.) Джек либо доставит эти фрагменты аудиоданных вовремя, либо он потерпит неудачу и даст вам опустошением буфера (иногда называемый «отсев», или хлопки и щелчки). Если у Джека постоянно возникают проблемы с загрузкой, тогда ваша задача - либо перезапустить сервер с другими настройками, либо изменить что-то в клиентских приложениях, чтобы сделать их более эффективными, чтобы вы могли уложиться в сроки аудио. Поскольку настройки вашего сервера применяются одинаково ко всем клиентам, Джек весьма полезен для маршрутизации звука между несколькими аудиоприложениями и получения предсказуемых результатов. (То есть это похоже на подключение «джеков» к различным аудиокомпонентам.)

Pulse предназначен для минимизации количества пропаданий звука из-за того, что сервер не соблюдает крайний срок для отправки / получения звука вне системы. По-видимому, он пытается сделать это, выбирая большой буфер для клиентских приложений, которые не запрашивают низкую задержку обработки , а затем «вставляя» выборки в этот буфер для клиентских приложений, которые имеют крайний срок раньше. Если он попытается внедрить сэмплы так быстро, что пропустит крайний срок и вызовет переполнение, Pulse автоматически увеличит кратчайшее время, в течение которого клиент сможет отправить аудио обновление на сервер. В импульсных документах четко указано, что сверхнизкая задержка - скажем, менее 10 мс задержки обработки- это не цель дизайна. Учитывая, что сам Linux (и, вероятно, ваше оборудование) не был предназначен для планирования звука в реальном времени, я бы склонен им верить.

С точки зрения пользовательской конфигурации, Pulse является «легким». (Можно сказать, что у Pulse низкая задержка конфигурации , что, к сожалению, многие приложения Linux Audio явно игнорируют.) С точки зрения базовой сложности по сравнению с Джеком, Pulse "толстый".

Чтобы получить точный ответ о том, что быстрее, вам просто нужно получить устройство обратной связи и измерить задержку прохождения сигнала в обе стороны в вашей собственной системе, чтобы узнать правду. Задержка в обоих направлениях - это время, которое требуется вашей системе для обработки аудио и получения того, что было обработано, обратно в систему. В Интернете есть учебники, в которых объясняется, как это сделать в Linux. Это даст вам представление о том, что вы на самом деле ищете, то есть о предполагаемой задержке - времени, которое требуется с момента запуска события (например, игры на гитаре) до момента, когда вы впервые услышите звук. что приводит (например, слышать гитарный аккорд).

Наконец, имейте в виду, что как Pulse, так и Jack находятся на вершине ALSA в большинстве дистрибутивов GNU / Linux. Я знаю, что вы спрашиваете только о Джеке против Пульса. Но если вы используете одно звуковое приложение, которое может напрямую подключаться к ALSA, невозможно представить, что добавление Pulse или Jack снизит задержку восприятия, чем одна ALSA. В этом смысле и Пульс, и Джек "толстые".

tldr; Одна только ALSA самая быстрая, Джек полезен для объединения нескольких аудиоприложений, а Pulse, вероятно, проще всего использовать, когда вам не нужны сверхнизкие задержки. Игнорируйте любую документацию или обсуждения, в которых используется термин « задержка», без объяснения того, что подразумевается под задержкой. (К сожалению, официальные документы Джек и записи Леннарта о Pulse попадают в эту категорию.)

Примечание : могут быть крайние случаи, когда вы хотите использовать одно аудио приложение, и оно имеет отвратительный интерфейс ALSA и приличный интерфейс Jack. В этом случае использование Джека может снизить задержки. Но если мы говорим о приложениях, разработанных для минимизации задержки, такие случаи должны быть редкими. Но подключите устройство с обратной связью и проверьте мою гипотезу!

jancsika
источник
9

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

В любом случае, если вы не собираетесь создавать музыку или не можете жить без регулятора громкости для каждого приложения (или пересылки звука на другой компьютер через сеть), обычная ALSA будет работать нормально, с меньшими накладными расходами. Некоторые драйверы могут выполнять аппаратное микширование, и даже если нет, ALSA может микшировать с помощью плагина (возможно, не так быстро, как JACK, но «нормальное» использование должно быть в порядке).

peterph
источник
Ссылка на изображение PA неправильно направлена?
NN
@NN работал для меня, но я изменил это сейчас, так что, надеюсь, это станет лучше.
Петер
@ Sukminder ошибка кажется довольно случайной.
Петер
1
Я не думаю, что этот ответ сокращает его: во-первых, вы не говорите, как Джек быстрее, а во-вторых, вы замышляете ответ с примером, который включает драйвер псевдо-alsa, а не прямой импульсный приемник. Вопрос довольно ясен, но, чтобы быть более прямым, как JACK быстрее в своем быстродействии, по сравнению с Pulse в его самом быстром?
Эван Кэрролл
Я просто устал слышать, как команда Джека говорит, что он быстрее, потому что у него нет тяжелого веса, не объясняя, почему тяжелый вес - и что в тяжелом - делает Пульс медленнее. Этот ответ напоминает картезианское подтверждение предпосылки в вопросе.
Эван Кэрролл
4

Гнездо предназначено для приложений, требующих низкой латентности, например: разработка аудио для музыкантов, производителей видео и т. Д.

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

Импульсный для обычных настольных приложений (не ожидайте низкой задержки)

  • обеспечить совместимость с ARTS и ESD
  • можно использовать как alsaи ossвывод
  • принудительное пересчет программного обеспечения
  • принудительное программное обеспечение смешивания источников
  • программное обеспечение upmix, downmix и т. д.
  • дает хороший API для плагинов (например: Pulseeffects )
  • простая маршрутизация (для подключения вывода в другое устройство или приложение)
  • регулятор громкости на приложение

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

  • [*] аппаратная ресэмплирование, микширование источников, микширование и т. д. (для его использования необходима соответствующая звуковая карта , в противном случае будет использоваться программное обеспечение )
  • плагины ladspa, которые вы можете установить в безобразном формате
  • простой / глобальный контроль уровня громкости

В большинстве случаев Pulse - лучший выбор для обычных пользователей настольных компьютеров. Джек - лучший выбор для музыкантов и т. Д.

3ED
источник
Я бросил голос, но я не уверен, что это ответ на вопрос так же, как хорошее сравнение. Почему PulseAudio работает медленнее, если не выполняется повторная выборка?
Эван Кэрролл
> Почему PulseAudio работает медленнее, если не выполняется повторная выборка?
3ED
Не? Они делают вещи в программном обеспечении, например: принудительная повторная выборка (вы можете выбрать между 2). Джек частично обходит Алсу. Джек чем-то похож на Асио. Пульс, похожий на стандартные окна, звучит от перспективы вверх. Не то же самое, но похожие понятия. Pulse великолепен для дешевых / интегрированных / не правильно поддерживаемых звуковых карт, которые не могут делать аппаратные вещи.
3
2

Это на самом деле не вопрос "против". На первый взгляд мы видим, что они оба "Звуковые серверы". Таким образом, возможно, сделать вывод, что нужно просто выбирать между ними. Это не тот случай. Сравните, например, видеокамеру и камеру FLIR, обе камеры. Но нельзя просто «выбирать» между ними. Они выполняют самые разные роли, эти роли могут быть комплиментарными, но они никоим образом не конкурентоспособны. Нужен джек, или пульс, или оба. Выбор зависит от проблемной области, а не от особенностей, таких как конкретная задержка.

Что касается «ЖИРА» против «нет», термин используется слишком многими способами, чтобы быть действительно значимым. Но, как правило, термин FAT используется, когда приложение «делает все для вас», более или менее. «Легкий вес» имеет тенденцию к тому, чтобы вы загружали всю необходимую вам функциональность, возможно, выбирая из списка опций и отбрасывая остальные. Pulse - это программа «большого блоба», в которой вы даете несколько параметров и, в общем-то, все отлично. Нужно это или нет, при запуске импульса загружается большое количество функций. Джек - одна крошечная и бесполезная программа, к которой вы можете приклеить любое количество плагинов, программ и т. Д. Для создания того, что вы хотите. Программисты склонны смотреть на мир со стороны машинных ресурсов.

Таким образом, импульс является сервером с переменной задержкой, а джек имеет постоянную задержку. Это их конкретные проблемные области. Если вы просто смотрите телевизор или слушаете музыку по сети, вам наверняка понадобится пульс. Если вы пытаетесь играть живую электронную музыку, вам, безусловно, нужен джек. Если вы смотрите телевизор и выполняете тяжелую обработку звукового потока (потоков), вам наверняка потребуются оба варианта.

Будет
источник
1
Несколько субъективно: я думаю, что звуковой сервер должен следовать дизайну JACK, так как невозможно избавиться от каких-либо задержек, добавленных сервером. Затем разработчик приложения должен использовать большие буферы для дискового или сетевого ввода-вывода, преобразования частоты дискретизации и т. Д. Задержки выше отметки 10 мс слишком велики.
user877329