특정 마이크 및 출력을 사용하도록 ALSA 구성

특정 마이크 및 출력을 사용하도록 ALSA 구성

HDMI 사운드를 출력으로 사용하고 USB 마이크를 입력으로 사용하도록 ALSA를 구성하려고 합니다. 나는 asound.confdmix/dsnoop이 없는 직업을 가지고 있습니다:

pcm.usb_mic_raw {
  type hw
  card Device
  device 0
}

pcm.usb_mic_plug {
  type plug
  slave {
    pcm usb_mic_raw
    format S16_LE
    rate 48000
    channels 1
  }
}

# Don't use pcm.hdmi because it's taken by the default config files
pcm.hdmi_raw {
  type hw
  card HDMI
  device 9
}

pcm.hdmi_plug {
  type plug
  slave {
    pcm hdmi_raw
    format S16_LE
    rate 48000
    channels 2
  }
}

pcm.!default {
  type asym;
  playback.pcm "hdmi_plug";
  capture.pcm "usb_mic_plug";
}

이것은 잘 작동하며 믹싱이 필요하지 않습니다. 한 번에 하나의 프로그램만 사운드를 재생할 수 있습니다.

plug에서 으로 전환하려고 하면 dmix다음 오류가 발생합니다.

juice:~ aplay -D hdmi_plug good.wav                                                                  1 :(
Playing WAVE 'good.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono
[..works..]

juice:~ aplay -D hdmi_dmix good.wav                                                                  1 :(
Playing WAVE 'good.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono
aplay: set_params:1358: Channels count non available

제가 추가한 부분은 다음과 같습니다.

pcm.hdmi_dmix {
  type dmix
  ipc_key 200
  slave {
    pcm hdmi_raw
    format S16_LE
    rate 48000
    period_time 0
    period_size 2048
    buffer_size 8192
    channels 2
  }
  bindings {
   0 0
   1 1
  }
}

중요한 경우 저는 Arch Linux를 사용하고 있고 pulseaudio와 pulseaudio-alsa를 설치했습니다.

답변1

부분 답변:

pulseaudio를 설치하지 않고 Discord를 열면 장치가 없고 오디오도 표시되지 않습니다.

이는 Discord에 ALSA 드라이버가 없고 Pulseaudio 드라이버만 있을 수 있음을 의미합니다. (그러나 Discord는 비공개 소스이므로 확실히 말할 수는 없습니다.)

pulseaudio가 설치된 Discord를 열면 "alsa"라는 출력 장치가 보입니다.

Discord가 Pulseaudio 장치의 이름을 어떻게 지정했는지 잘 모르겠습니다.

pulseaudio가 내 장치를 감지하지 못하는 것 같아서 ALSA를 구성하고 있습니다.

그런 다음 이를 디버깅해야 합니다. 무엇을 보여줄까요 pactl list short? 최소한 하나의 ALSA 카드(아마도 그 이상)와 관련 소스 및 싱크가 표시되어야 합니다.

그렇다면: 두 가지를 모두 설치하고 pavucontrolDiscord가 실행되는 동안 실행한 다음 Discord에 대한 올바른 소스와 싱크를 선택하세요.

관련 정보