답변:
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니다. 그러나 루프백 장치를 연결하고 내 가설을 테스트하십시오!
실제로 사운드 서버 와 비슷 합니다 . JACK 은 전문가 수준의 오디오 솔루션에 필요한 실시간 / 낮은 대기 시간 응답을 위해 설계되었습니다. PulseAudio 는 일반 데스크탑 (보다 덜 엄격한 요구가 적용되는)을 대상으로합니다. PA 는 JACK 보다 무거워 보입니다 . 복잡할수록 더 많은 오버 헤드가 발생합니다. Linux 에서는 결국 실제 출력에 ALSA 를 사용 합니다. PA를 사용하면 데이터는 종종 ALSA (애플리케이션 출력)에서 PA (처리)로, ALSA (출력)로 라우트되는데, 이는 물론 JACK-ALSA 라우트보다 느립니다. 반면, 기본적으로 사용할 수없는 응용 프로그램에는 투명성이 있습니다. ALSA 인터페이스가있는 가상 사운드 카드를 제공하기 때문입니다.
어쨌든, 음악을 제작하려고하거나 응용 프로그램 볼륨 제어 (또는 네트워크를 통해 다른 컴퓨터로 사운드를 전달하지 않고)없이 살 수 없다면 일반 ALSA는 오버 헤드를 줄이면서도 잘 작동합니다. 일부 드라이버는 하드웨어 믹싱을 수행 할 수 있으며, 그렇지 않은 경우에도 ALSA는 플러그인을 통해 믹싱 할 수 있습니다 (아직 JACK만큼 빠르지는 않지만 "정상"사용은 괜찮습니다).
Jack은 음악가, 비디오 제작자 등을위한 오디오 엔진 링 / 크리에이트 등 낮은 레이턴시가 필요한 애플리케이션을위한 것입니다.
펄스는 일반 데스크탑 응용 프로그램을위한 것입니다 (낮은 지연 시간을 기대하지 마십시오)
alsa
및 oss
출력 가능Alsa 사용자 공간 계층 (드라이버 아님)은 최소 ([*] 사이의 대기 시간)
대부분의 경우 Pulse는 일반 데스크탑 사용자에게 가장 적합한 선택입니다. 음악가 등을위한 최상의 선택은 잭입니다.
실제로 "vs"의 문제는 아닙니다. 처음에는 홍당무가 모두 "사운드 서버"임을 알 수 있습니다. 따라서 아마도 그들 중 하나만 선택하면된다는 결론을 내릴 수 있습니다. 그렇지 않습니다. 예를 들어 비디오 카메라와 FLIR 카메라를 비교해보십시오. 둘 다 카메라입니다. 그러나 그들 사이에서 "선택"하는 것은 아닙니다. 그들은 매우 다른 역할을 수행하며, 그 역할은 칭찬 할 수 있지만 어떤 식 으로든 경쟁적이지는 않습니다. 하나는 잭이 필요하거나 하나는 펄스가 필요하거나 둘 다 필요합니다. 선택은 특정 레이턴시와 같은 기능이 아닌 문제 영역에 의해 결정됩니다.
"FAT"와 그렇지 않은 용어에 관해서는,이 용어는 진정한 의미를 갖기에는 너무 많은 방식으로 사용됩니다. 그러나 일반적으로 응용 프로그램에서 "모든 작업을 수행"할 때 FAT라는 용어가 사용됩니다. "경량"은 원하는 팔레트를 선택하고 나머지는 버리는 경향이 있습니다. Pulse는 "big blob"프로그램으로 몇 가지 매개 변수를 제공하며 그 결과는 거의 없습니다. 펄스를 시작할 때 많은 양의 기능이 필요하거나 필요하지 않습니다. Jack은 하나의 작고 쓸모없는 프로그램으로, 원하는 수의 플러그인, 프로그램 등에 붙이는 프로그램입니다. 프로그래머는 머신 리소스 측면에서 세상을 보는 경향이 있습니다.
따라서 펄스는 가변 대기 시간 서버이고 잭은 고정 대기 시간 서버입니다. 그것들은 그들의 특정 문제 영역입니다. TV를 보거나 네트워크를 통해 음악을 듣고 있다면 반드시 맥박이 필요합니다. 라이브 전자 음악을 재생하려면 반드시 잭이 필요합니다. TV를 시청하고 사운드 스트림에서 많은 처리를 수행하는 경우 반드시 두 가지가 모두 필요합니다.