Jack vs Pulseaudio — 얼마나 빠릅니까?


27

잭이 펄스보다 빠르며 대기 시간이 짧다는 주장이 많이 있습니다. 어떻게 그렇게? 펄스가 왜 경량이라고 부르고 잭 사람들은 그것을 지방이라고 부릅니까? 누구든지이 두 데몬의 내부를 평신도로 분해 할 수 있습니까?


2
그것들을 이해함에 따라 그것들은 비교의 문제를 설명 할 수있는 다른 목적으로 설계되었습니다.
NN

답변:


30

Jack은 지식이 풍부한 사용자 로서 머신에 대해 가능한 가장 낮은 처리 대기 시간 을 결정하도록 서버를 구성 해야합니다. 처리 대기 시간은 서버가 클라이언트 응용 프로그램간에 데이터를 이동 한 다음 시스템 외부에서 다음 "청크"오디오 샘플을 보내거나받는 데 걸리는 시간입니다. Jack은 해당 오디오 데이터 청크를 제 시간에 전달합니다. 그것은 실패하고 당신에게 버퍼 언더런 (때로는 "드롭 아웃"이라는 줄, 또는 것입니다 클릭). Jack이 지속적으로 불충분하게 진행되면 다른 설정으로 서버를 다시 시작하거나 클라이언트 응용 프로그램에서 무언가를 변경하여 오디오 마감 시간을 충족시킬 수 있습니다. 서버 설정은 모든 클라이언트에 균일하게 적용되므로 Jack은 여러 오디오 응용 프로그램간에 오디오를 라우팅하고 예측 가능한 결과를 얻는 데 매우 유용 합니다. (즉, "잭"을 다양한 오디오 구성 요소에 연결하는 것과 같습니다.)

Pulse는 서버가 시스템 외부로 오디오를 전송 / 수신하는 데드 라인을 충족시키지 않아서 오디오가 끊어지는 횟수를 최소화하도록 설계되었습니다. 낮은 처리 대기 시간을 요청하지 않는 클라이언트 응용 프로그램을 위해 큰 버퍼를 선택한 다음 최종 기한이 빠른 클라이언트 응용 프로그램을 위해 해당 버퍼에 샘플을 "주입" 하여이를 수행하려고합니다 . 최종 기한을 놓쳐서 언더런을 유발할 정도로 샘플을 빨리 주입하려고 시도하면 Pulse는 클라이언트가 서버에 오디오 업데이트를 보낼 수있는 최단 시간을 자동으로 증가시킵니다. 펄스 문서 는 10ms 미만의 초저 대기 시간을 명시 적으로 명시합니다.-디자인 목표가 아닙니다. 리눅스 자체 (그리고 아마도 당신의 하드웨어)가 오디오의 실시간 스케줄링을 위해 설계되지 않았다는 것을 감안할 때, 나는 그것들을 믿기 쉽다.

사용자 구성 측면에서 Pulse는 "light"입니다. 펄스는 구성 지연 시간 이 낮으며 불행히도 많은 Linux Audio 앱은 무시할 수 있습니다. Jack과 비교할 때 기본 복잡성 측면에서 Pulse는 "팻"입니다.

더 빠른 답변을 얻으려면 루프백 장치를 가져 와서 자체 시스템에서 왕복 지연 시간 을 측정 하여 진실을 알아야합니다. 왕복 대기 시간 은 시스템에서 오디오를 처리하고 시스템으로 다시 처리 한 시간을받는 데 걸리는 시간입니다. Linux에서이를 수행하는 방법을 설명하는 온라인 자습서가 있습니다. 그것은 당신이 실제로 무엇을했는지에 대한 아이디어를 줄 것입니다. 이것은 지각 된 대기 시간입니다 -이벤트를 시작한 순간부터 (예를 들어, 기타의 현을 찌르는 순간부터) 처음 소리를 듣는 순간까지 걸리는 시간 그 결과 (예 : 기타 화음 듣기).

마지막으로 Pulse와 Jack은 대부분의 GNU / Linux 배포판에서 ALSA 위에 있습니다. 나는 당신이 잭 대 펄스에 대해서만 묻는다는 것을 알고 있습니다. 그러나 ALSA에 직접 연결할 수있는 단일 오디오 응용 프로그램을 사용하는 경우 Pulse 또는 Jack을 추가하면 ALSA 단독보다 인식 대기 시간단축 될 수있는 방법이 없습니다 . 그런 의미에서 펄스와 잭은 모두 "지방"입니다.

