Jack 대 Pulseaudio – 어느 것이 더 빠릅니까?

Jack 대 Pulseaudio – 어느 것이 더 빠릅니까?

Jack이 Pulse보다 빠르고 대기 시간이 짧다는 주장을 많이 보았습니다. 어떻게 그런 일이 일어났나요? 왜 Pulse는 스스로를 경량이라고 부르고 Jack의 부하들은 스스로를 뚱뚱하다고 부르나요? 누군가 이 두 데몬의 내부 구조를 일반인에게 설명할 수 있습니까?

답변1

Jack은 귀하(지식이 풍부한 사용자)에게 가능한 가장 낮은 값을 결정하도록 서버를 구성하도록 요청합니다.처리 지연당신의 기계를 위해. (처리 대기 시간은 서버가 클라이언트 애플리케이션 안팎으로 데이터를 이동한 후 시스템 외부에서 오디오 샘플의 다음 "청크"를 전송/수신하는 데 걸리는 시간입니다.) Jack은 이러한 오디오 데이터 청크를 제 시간에 전달합니다. 그렇지 않으면 실패하여 버퍼 부족(때때로 "손실"이라고도 함)이 발생합니다.잔류성 유기 오염물질그리고클릭수). Jack이 계속 부족해지면 다른 설정으로 서버를 다시 시작하거나 클라이언트 애플리케이션에서 무언가를 변경하여 오디오 기한을 맞출 수 있도록 더 효율적으로 만들어야 합니다. 서버 설정이 모든 클라이언트에 균일하게 적용되기 때문에 Jack은 여러 오디오 응용 프로그램 간에 오디오를 라우팅하고 오디오를 얻는 데 유용합니다.예측 가능한결과. (즉, 다양한 오디오 구성 요소에 "잭"을 연결하는 것과 같습니다.)

Pulse는 서버가 시스템 외부의 오디오 전송/수신 기한을 지키지 않아 발생하는 오디오 손실 수를 최소화하도록 설계되었습니다. 요청이 적지 않은 클라이언트 애플리케이션에 대해 큰 버퍼를 선택하여 이를 수행하려는 것으로 보입니다.처리 지연, 그리고 더 빠른 기한으로 클라이언트 애플리케이션의 버퍼에 샘플을 "주입"합니다. 샘플을 너무 빨리 주입하려고 시도하여 기한을 놓치고 언더런이 발생하는 경우 Pulse는 클라이언트가 서버에 오디오 업데이트를 보내는 데 필요한 최소 시간을 자동으로 늘립니다. Pulse 문서에는 명확하게 명시되어 있습니다.극단론자낮은 대기 시간(예: 10밀리초 미만)처리 지연——디자인 목표가 아닙니다. Linux 자체(및 아마도 귀하의 하드웨어)가 실시간 오디오 예약용으로 설계되지 않았다는 점을 고려하면 저는 이를 믿기 쉽습니다.

Pulse는 사용자 구성 측면에서 "가벼움"입니다. (펄스가 낮다고 말할 수도 있습니다.지연 구성불행하게도 많은 Linux 오디오 애플리케이션은 이를 무시합니다. ) 근본적인 복잡성 측면에서 Pulse는 Jack에 비해 "뚱뚱합니다".

어느 것이 더 빠른지에 대한 확실한 답을 얻으려면 루프백 장치를 구입하여 측정하면 됩니다.왕복 지연자신의 시스템에서 진실을 알아보세요. 왕복 지연시스템이 오디오를 처리하고 처리된 콘텐츠를 다시 시스템으로 수신하는 데 걸리는 시간입니다. Linux에서 이 작업을 수행하는 방법을 설명하는 온라인 자습서가 있습니다. 이를 통해 당신이 실제로 원하는 것이 무엇인지 알게 될 것입니다.인지된 지연—트리거 이벤트(예: 기타 줄을 치는 것)부터 결과 사운드를 처음 들을 때(예: 기타 코드 듣기)까지 걸리는 시간입니다.

마지막으로, Pulse와 Jack은 대부분의 GNU/Linux 배포판에서 ALSA 위에 위치한다는 점을 기억하십시오. Jack과 Pulse에 관해 질문하신 것으로 알고 있습니다. 그러나 ALSA에 직접 연결할 수 있는 단일 오디오 애플리케이션을 사용하는 경우 펄스 또는 잭을 추가해도 성능이 저하될 가능성은 없습니다.인지된 지연ALSA 단독보다 더 중요합니다. 이런 의미에서 Pus와 Jack은 모두 "뚱뚱합니다".

ALSA만으로도 가장 빠르며 Jack은 여러 오디오 애플리케이션을 함께 연결하는 데 유용하며 Pulse는 아마도가장 단순한매우 짧은 대기 시간에 관심이 없을 때 사용하세요. 이 용어를 사용하는 문서나 논의는 무시하세요.숨어있는어떤 유형의 지연이 의미되는지에 대한 설명은 없습니다. (불행히도 Jack의 공식 문서와 Pulse에 대한 Lennart의 블로그 게시물이 모두 이 범주에 속합니다.)

노트: 단일 오디오 애플리케이션을 사용하고 싶지만 형편없는 ALSA 인터페이스와 멋진 Jack 인터페이스가 있는 일부 극단적인 경우가 있을 수 있습니다. 이 경우 Jack을 사용하면 지연 시간을 줄일 수 있습니다. 하지만 응용 프로그램에 대해 이야기하면디자인됨대기 시간을 최소화하려면 이러한 상황이 거의 발생하지 않아야 합니다. 하지만 루프백 장치를 연결하고 내 가설을 테스트해 보세요!

