PulseAudio 헤드폰 문제

PulseAudio 헤드폰 문제

전통에 따라 펄스 오디오를 사용하는 데 문제가 있습니다.

X(DWM)를 입력하고 google-chrome을 실행한 후 youtube.com으로 이동하여 동영상을 재생하면 헤드폰이 작동하지 않고 소리가 고르지 않게 됩니다.

speaker-test -c 2 -t wav -D plughw:2,0결과: 재생 열기 오류: -16, 장치 또는 리소스 사용 중

X를 다시 시작하면(로그아웃 -> 로그인) 브라우저의 오디오가 마술처럼 작동하기 시작합니다.

****재생 하드웨어 장치 목록****

card 0: PCH [HDA Intel PCH], device 0: ALC898 Analog [ALC898 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: ALC898 Digital [ALC898 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: Device [USB Sound Device], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

무슨 일이 일어났는지 모르겠습니다. 아래는 제가 받은 메시지입니다./var/log/메시지

처음 로그인

Mar 11 20:07:31 qwerty pulseaudio[1223]: [pulseaudio] alsa-mixer.c: Volume element Speaker has 8 channels. That's too much
Mar 11 20:07:31 qwerty pulseaudio[1223]: [pulseaudio] alsa-mixer.c: Volume element Speaker has 8 channels. That's too much
Mar 11 20:07:31 qwerty pulseaudio[1223]: [pulseaudio] alsa-mixer.c: Volume element Speaker has 8 channels. That's too much
Mar 11 20:07:31 qwerty pulseaudio[1223]: [pulseaudio] alsa-mixer.c: Volume element Speaker has 8 channels. That's too much
Mar 11 20:07:31 qwerty pulseaudio[1223]: [pulseaudio] alsa-mixer.c: Volume element Speaker has 8 channels. That's too much
Mar 11 20:07:44 qwerty org.a11y.Bus[1007]: Activating service name='org.a11y.atspi.Registry'
Mar 11 20:07:44 qwerty org.a11y.Bus[1007]: Successfully activated service 'org.a11y.atspi.Registry'
Mar 11 20:07:44 qwerty org.a11y.atspi.Registry[1288]: SpiRegistry daemon is running with well-known name - org.a11y.atspi.

두 번째 로그인

Mar 11 20:08:01 qwerty org.gtk.vfs.Daemon[1007]: A connection to the bus can't be made
Mar 11 20:08:01 qwerty org.gtk.vfs.Daemon[1007]: g_dbus_connection_real_closed: Remote peer vanished with error: Underlyin on an async read (g-io-error-quark, 0). Exiting.
Mar 11 20:08:01 qwerty org.a11y.Bus[1007]: g_dbus_connection_real_closed: Remote peer vanished with error: Underlying GIOS async read (g-io-error-quark, 0). Exiting.
Mar 11 20:08:01 qwerty org.a11y.atspi.Registry[1288]: g_dbus_connection_real_closed: Remote peer vanished with error: Undebytes on an async read (g-io-error-quark, 0). Exiting.
Mar 11 20:08:02 qwerty org.a11y.Bus[1007]: No protocol specified
Mar 11 20:08:17 qwerty org.a11y.Bus[1349]: Activating service name='org.a11y.atspi.Registry'
Mar 11 20:08:17 qwerty org.a11y.Bus[1349]: Successfully activated service 'org.a11y.atspi.Registry'
Mar 11 20:08:17 qwerty org.a11y.atspi.Registry[1539]: SpiRegistry daemon is running with well-known name - org.a11y.atspi.

Asound.conf

pcm.pulse {
    type pulse
}

ctl.pulse {
    type pulse
}

pcm.!default {
    type pulse
}

ctl.!default {
    type pulse
}

ALSA 정보 스크립트의 출력 v 0.4.64

http://www.alsa-project.org/db/?f=5290b8d86207b2cba3c1e4854fea0399e7fdb9f7

계속해서 실행 중인 모든 pulseaudio 프로세스를 종료한 다음 실행하면

speaker-test -c 2 -t wav -D plughw:2,0오디오는 작동하지만 분명히 브라우저에서는 작동하지 않습니다.

이제 두 가지 옵션이 있습니다. pulseaudio를 제거하고 환경 변수를 통해 PCM_DEVICE를 설정하려고 시도하는 것입니다. 이 역시 고통스럽습니다** 또는 이 pulseaudio 문제를 정리하려고 합니다... 저는 다른 곳에서 시간을 보내는 편이 낫습니다.

답변1

문제가 갑자기 발생하고 설치한 패키지가 무엇인지 모르기 때문에 pulseaudio로 수정하여 수정하려고 하지 않지만 구성 파일에서 아무것도 변경하지 않았으며 문제가 발생했습니다. 갑자기 나타났습니다.

문제를 해결하기 위해 내가 한 일은 펄스오디오를 완전히 제거하는 것이었습니다.

apt-get --purge remove pulseaudio*
rm -r ~/.config/pulse

원래 alsa로 다시 변경사운드 프로필파일을 만들고 장치 환경 변수에 대한 입력을 추가했습니다.

/ETC/ASOUND.CONF

defaults.pcm.!card Device
defaults.ctl.!card Device
defaults.pcm.!device { 
        @func igetenv  
                vars [ ALSA_PCM_DEVICE ]  
                default 0 
}

효과가있다! ("device"는 내 USB 카드의 이름입니다)

여러 오디오 출력 장치가 있는 카드로 전환할 때 환경 변수를 설정해야 합니다.

명령: >ALSA_PCM_CARD=카드 ALSA_PCM_DEVICE=장치 Firefox

ALSA_PCM_DEVICE를 asound.conf에 추가하지 않고는 설정할 수 없습니다. 비록 .conf에 정의되어 있지만 분명히 설정하기에 충분하지 않습니다 /usr/share/alsa/alsa.conf.

그 이유는 Plughw가 ALSA_PCM_DEVICE를 사용하고 설정되지 않은 경우 defaults.pcm.device로 폴백하는 반면, dmix는 (/usr/share/alsa/pcm/dmix.conf)ALSA_PCM_DEVICE를 확인하지 않고 defaults.pcm.device만 사용하기 때문 입니다.

그렇기 때문에 ALSA_PCM_DEVICE 환경 변수를 확인하도록 defaults.pcm.!device를 명시적으로 다시 정의해야 합니다.

편집하다(IRC - ALSA 환경 변수 요약 대화 상자)

특이한 내장 장치/드라이버가 없다면 말이죠.

Alsa는 유사한 "default"=plug->dmix->hw 재생 체인을 제공해야 합니다.

~/.asoundrc가 전혀 필요하지 않고 즉시 작동해야 합니다.

기본적으로 체인은 카드 0 장치 0에서 끝납니다.

또는 기술적으로 말하자면, (1) 설정되지 않은 경우 카드 ALSA_PCM_CARD 환경의 기본값입니다. (2) 설정되지 않은 경우 ALSA_CARD env.variable의 기본값입니다. (3) 다음과 같은 경우 기본값은 "defaults.pcm.card" alsa 변수입니다. 설정되지 않았으며(4) 기본값은 카드 0입니다.

예를 들어, 모든 응용 프로그램이 "PCH"라는 사운드 카드를 재생하도록 하려면 ~/.asoundrc(사용자만 해당) 또는 /etc/asound.conf(모든 사용자)에 두 줄만 추가하면 됩니다.

defaults.pcm.!카드 PCH

defaults.ctl.!카드 PCH

이를 무시하고 "헤드셋"이라는 카드를 재생하려면 애플리케이션을 실행할 수 있습니다 . 또는 출력에서 ​​카드 이름을 env ALSA_CARD=Headset some-app-here볼 수 있습니다 . 기술적으로는 카드번호( )를 사용할 수도 있지만 재부팅 시 카드번호가 바뀔 수 있으므로 일반적으로 이름을 사용하는 것이 좋습니다.cat /proc/asound/cardsaplay -lenv ALSA_CARD=2 some-app-here

편집하다(IRC에 대한 요약 대화 - PulseAudio)

Pulseaudio는 일을 다르게 수행합니다. 중간 모듈을 추가하는 대신 전역 pulseaudio 데몬을 추가하고 해당 데몬은 "hw" pcm을 직접 재생합니다. 다른 모든 응용 프로그램은 이 데몬을 재생해야 합니다. 왜냐하면 다른 응용 프로그램이 실행되는 동안 "hw"를 재생할 수 없기 때문입니다. 그래서 "장치 또는 리소스가 사용 중입니다"라는 메시지가 표시됩니다.

따라서 일반적인 pulseaudio 재생 체인은 default="typepulse" 모듈->pulseaudio daemon->hw입니다. pulseaudio와 함께 "hw", "plughw" 또는 "dmix"를 사용하면 안 됩니다. 둘은 함께 작동하지 않습니다. 대신에 pcm.!default { typepulse } 를 정의해야 합니다(사실 pulseaudio는 일반적으로 이 작업을 자동으로 수행합니다).

pulseaudio가 설치되어 있으면 pcm.!default { typepulse}만 있으면 됩니다. 대부분의 배포판에서 pulseaudio는 이 작업을 자동으로 수행합니다. (archlinux에서는 별도의 "pulseaudio-alsa" 패키지로 패키지되어 있으며 기본적으로 이 alsa 구성만 있고 다른 것은 없습니다)

관련 정보