tldr; ALSA는 가장 빠르며 Jack은 여러 오디오 응용 프로그램을 연결하는 데 유용하며, 매우 낮은 대기 시간에 신경 쓰지 않을 때 Pulse 를 사용하는 것이 가장 쉽습니다 . 대기 시간 유형이 무엇인지 설명하지 않고 대기 시간 이라는 용어를 사용하는 문서 나 토론은 무시하십시오 . 불행히도 공식 Jack 문서와 Pulse에 관한 Lennart의 블로그 항목이 모두이 범주에 속합니다.

참고 : 단일 오디오 응용 프로그램을 사용하려는 경우가있을 수 있으며 엉뚱한 ALSA 인터페이스와 알맞은 잭 인터페이스가 있습니다. 이 경우 Jack을 사용하면 대기 시간이 단축 될 수 있습니다. 그러나 대기 시간을 최소화 하도록 설계된 앱에 대해 이야기 하는 경우는 드 rare니다. 그러나 루프백 장치를 연결하고 내 가설을 테스트하십시오!


9

실제로 사운드 서버 와 비슷 합니다 . JACK 은 전문가 수준의 오디오 솔루션에 필요한 실시간 / 낮은 대기 시간 응답을 위해 설계되었습니다. PulseAudio 는 일반 데스크탑 (보다 덜 엄격한 요구가 적용되는)을 대상으로합니다. PAJACK 보다 무거워 보입니다 . 복잡할수록 더 많은 오버 헤드가 발생합니다. Linux 에서는 결국 실제 출력에 ALSA 를 사용 합니다. PA를 사용하면 데이터는 종종 ALSA (애플리케이션 출력)에서 PA (처리)로, ALSA (출력)로 라우트되는데, 이는 물론 JACK-ALSA 라우트보다 느립니다. 반면, 기본적으로 사용할 수없는 응용 프로그램에는 투명성이 있습니다. ALSA 인터페이스가있는 가상 사운드 카드를 제공하기 때문입니다.

어쨌든, 음악을 제작하려고하거나 응용 프로그램 볼륨 제어 (또는 네트워크를 통해 다른 컴퓨터로 사운드를 전달하지 않고)없이 살 수 없다면 일반 ALSA는 오버 헤드를 줄이면서도 잘 작동합니다. 일부 드라이버는 하드웨어 믹싱을 수행 할 수 있으며, 그렇지 않은 경우에도 ALSA는 플러그인을 통해 믹싱 할 수 있습니다 (아직 JACK만큼 빠르지는 않지만 "정상"사용은 괜찮습니다).


PA 이미지에 대한 링크가 잘못 지정 되었습니까?
NN

@ NN이 나를 위해 일했지만 지금 변경 했으므로 더 좋아질 것입니다.
peterph

@ Sukminder 오류는 매우 임의적 인 것으로 보입니다.
peterph

1
나는이 답변이 그것을 잘랐다 고 생각하지 않습니다. 먼저 Jack이 얼마나 빠르다고 말하지 않습니까? 두 번째로 직접 Pulse Sink가 아닌 pseudo-alsa driver가 포함 된 예제로 답변을 복잡하게 만듭니다. 문제는 분명하지만 좀 더 직설적 입니다 .JACK이 가장 빠른 Pulse와 비교하여 가장 빠른 방법은 무엇입니까?
Evan Carroll

Jack 팀이 왜 헤비급 이 아니고 헤비급 에서 무엇이 펄스를 느리게 만드는지를 설명하지 않고 헤비급 이 없기 때문에 더 빠르다는 말을 듣고 피곤 합니다. 이 답변은 질문의 전제에 대한 직교 단언 같은 느낌입니다.
Evan Carroll

4

Jack은 음악가, 비디오 제작자 등을위한 오디오 엔진 링 / 크리에이트 등 낮은 레이턴시가 필요한 애플리케이션을위한 것입니다.

  • 리샘플링 없음!
  • 소프트웨어 혼합 소스 강제
  • 앱, 기기, ladspa / lv2 / vst 플러그인 등 적절한 라우팅 (사운드, 시간 동기화 등)
  • pulseaudio (브릿지)와 함께 사용 가능

