PulseAudio가 시작될 때 모든 ALSA 사운드 장치를 여는 이유는 무엇입니까?

PulseAudio가 시작될 때 모든 ALSA 사운드 장치를 여는 이유는 무엇입니까?

당신은 또한 볼 수 있습니다PulseAudio를 시작하는 방법?.

언제. . . 언제펄스 오디오오디오 데몬이 시작되고 기본적으로 로드되며 module-udev-detect모든 사운드 카드를 감지하고 엽니다. PulseAudio는 다음을 사용합니다.알자스하드웨어와의 인터페이스 ALSA는 커널 모듈과 사용자 공간 라이브러리의 조합입니다.

PulseAudio는 모든 사운드 카드를 열고 ALSA 카드는 한 번만 열 수 있으므로 PulseAudio가 시작된 후 ALSA 카드를 열려고 하면 "장치 또는 리소스 사용 중" 오류가 발생합니다.

$ arecord -D hw:2 -f S16_LE -c 1 -r 48000 -d 3 t.wav
arecord: main:830: audio open error: Device or resource busy

이번 디자인 결정이 궁금합니다.PulseAudio가 시작될 때 모든 장치를 열어야 하는 이유는 무엇입니까?

사용자로서 저는 PulseAudio가 필요할 때 필요한 것만 열도록 하고 싶습니다. 장치를 여는 데 문제가 있는 경우 클라이언트 응용 프로그램(PulseAudio 장치를 읽거나 쓰려고 하는 응용 프로그램)에 오류가 다시 보고되기를 원합니다.

주문형 장치 개방의 장점:

  • ALSA와 PulseAudio는 공존할 수 있습니다. ALSA 애플리케이션을 시작하기 위해 PulseAudio 서버를 종료할 필요가 없습니다.

  • 누군가 나를 지켜보고 있는지 알 수 있다. 마이크 장치를 사용하지 않을 때 켜지는 것은 현재 디자인으로는 의심스러운 일이며 이는 정상입니다.

  • ALSA와 마찬가지로 장치 관련 오류는 로깅 도구가 아닌 사용자에게 직접 보고될 수 있습니다.

  • 동일한 시스템에서 두 버전의 PulseAudio를 실행하고 런타임 시 어떤 서버가 어떤 장치를 제어해야 하는지 결정할 수 있습니다.

  • 아무런 문제 없이 다른(더 나은?) 사운드 서버와 병렬로 PulseAudio를 실행할 수 있습니다.

단점은 무엇입니까? 사용하지 않을 때 Linux 사운드 서버가 알고 있는 장치를 출시하지 못하게 하는 기술적인 문제가 있는데 제가 인식하지 못하는 것이 있습니까? 초기 사운드 서버는 다음과 같았습니다.정전기 방전당신도 이 조작 방법을 사용하나요? 모든 장치를 선제적으로 개방하기로 한 결정은 반경쟁적인 것입니까? 즉, 의도적으로 다른 사운드 서버가 Linux 플랫폼에서 경쟁하는 것을 더 어렵게 만드는 것입니까?

답변1

사운드 서버의 일반적인 설계는 다양한 소프트웨어의 데이터를 받아 유용한 오디오 장치로 라우팅하거나 그 반대의 경우(입력용)로 라우팅하는 것입니다.

이것이 목표이기 때문에 PulseAudio는 사용하려는 각 장치의 기능을 이해해야 합니다. 따라서 지원되는 샘플 크기, 예상 지연 시간, 장치 이름에 대한 정보를 쿼리하기 위해 이를 열 수 있는 기능이 있어야 합니다(사용자가 장치를 선택하려면 이 정보를 알아야 하기 때문). 완료되면 사용자에게 옵션을 제공할 수 있습니다.

사용자가 장치에서 무언가를 재생하려는 경우 PulseAudio는 카드에 직접 재생할 수 있습니다(카드가 켜져 있는 경우). 카드가 열려 있지 않으면 PulseAudio가 카드를 먼저 가져와야 하며 다른 장치에서 카드를 사용 중인 경우 작동하지 않을 수 있습니다. 이 경우 사용자들은 정당한 이유 없이 자신의 목소리가 침해되고 있다는 느낌을 받게 됩니다. 마찬가지로 사용자는 마이크에서 소리가 나지 않는 이유에 대해 질문할 수 있습니다.

일반 사용자는 로그를 이해하지 못하거나 보고 싶어하지 않기 때문에, 특히 화상 회의와 같은 작업을 시작하려고 할 때 로그 확인이 필요한 갑작스러운 중단은 기껏해야 귀찮고 최악의 경우 극복할 수 없는 문제입니다. 저는 Linux에서 수십 년의 경험을 가진 매우 기술적인 사용자이며 사운드 문제(또는 그에 관한 모든 문제)를 처리하고 싶지 않습니다.

모든 사운드 카드를 구입하고 ALSA가 PulseAudio를 기본 ALSA 장치로 사용하도록 하십시오. 이는 ALSA 사용 방법을 알고 있지만 PulseAudio에 대해 모르는 프로그램이 다른 프로그램과 경쟁하지 않고 직접 실행된다는 것을 의미합니다. 그렇지 않으면 오디오 플레이어가 카드를 잡아 터미널 차임벨과 같은 사운드 효과가 작동하지 못하게 할 수 있습니다. 사실 이것은 드문 문제가 아닙니다. 이것이 PulseAudio가 ALSA 출력 장치로 지원되는 이유입니다.

물론 이 디자인이 모든 사람의 요구를 충족할 수는 없지만 사용자에게 표시되는 카드는 일반적으로 사용할 수 있는 반면 표시되지 않는 카드는 사용할 수 없기 때문에 가장 간단하고 강력한 동작을 생성합니다. 일부 구성을 사용하면 원하는 동작을 생성할 수도 있고 dmix 또는 ALSA가 포함된 JACK과 같은 다른 솔루션을 사용하는 것이 더 나을 수도 있습니다.

관련 정보