Widzę wiele twierdzeń, że Jack jest szybszy od Pulse i ma mniejsze opóźnienia. Jak to się dzieje? Dlaczego Pulse nazywa się lekkim, a faceci Jacka nazywają go grubym? Czy ktokolwiek mógłby rozbić elementy wewnętrzne tych dwóch demonów na laika?
Widzę wiele twierdzeń, że Jack jest szybszy od Pulse i ma mniejsze opóźnienia. Jak to się dzieje? Dlaczego Pulse nazywa się lekkim, a faceci Jacka nazywają go grubym? Czy ktokolwiek mógłby rozbić elementy wewnętrzne tych dwóch demonów na laika?
Odpowiedzi:
Jack wymaga od Ciebie - znającego się na rzeczy użytkownika - skonfigurowania serwera, aby określić najniższe możliwe opóźnienie przetwarzania dla twojego komputera. (Opóźnienie przetwarzania to czas, jaki zajmuje serwerowi przeniesienie danych do / z aplikacji klienckich, a następnie wysłanie / odbiór kolejnej „części” próbek audio poza systemem.) Jack dostarczy te fragmenty danych audio na czas lub zawiedzie i spowoduje niedopełnienie bufora (czasami nazywane „rezygnacją”) lub wyskakuje i klika). Jeśli Jack konsekwentnie jest niedopracowany, Twoim zadaniem jest albo zrestartować serwer z innymi ustawieniami, albo zmienić coś w aplikacjach klienckich, aby zwiększyć ich wydajność, abyś mógł dotrzymać terminów audio. Ponieważ ustawienia serwera dotyczą jednakowo wszystkich klientów, Jack jest bardzo przydatny do kierowania dźwięku między wieloma aplikacjami audio i uzyskiwania przewidywalnych rezultatów. (Tj. To jak podłączanie „gniazd” do różnych komponentów audio.)
Pulse ma na celu zminimalizowanie liczby wypadków dźwięku z powodu niespełniania przez serwer terminu wysyłania / odbierania dźwięku poza systemem. Najwyraźniej próbuje to zrobić, wybierając duży bufor dla aplikacji klienckich, które nie wymagają niskiego opóźnienia przetwarzania , a następnie „wstrzykując” próbki do tego bufora dla aplikacji klienckich, które mają wcześniejszy termin. Jeśli spróbuje wstrzyknąć próbki tak szybko, że przekroczy termin i spowoduje niedopełnienie, Pulse automatycznie wydłuży jak najkrótszy czas, umożliwiając klientowi przesłanie aktualizacji audio do serwera. Dokumenty Pulse wyraźnie stwierdzają, że bardzo niskie opóźnienie - powiedzmy, mniej niż 10 ms opóźnienia przetwarzania- nie jest celem projektowym. Biorąc pod uwagę, że sam Linux (i prawdopodobnie twój sprzęt) nie został zaprojektowany do planowania dźwięku w czasie rzeczywistym, chętnie w to uwierzę.
Jeśli chodzi o konfigurację użytkownika, puls jest „lekki”. (Można powiedzieć, że Pulse ma małe opóźnienie konfiguracji , co niestety wiele aplikacji Linux Audio najwyraźniej lekceważy.) Pod względem złożoności w porównaniu do Jacka, Pulse jest „gruby”.
Aby uzyskać ostateczną odpowiedź, która jest szybsza, wystarczy zdobyć urządzenie zwrotne i zmierzyć opóźnienie w obie strony w swoim systemie, aby poznać prawdę. Opóźnienie w obie strony to czas, w którym Twój system przetwarza dźwięk i odbiera to, co przetworzył z powrotem do systemu. Dostępne są samouczki online, które wyjaśniają, jak to zrobić w systemie Linux. To da ci wyobrażenie o tym, czego tak naprawdę szukasz, czyli o postrzeganym opóźnieniu - czasie, który upływa od momentu uruchomienia zdarzenia (np. Uderzenia struny gitary) do momentu pierwszego usłyszenia dźwięku powoduje to (np. usłyszenie akordu gitary).
Na koniec należy pamiętać, że zarówno Pulse, jak i Jack siedzą na szczycie ALSA w większości dystrybucji GNU / Linux. Wiem, że pytasz tylko o Jacka vs. Pulse. Ale jeśli używasz pojedynczej aplikacji audio, która może łączyć się bezpośrednio z ALSA, nie ma możliwego sposobu, aby dodanie Pulse lub Jacka zapewniło mniejsze opóźnienie niż sam ALSA. W tym sensie zarówno Pulse, jak i Jack są „grubi”.
tldr; Sam ALSA jest najszybszy, Jack jest przydatny do łączenia wielu aplikacji audio, a Pulse jest prawdopodobnie najłatwiejszy w użyciu, gdy nie obchodzi Cię bardzo małe opóźnienie. Zignoruj wszelką dokumentację lub dyskusje, które używają terminu latencja, nie wyjaśniając, jaki rodzaj latencji oznacza. (Niestety, zarówno oficjalne dokumenty Jack'a, jak i wpisy na blogu Lennarta o Pulse należą do tej kategorii).
Uwaga : mogą istnieć przypadki, w których chcesz użyć pojedynczej aplikacji audio i ma ona kiepski interfejs ALSA i przyzwoity interfejs Jacka. W takim przypadku użycie Jacka może obniżyć opóźnienie. Ale jeśli mówimy o aplikacjach zaprojektowanych w celu zminimalizowania opóźnień, przypadki te powinny być rzadkie. Ale podłącz urządzenie z pętlą zwrotną i sprawdź moją hipotezę!
Są tak naprawdę podobne do serwerów dźwięku . JACK został zaprojektowany do reakcji w czasie rzeczywistym / przy niskich opóźnieniach, co jest wymagane w profesjonalnych rozwiązaniach audio. PulseAudio jest bardziej ukierunkowany na ogólny pulpit (tam, gdzie obowiązują mniej surowe potrzeby). PA wydaje się być cięższy niż JACK - bycie bardziej złożonym powoduje większe obciążenie. W Linuksie oba używają ALSA do rzeczywistych danych wyjściowych. W przypadku PA dane są często kierowane z ALSA (wyjście aplikacji) do PA (przetwarzanie) do ALSA (wyjście), co jest oczywiście wolniejsze niż trasa JACK-ALSA. Z drugiej strony jest przezroczysty dla aplikacji, które nie mogą go używać natywnie, ponieważ oferuje im wirtualną kartę dźwiękową z interfejsem ALSA.
W każdym razie, chyba że masz zamiar produkować muzykę lub nie możesz żyć bez regulacji głośności dla poszczególnych aplikacji (lub przekazywania dźwięku do innej maszyny przez sieć), zwykła ALSA poradzi sobie dobrze, z mniejszym narzutem. Niektóre sterowniki mogą miksować sprzętowo, a nawet jeśli nie, ALSA może miksować za pomocą wtyczki (prawdopodobnie nie tak zgrabnej jak JACK, ale „normalne” użycie powinno być w porządku).
Jack jest przeznaczony do aplikacji, które wymagają niewielkich opóźnień, np .: tworzenie / tworzenie dźwięku dla muzyków, twórców wideo itp
Pulse jest dla zwykłych aplikacji komputerowych (nie oczekuj niskiego opóźnienia)
alsa
i oss
wyjścieWarstwa przestrzeni użytkownika Alsa (nie sterowniki) wykonują minimum (opóźnienia między [*])
W większości przypadków Pulse jest najlepszym wyborem dla zwykłych użytkowników komputerów stacjonarnych. Jack to najlepszy wybór dla muzyków itp.
To nie jest tak naprawdę kwestia „vs”. Na pierwszy rzut oka widzimy, że oba są „serwerami dźwięku”. Być może zatem należy stwierdzić, że wystarczy wybrać między nimi. To nie o to chodzi. Porównaj na przykład kamerę wideo i kamerę FLIR, obie są kamerami. Ale nie tylko „wybiera się” między nimi. Pełnią one bardzo różne role, role te mogą być komplementarne, ale nie są w żaden sposób konkurencyjne. Potrzebny jest jack lub puls, albo jedno i drugie. Wybór zależy od dziedziny problemu, a nie od cech takich jak określone opóźnienie.
Jeśli chodzi o „FAT” vs. nie, termin ten jest używany na wiele sposobów, aby był naprawdę znaczący. Ale ogólnie termin FAT używany, gdy aplikacja „robi wszystko dla ciebie”, mniej więcej. „Lekki” zmierza w kierunku załadowania pożądanej funkcjonalności, ewentualnie wybierając z palety opcji i odrzucając resztę. Pulse to program typu „big blob”, któremu podajesz kilka parametrów i, właściwie, nie działa. Potrzebujesz go, czy nie, gdy zaczynasz puls, ładowana jest duża funkcjonalność. Jack to jeden mały i bezużyteczny program, do którego przyklejasz dowolną liczbę wtyczek, programów itp., Aby budować, co chcesz. Programiści zazwyczaj patrzą na świat od strony zasobów maszynowych.
Zatem puls jest serwerem o zmiennym opóźnieniu, a jack ma ustalony czas opóźnienia. To są ich specyficzne domeny problemowe. Jeśli po prostu oglądasz telewizję lub słuchasz muzyki przez sieć, na pewno chcesz puls. Jeśli próbujesz odtwarzać muzykę elektroniczną na żywo, na pewno potrzebujesz jack. Jeśli oglądasz telewizję i intensywnie przetwarzasz strumienie dźwięku, z pewnością potrzebujesz obu.