펄스는 일반 데스크탑 응용 프로그램을위한 것입니다 (낮은 지연 시간을 기대하지 마십시오)

  • aRtsesd 와의 호환성 제공
  • 로 사용 alsaoss출력 가능
  • 소프트웨어 리샘플링 강제
  • 소프트웨어 혼합 소스 강제
  • 소프트웨어 업 믹스, 다운 믹스 등
  • 플러그인에 멋진 API를 제공합니다 (예 : pulseeffects )
  • 간단한 라우팅 (출력을 다른 장치 또는 앱에 연결)
  • 앱당 볼륨 컨트롤

Alsa 사용자 공간 계층 (드라이버 아님)은 최소 ([*] 사이의 대기 시간)

  • [*] 하드웨어 리샘플링, 믹싱 소스, 업 믹싱 등 ( 사용 하려면 적절한 사운드 카드 가 필요 합니다. 그렇지 않으면 소프트웨어 가 사용됩니다)
  • 못생긴 구성 형식으로 설정할 수있는 ladspa 플러그인
  • 단순 / 전역 볼륨 레벨 제어

대부분의 경우 Pulse는 일반 데스크탑 사용자에게 가장 적합한 선택입니다. 음악가 등을위한 최상의 선택은 잭입니다.


나는 공감대를 떨어 뜨 렸지만, 그것이 좋은 비교만큼 질문에 대한 대답인지 확실하지 않습니다. 리샘플링을하지 않으면 왜 PulseAudio가 느려 집니까?
에반 캐롤

> 리샘플링을하지 않으면 왜 PulseAudio가 느려 집니까?
3ED

아니? 예를 들어, 강제 리샘플링 (2 개 중에서 선택할 수 있음)과 같은 소프트웨어를 사용합니다. 잭은 알사를 부분적으로 우회합니다. 잭은 아시오와 비슷합니다. 비스타에서 표준 윈도우 사운드와 유사한 펄스. 동일하지는 않지만 유사한 개념. 펄스는 하드웨어에서 할 수없는 싸고 / 통합 / 적절하게 지원되지 않는 사운드 카드에 적합합니다.
9

2

실제로 "vs"의 문제는 아닙니다. 처음에는 홍당무가 모두 "사운드 서버"임을 알 수 있습니다. 따라서 아마도 그들 중 하나만 선택하면된다는 결론을 내릴 수 있습니다. 그렇지 않습니다. 예를 들어 비디오 카메라와 FLIR 카메라를 비교해보십시오. 둘 다 카메라입니다. 그러나 그들 사이에서 "선택"하는 것은 아닙니다. 그들은 매우 다른 역할을 수행하며, 그 역할은 칭찬 할 수 있지만 어떤 식 으로든 경쟁적이지는 않습니다. 하나는 잭이 필요하거나 하나는 펄스가 필요하거나 둘 다 필요합니다. 선택은 특정 레이턴시와 같은 기능이 아닌 문제 영역에 의해 결정됩니다.

"FAT"와 그렇지 않은 용어에 관해서는,이 용어는 진정한 의미를 갖기에는 너무 많은 방식으로 사용됩니다. 그러나 일반적으로 응용 프로그램에서 "모든 작업을 수행"할 때 FAT라는 용어가 사용됩니다. "경량"은 원하는 팔레트를 선택하고 나머지는 버리는 경향이 있습니다. Pulse는 "big blob"프로그램으로 몇 가지 매개 변수를 제공하며 그 결과는 거의 없습니다. 펄스를 시작할 때 많은 양의 기능이 필요하거나 필요하지 않습니다. Jack은 하나의 작고 쓸모없는 프로그램으로, 원하는 수의 플러그인, 프로그램 등에 붙이는 프로그램입니다. 프로그래머는 머신 리소스 측면에서 세상을 보는 경향이 있습니다.

따라서 펄스는 가변 대기 시간 서버이고 잭은 고정 대기 시간 서버입니다. 그것들은 그들의 특정 문제 영역입니다. TV를 보거나 네트워크를 통해 음악을 듣고 있다면 반드시 맥박이 필요합니다. 라이브 전자 음악을 재생하려면 반드시 잭이 필요합니다. TV를 시청하고 사운드 스트림에서 많은 처리를 수행하는 경우 반드시 두 가지가 모두 필요합니다.


1
다소 주관적 : 사운드 서버는 JACK 디자인을 따라야한다고 생각합니다. 서버에서 추가 한 대기 시간을 제거하는 것은 불가능하기 때문입니다. 디스크 나 네트워크 I / O, 샘플 레이트 변환 등에 더 큰 버퍼를 사용하는 것은 애플리케이션 개발자의 몫입니다. 10ms 이상의 지연은 높습니다.
user877329
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.