답변2

그들은 실제로 비슷하다사운드 서버.전문가급 오디오 솔루션에 필요한 실시간/낮은 지연 응답을 위해 설계되었습니다.펄스 오디오일반 데스크탑을 더 대상으로 합니다(덜 엄격한 요구 사항에 적용).아빠비율인거 같네요- 복잡할수록 오버헤드가 늘어납니다. Linux에서 둘 다 사용알자스마지막으로 실제 출력을 얻으십시오. PA를 사용하면 데이터는 일반적으로 ALSA(애플리케이션 출력)에서 PA(처리), ALSA(출력)로 라우팅되는데 이는 물론 JACK-ALSA 라우팅보다 느립니다. 반면에 ALSA 인터페이스가 있는 가상 사운드 카드를 제공하므로 기본적으로 사용할 수 없는 응용 프로그램에는 투명합니다.

어쨌든, 음악을 만들 계획이 있거나 앱별 볼륨 조절 없이(또는 네트워크를 통해 다른 컴퓨터로 사운드를 전달하지 않고) 생활할 수 없는 경우를 제외하고 일반 ALSA는 오버헤드가 적더라도 괜찮습니다. 일부 드라이버는 하드웨어 믹싱을 수행할 수 있으며, 그렇지 못하더라도 ALSA는 플러그인을 통해 이를 수행할 수 있습니다(아마도 JACK만큼 빠르지는 않지만 "일반적인" 사용에는 괜찮을 것입니다).

답변3

Jack은 음악가, 비디오 제작자 등을 위한 오디오 엔지니어링/제작과 같이 짧은 대기 시간이 필요한 애플리케이션에 적합합니다.

  • 리샘플링이 필요하지 않습니다!
  • 소프트웨어가 소스를 혼합하도록 강제
  • 애플리케이션, 장치, ladspa/lv2/vst 플러그인 등 간에 사물(사운드, 시간 동기화 등)을 올바르게 라우팅합니다.
  • 펄스 오디오(브릿지)와 함께 사용할 수 있습니다.

Pulse는 일반 데스크톱 애플리케이션에 적합합니다(낮은 대기 시간을 기대하지 마세요).

  • 호환성 제공미술그리고정전기 방전
  • alsa로 사용 및 oss출력 가능
  • 강제 소프트웨어 리샘플링
  • 소프트웨어가 소스를 혼합하도록 강제
  • 소프트웨어 업믹싱, 다운믹싱 등
  • 플러그인에 적합한 API를 제공합니다(예:펄스 효과)
  • 단순 라우팅(다른 장치나 애플리케이션에 출력 삽입)
  • 앱별 볼륨 조절

Alsa 사용자 공간 계층(드라이버 아님)은 최소한의 작업을 수행합니다([*] 사이의 지연).

  • [*]하드웨어 리샘플링, 소스 믹싱, 업믹싱 등(필요적절한 사운드 카드그렇지 않으면 그것을 사용소프트웨어사용하게 될 것이다)
  • ladspa 플러그인을 사용하면 보기 흉한 구성 형식을 설정할 수 있습니다
  • 단순/전체 볼륨 제어

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

답변4

이것은 실제로 "대" 질문이 아닙니다. 언뜻 보면 둘 다 "사운드 서버"라는 것을 알 수 있습니다. 그러므로 둘 중 하나만 선택하면 된다고 결론 내릴 수 있다. 그러나 실제로는 그렇지 않습니다. 예를 들어, 비디오 카메라와 FLIR 카메라를 비교하면 둘 다 카메라입니다. 그러나 사람들은 단지 둘 중 하나를 "선택"하지 않습니다. 그들은 서로 칭찬할 수 있는 매우 다른 역할을 수행하지만 어떤 식으로든 경쟁적이지는 않습니다. 잭이 필요하거나, 펄스가 필요하거나, 둘 다 필요할 수도 있습니다. 선택은 특정 대기 시간과 같은 특성이 아닌 문제 영역에 따라 결정됩니다.

"FAT"와 "non-FAT"의 경우 이 용어는 다양한 방식으로 사용되므로 실제 의미는 없습니다. 그러나 일반적으로 FAT라는 용어는 응용 프로그램이 "모든 작업을 수행"할 때 사용됩니다. "경량"은 원하는 기능을 로드하는 경향이 있으며, 아마도 다양한 옵션 중에서 선택하고 나머지는 포기할 수도 있습니다. Pulse는 몇 가지 매개변수를 제공하면 제대로 작동하는 "큰 덩어리" 프로그램입니다. 필요 여부에 관계없이 Pulse를 실행하면 수많은 기능이 로드됩니다. Jack은 원하는 것을 구축하기 위해 플러그인, 프로그램 등을 원하는 만큼 추가할 수 있는 작고 본질적으로 쓸모 없는 프로그램입니다. 프로그래머는 기계 자원의 관점에서 세상을 보는 경향이 있습니다.

따라서 pulse는 가변 대기 시간 서버인 반면 jack은 고정 대기 시간 서버입니다. 이것이 그들의 특정한 문제 영역입니다. 단지 TV를 시청하거나 인터넷으로 음악을 듣고 있다면 맥박이 반드시 필요합니다. 라이브 전자음악을 연주하고 싶다면 반드시 Jack이 필요합니다. TV를 시청하면서 사운드 스트림을 처리하는 경우 두 가지 모두 반드시 필요합니다.

관련 정보