믹서(dmix?)가 있는 ALSA와 내부 및 USB 장치가 있는 마이크

믹서(dmix?)가 있는 ALSA와 내부 및 USB 장치가 있는 마이크

질문

ALSA에서 오디오가 작동하도록 하고 싶습니다.

  • 사운드와 혼합(즉, 사운드 출력은 여러 응용 프로그램에서 동시에 사용할 수 있습니다. 그렇지 않으면 일부 응용 프로그램은 즉시 오디오 출력을 예약하고 반환하지 않습니다.)
  • 마이크 포함
  • 두 개의 장치가 있습니다(하나는 내장, 하나는 USB). 동시에 작동할 필요는 없습니다.

내가 소유한 다른 모든 노트북(결국 Lenovo X250)에서는 문제나 추가 구성이 필요하지 않고(없음 /etc/asound.conf또는 ~/.asoundrc) 잘 작동합니다. 현재 Lenovo T14에는 이 기능이 없습니다.

기본 설정, /etc/asound.conf 없음

마이크가 예상대로 작동합니다.

그러나 사운드 출력은 한 번에 하나의 애플리케이션으로 제한됩니다. 두 쉘에서 다음을 두 번 실행하여 이것을 테스트했습니다.

mplayer -ao alsa <audio file>

첫 번째 인스턴스는 예상대로 재생되고 두 번째 인스턴스는 실패합니다.

Playback open error: Device or resource busy

이 문제를 해결해 보세요

.../etc/asound.conf의 pcm.dsp 사용

~에 따르면아치 위키:

pcm.dsp {
    type plug
    slave.pcm "dmix"
}

...효과가 없으며 행동에 변화가 없습니다. 아마도 /dev/dsp가 존재하지 않기 때문일까요?

.../etc/asound.conf에서 pcm.!default를 사용하세요.

~에 따르면이 Unix&Linux 스레드:

pcm.!default {
    type plug
    slave.pcm "dmix"
}

사운드 믹스가 작동합니다. 마이크가 없습니다. 예를 들어 Chromium 브라우저(두 사운드 장치 중 하나, 즉 또는 로 실행됨 chromium --alsa-output-device='sysdefault:CARD=M459') 에는 다음이 chromium --alsa-output-device='sysdefault:CARD=sofhdadsp'표시됩니다.

ALSA lib pcm_dmix.c:1008:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
[105089:105089:0211/111341.634020:ERROR:alsa_util.cc(204)] PcmOpen: default,Invalid argument

이는 dmix와 사운드 캡처가 호환되지 않기 때문인 것 같습니다.이 슈퍼유저 스레드그리고ALSA 매뉴얼asym매우 복잡하고 사운드 장치가 하드코딩되어 있는 .config 파일을 사용하는 것이 좋습니다 ( hw:0,0). 분명히 이것은 나에게 효과가 없습니다. 모든 하드웨어 기능이 정확하더라도 이것이 원칙적으로 내 문제를 해결할 수 있을지 모르겠습니다. 하지만 내 노트북이 특정 날짜의 느낌(및 USB 장치가 연결되어 있는지 여부)에 따라 hw=0.0내부 장치와 USB 장치를 모두 감지할 수 있기 때문에 이 구성을 사용할 수 없습니다 .hw=1.0

노트

사운드 믹싱은 위 명령으로 작동하지만 이 두 명령 중 하나를 사용하면 두 번째 인스턴스에 대해 mplayer -ao alsa 여전히 동일한 오류가 발생합니다. ( Playback open error: Device or resource busy) mplayer -ao alsa:device=hw=1.0 mplayer -ao alsa:device =hw=0.0 그렇지 않습니다. 이유를 모르겠어요. dmix가 기본 장치에만 적용되는 경우(즉, 기본 장치가 아닌 장치를 지정하면 사용되지 않음) 왜 여전히 모든 장치에 대해 마이크를 비활성화하는지 이해가 되지 않습니다.

해결책

가능한 해결 방법은 /etc/asound.conf마이크를 사용할 때마다 이를 변경하고 pcm.!default비트를 주석 처리한 후 변경 사항을 적용하는 것입니다.

alsactl restore

이것은 (내가 아는 한) 작동하지만 불필요하게 복잡하고 확실히 ALSA 구성을 사용하는 방법이 아닙니다.

하드웨어와 소프트웨어

소프트웨어

아키텍처Linux

$ uname -srmo
Linux 5.13.4-arch1-1 x86_64 GNU/Linux

$ alsactl -v
alsactl version 1.2.5.1

$ mplayer 
MPlayer SVN-r38157 (C) 2000-2019 MPlayer Team
225 audio & 468 video codecs
(...)

하드웨어

노트북은 레노버 T14 입니다.

오디오 장비

$ lspci|grep Aud
00:1f.3 Audio device: Intel Corporation Comet Lake PCH-LP cAVS

$ ls /dev/snd/by* -l
/dev/snd/by-id:
total 0
lrwxrwxrwx 1 root root 12 Feb 11 10:30 usb-C-Media_Electronics_Inc._Mpow_459_20200813-00 -> ../controlC1

/dev/snd/by-path:
total 0
lrwxrwxrwx 1 root root 12 Feb 11 10:30 pci-0000:00:14.0-usb-0:4:1.0 -> ../controlC1
lrwxrwxrwx 1 root root 12 Feb 10 12:25 pci-0000:00:1f.3-platform-skl_hda_dsp_generic -> ../controlC0

관련 정보