리눅스에서 사운드를 재생하기 위해서는 ALSA와 pulseaudio가 정상 동작 중이어야 한다.
■ALSA란?
ALSA(Advanced Linux Sound Architecture)는 사운드 카드 장치 드라이버를 위한 애플리케이션 프로그래밍 인터페이스(API)를 제공하는 소프트웨어 프레임워크로 리눅스의 ALSA 커널 드라이버와 사용자 영역을 인터페이스 한다.
https://mediaframework-world.tistory.com/31
https://github.com/alsa-project/alsa-lib
# 리눅스에서 사운드 커널 드라이버 정상동작 확인 방법
https://help.ubuntu.com/community/SoundTroubleshooting
aplay -l
lspci -v | grep -A7 -i "audio"
■pulseaudio
펄스오디오(PulseAudio)는 네트워크 기능이 있는 사운드 서버 프로그램으로, freedesktop.org가 배포한다. OS X을 포함한 BSD, 리눅스, 마이크로소프트 윈도우 운영 체제에서 동작한다.
펄스오디오는 libasound를 통해 ALSA와 통신하며 하나 이상의 소스(프로세스나 캡처 장치)로부터 소리 입력을 받아들이고 하나 이상의 싱크(사운드 카드, 원격 네트워크 펄스오디오 서버, 기타 프로세스)로 넘겨주는 백그라운드 프로세스인 사운드 서버를 실행한다.
펄스오디오의 목표들 가운데 하나는(레거시 OSS 응용 프로그램들처럼) 하드웨어에 직접 접근하려는 프로세스들을 포함하여 모든 소리가 펄스오디오를 경유하는 것이다. 펄스오디오는 aRts, ESD와 같은 다른 오디오 시스템을 사용하는 응용 프로그램들에 어댑터를 제공함으로써 이를 수행한다.
https://www.freedesktop.org/wiki/Software/PulseAudio/
# pulseaudio 사용방법
rm -rf ~/.pulse
rm -rf ~/.pulse-cookie
rm -rf ~/.config/pulse
/etc/pulse/client.conf 에서 autospawn = yes 로 설정하고 리부팅
# 데몬 시작
pulseaudio --kill
pulseaudio --start
# pulseaudio 데몬이 실행중인지 확인
pactl list
pactl list short sinks