ALSA와 PulseAudio는 어떤 관련이 있습니까?


30

사운드를 작동 시키려고 할 ALSA와 PulseAudio의 역할이 궁금합니다. 예를 들어, 사운드 카드에 대해 알아야 할 사항이 있는지 궁금합니다.

둘 다 서로를 사용할 수있는 것처럼 보이며 ALSA 용 펄스 오디오 플러그인이 있으며 시스템에서 alsa가 pulseaudio의 사운드 카드로 표시됩니다.

둘 중 어느 것이 대안입니까, 아니면 보완입니까?

답변:


32

ALSA는 커널 레벨 사운드 믹서이며 사운드 카드를 직접 관리합니다. ALSA 자체는 한 번에 하나의 응용 프로그램 만 처리 할 수 ​​있습니다. 물론 이 문제를 해결하기 위해 작성된 ' dmix '가 있습니다. (ALSA 모듈입니다.)

PulseAudio는 사용자가 앱을 실행하는 것처럼 소프트웨어 믹서입니다. 그것이 실행될 때, dmix없이 Alsa를 사용하고 모든 종류의 믹싱, 장치, 네트워크 장치, 모든 것을 자체적으로 관리합니다.

2014 년에는 여전히 ALSA 만 실행할 수 있습니다. 그러나 응용 프로그램을 직접 컴파일하고 어느 곳에서나 ALSA 지원을 활성화하거나 Gentoo와 같은 소스 기반 배포판을 사용하지 않으면 혼합 문제가 발생할 수 있습니다. 배포 된 사전 컴파일 된 응용 프로그램은 일반적으로 순수 ALSA가 아닌 Pulseaudio를 지원하도록 빌드됩니다. 예를 들어 우분투는 PulseAudio를 선호합니다. 기본적으로 PulseAudio가 제공되므로 모든 응용 프로그램은 PulseAudio 만 사용하도록 컴파일됩니다.

PulseAudio는 장점이 있습니다. 사람들은 네트워크를 통한 오디오 작업에 적합하며 순수한 ALSA에서 발생하는 다중 채널 오디오 스트림의 일부 문제를 해결한다고 말합니다. PA 용 앱을 개발하는 것이 더 쉬울 것입니다. 최종 사용자 측에서는 새로운 장치를 쉽게 선택하고 앱별로 볼륨을 제어하는 ​​등이 쉽습니다.

그러나 기본 구성에서는 믹스에 중요하지 않은 대기 시간을 추가합니다. 이는 일부 게임 및 소프트웨어와 같이 낮은 대기 시간이 필요한 특정 유형의 작업에 큰 단점입니다.

OSS는이 두 가지의 대안이지만 GPL에 따라 라이센스가 없으므로 배포판에 의해 채택되지 않을 것입니다.

그림 :
Ubuntu :
Kernel : ALSA-> Userland : PulseAudio-> app1, app2, app3 과 같은 일반적인 PulseAudio 기반 사운드 시스템
일반적인 Linux 시스템에서 PulseAudio는 다른 모든 앱의 오디오를 믹스하여 체인에 ALSA에 공급합니다.

ALSA :
커널 : ALSA-> dmix-> Userland : app1, app2, app3
순수한 ALSA 만 있으면 여러 앱을 혼합하려면 dmix가 필요합니다. 이 기능이 없으면 ALSA는 한 번에 하나의 앱에서만 오디오 스트림을 재생할 수 있습니다.

OSS :
Kernel : OSS-> Userland : app1, app2, app3
OSS를 사용하면 userland 앱이 커널에서 OSS와 직접 통신하여 스트림 자체를 혼합합니다.

요컨대, 일반적인 시스템에서 ALSA는 사운드 카드와 직접 대화하고 Pulseaudio는 앱과 프로그램과 대화하고이를 ALSA에 공급합니다.


2
사실, Pulseaudio를 찾을 때마다 문제가 발견되었습니다! 재미있는 점은 (적어도 내 경험에 따르면) 커널의 RT 버전에도 문제가있는 것 같습니다. 즉, 쉬운 Linux 환경에서 음악을 재생하고 싶습니까? 새로운 UbuntuStudio에 대해 생각하고 있습니까? 다시 생각해보십시오 ... : D
dag729

4
오, 생각 하지마 그래픽은 또한 더미입니다. 리눅스는 간단하고 무뚝뚝하게 표현하기 위해 데스크탑 용이 아닙니다. Xorg는 X 서버 이므로 기본적으로 SERVER를 시작하고 감시합니다 (무의미한 말입니까?). MAC, Windows, Haiku에서 GUI는 커널에서 실행됩니다 (커널 내부에서 가능). 잘. 이해가되지 않습니까? 또한 기본 인터페이스가 없습니다. Windows와 마찬가지로 Windows.Forms. MAC 코코아에서. 여기에서는 GTK, Qt와 같은 FAT 툴킷 만 사용할 수 있습니다. | 네트워크는 커널에 동의하고 괜찮습니다 (제조업체가 인텔과 같은 훌륭한 드라이버를 제공한다면 괜찮습니다).
Apache

3
On MAC, Windows, Haiku, GUI runs from the kernel (okay its inside the kernel). Well. It would make sense doesnt it? 실제로 그렇지 않습니다. "시스템을 무너 뜨린 NT 4 비디오 드라이버"의 나쁜 시절을 기억하십니까? 그래, 그것이 커널 공간에서 크 래피 드라이버를 실행시키는 원인입니다. 왜 Microsoft가 서명 된 드라이버를 Windows로 가져 오는 것에 대해 갑자기 갑자기 모든 생각을했다고 생각하십니까? 빙고! crummy 드라이버가 시스템 충돌을 일으켰 기 때문입니다. 그들에게 서명을하는 것은 그들에게 검사를 받는 것을 의미 했고, QA의 중풍은 먼 길 을 갔다 ...
Avery Payne

1
Avery : 이제 언로드 가능한 모듈을 지원합니다. 따라서 충돌이 발생하면 그래픽 어댑터 용 모듈을 다시로드하기 만하면됩니다. 그러나 내가 아는 한 여전히 모듈입니다. (사용자 공간에서 실행되지 않습니다. 불가능합니다). | SDL 정보 : s..ks. 모든 게임 라이터는 성능 저하, 복잡한 문제 등을 제공하기 때문에 불만을 제기합니다. (목록을 작성하지 않고 검색을 통해 확인합니다.) 오픈 소스 전송 타이쿤조차도 SDL을 사용하면 느립니다.
Apache

2
@Skiki-답변이 오래되었다는 것을 알고 있지만 Valve가 Linux를 포기한 곳의 참조를 제공해 주시겠습니까? 내가 볼 수있는 한, 그들은 여전히 ​​전체 스팀을 진행하고 있습니다.
집합
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.