
내 ArchLinux PC와 ArchLinux MacBook 모두에서 이런 일이 발생하는 것을 확인했습니다. 짧은 오디오 톤을 통해 응용 프로그램 알림을 받아야 하는데 응용 프로그램에 알리는 문제가 아니라 시스템 자체로 인해 문제가 발생하지 않으며 이는 크게 다른 두 시스템에서 발생한다는 것을 알아냈습니다.
짧은 오디오 파일을 재생할 때 paplay /usr/share/sounds/freedesktop/stereo/message.oga
처음 재생할 때 소리가 들리지 않는 것처럼 보입니다.
순서대로 다시 재생하면 소리가 들리고 올바르게 재생되며 항상 순서대로 반복합니다.
다시 재생하기 위해 10초 정도 기다리면 음소거 상태가 됩니다(처음처럼). 예열할 때만 소리가 납니다.
에서도 마찬가지이지만 aplay /usr/share/sounds/alsa/Front_Left.wav
톤이 길기 때문에 파일 시작 부분에서만 문제가 발생합니다. 처음에는 "t left"만 들리고 "fron"은 빠졌습니다. 그 후에 나는 "왼쪽 앞"이라는 소리를 완전하고 명확하게 듣습니다. 10초만 기다리면 다시 "떠나지 마세요"가 됩니다.
미디어 플레이어의 백그라운드에서 음악 파일을 재생하는 경우에는 문제가 발생하지 않습니다. 컴퓨터에서 소리가 재생되지 않는 경우에만 발생합니다.
이 문제를 해결하는 방법은 무엇입니까? (PC를 항상 따뜻하게 유지하기 위해 백그라운드의 데몬에서 들리지 않는 소리를 재생하는 것을 제외하고)
alsa만을 사용하여 문제가 지속되는 관련 테스트 세션:
~ ❯❯❯ sudo mv /usr/bin/pulseaudio /usr/bin/pulseaudio.bak
~ ❯❯❯ pulseaudio.bak --kill
W: [pulseaudio.bak] main.c: Couldn't canonicalize binary path, cannot self execute.
~ ❯❯❯ paplay /usr/share/sounds/freedesktop/stereo/message.oga
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
~ ❯❯❯ ps axu | grep -i pulse
francis+ 31563 0.0 0.0 10796 2144 pts/2 S+ 14:35 0:00 grep --color=auto -i pulse
~ ❯❯❯ aplay -D plughw:0,7 /usr/share/sounds/alsa/Front_Left.wav
Playing WAVE '/usr/share/sounds/alsa/Front_Left.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
~ ❯❯❯ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: Generic Analog [Generic Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: Generic Digital [Generic Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
~ ❯❯❯ lspci -nn | grep -i audio
00:1f.3 Audio device [0403]: Intel Corporation Device [8086:a2f0]
업데이트
Linux 커널 4.11.2 이후,ALC1220 코덱은:
~ ❯❯❯ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC1220 Analog [ALC1220 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: ALC1220 Digital [ALC1220 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3]
Subdevices: 1/1
Subdevice #0: subdevice #0
헤드폰을 연결하고 aplay
다음을 사용하여 문제를 재현했습니다.
~ ❯❯❯ aplay -D plughw:0,0 /usr/share/sounds/alsa/Front_Left.wav
~ ❯❯❯ aplay -D plughw:0,0 /usr/share/sounds/purple/alert.wav
~ ❯❯❯ aplay -D plughw:0,0 /usr/share/sounds/alsa/Front_Left.wav
~ ❯❯❯ aplay -D plughw:0,0 /usr/share/sounds/purple/alert.wav
...
서로 다른 디렉토리에 있는 서로 다른 오디오 파일을 재생해야 했는데, 하나가 재생되면 두 재생 모두 처음에 잘리고 다른 하나는 재생되는 경우 재생 사이의 간격은 중요하지 않습니다. 파일이 한 번 재생되면 나중에 동일한 디렉터리에 있는 파일을 재생해도 문제가 재현되지 않으며 "냉각"될 때까지 기다리지도 않습니다(1분 동안 기다림). paplay
펄스 오디오를 켤 때도 마찬가지입니다 . HDMI를 통해 재생할 때 두 테스트 사례 모두에서 재생됩니다.
업데이트 2
게으른 탓에 아직 ALSA 개발자에게 보고하지는 않았지만,사용자 시스템 단위:
[Unit]
Description=Continuous silence
[Service]
ExecStart=/usr/bin/play -qn
[Install]
WantedBy=default.target
에 저장하고 ~/.config/systemd/user/continuous-silence.service
으로 활성화하면 됩니다 systemctl --user enable continuous-silence
.
답변1
수신 사운드 시스템이 사운드를 출력하기 전에 "깨어나야" 한다는 가정하에, 단지 그렇게 하기만 하면 됩니다.~ 후에사운드 데이터의 초기 배치를 수신하고 첫 번째 배치를 삭제합니다. 수신 사운드 시스템에서 이 문제를 해결할 수 없는 경우 해결 방법은 다음과 같이 지속적으로 무음을 출력하는 것 play
입니다 sox
.
play -n
편집하다
Windows에서 작동한다는 추가 정보와 사운드 카드("Intel Corporation Device")나 코덱("일반")이 이름으로 인식되지 않는다는 정보를 보면 일부 드라이버 문제일 수도 있습니다. 코덱에는 "KAE(Keep Alive Enable)" 비트가 있습니다. 아마도 믹서 컨트롤을 통해 설정해야 할 수도 있지만 이에 대해 충분히 알지 못합니다.
ALSA 개발자에게 버그를 신고하고 정보 lspci -nn
와 cat /proc/asound/card*/codec\#*
. (후자의 출력을 페이스트빈에 넣고 링크로 질문을 편집하여 살펴볼 수도 있습니다.)
답변2
순수 펄스 오디오 대신 펄스 오디오 잭과 결합된 잭 오디오 연결 키트를 채택하기 시작했을 때 또 다른 문제가 해결되었습니다.
답변3
낮은 대기 시간 오디오 설정 방법에 대한 위키를 따라 수정되었습니다.
- 위키의 섹션 1.1을 따르세요.https://wiki.archlinux.org/title/Professional_audio
- linux-rt AUR 커널을 설치하지 마십시오
- 섹션 1.1을 완료한 후 재부팅하면 대기 시간이 없어집니다.
- 그렇지 않다면 위키의 나머지 부분을 진행하고 JACK을 구성하세요.