alsa 및 USB 오디오 믹서를 사용한 병렬/다중 오디오 출력

alsa 및 USB 오디오 믹서를 사용한 병렬/다중 오디오 출력

내 노트북을 위한 새 도킹 스테이션이 있는데 오디오/alsa를 구성하는 데 문제가 있습니다.

cat /proc/asound/cards 확인 후

 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xec248000 irq 158
 1 [Audio          ]: USB-Audio - ThinkPad Dock USB Audio
                      Generic ThinkPad Dock USB Audio at usb-0000:3c:00.0-1.4.4, high speed

나는 이렇게 /etc/asound.conf를 만들었습니다.

pcm.!default {
    type hw
    card 1
}

ctl.!default {
    type hw           
    card 1
}

이는 대부분의 응용 프로그램(Chromium, VLC, mpd 등)에서 작동하는 것 같지만 Firefox에서는 오디오 출력이 나오지 않으며 동시에 여러 응용 프로그램(병렬?)에서도 오디오 출력이 없습니다(예: Chromium을 실행하는 경우) VLC에 오디오가 없습니다.)

VLC에서는 다음과 같은 오류 메시지를 표시합니다.

Audio output failed:
The audio device "default" could not be used:
Device or resource busy.
  • 동시에 여러 응용 프로그램에서 작동하게 하려면 어떻게 해야 합니까?
  • Firefox에서 특별히 해야 할 일이 있나요?
  • 카드 1(도킹 스테이션)이 연결되어 있지 않은 경우 어떻게 카드 0(노트북)으로 돌아가나요?

작은 꽃자루

자원:

설치된 패키지:

alsa-utils, alsa-firmware, sof-firmware

이름-a:

Linux T480s 6.7.4-arch1-1 #1 SMP PREEMPT_DYNAMIC Mon, 05 Feb 2024 22:07:49 +0000 x86_64 GNU/Linux

편집: 다중 오디오 출력 및 Firefox 오디오가 카드0(내부)에서 잘 작동합니다.

편집 2:

다음과 같은https://wiki.archlinux.org/title/Advanced_Linux_Sound_Architecture#Configuring_the_index_order_via_kernel_module_options/etc/modprobe.d/alsa-base.conf에서 카드의 색인 순서를 변경했습니다.

options snd_usb_audio index=0
options snd_hda_intel index=1

/etc/asound.conf를 삭제하고 재부팅했습니다.

snd_usb_audio가 기본 카드(card0)로 로드되면 작동됩니다. Firefox 오디오는 잘 작동하며 동시에 여러 응용 프로그램에서 오디오를 출력할 수 있습니다.

즉, 삽입할 때 snd_usb_audio를 카드0으로 로드하고 삽입하지 않으면 snd_hda_intel로 대체하면 됩니다. alsa-base.conf 또는 /etc/asound.conf에서 이 작업을 수행할 수 있습니까?

답변1

<kidding>"어? 나도 네 말에 동의해, 친구!</kidding>


혼란스러운 방식으로 문제에 접근하려면 다음을 수행하십시오.

Firefox에서 오디오 출력이 없습니다

왜냐면...쯧쯧...기억이 나지 않습니다. 어떤 비극적인 이유로 Firefox는 단일 오디오 백엔드인 pulseaudio를 지원하기로 결정했습니다.
alsa(또는 다른 사운드 서버)로 직접 출력하려는 ​​경우 따라야 할 유일한 방법은... 이를 달성하기 위한 몇 가지 구성 옵션을 여전히 제공하므로 소스에서 빌드하는 것입니다.

장치 또는 리소스가 사용 중입니다.

첫 번째 앱에 대한 정의를 고려하면 pcm.!default
, 해당 앱을 사용하는 첫 번째 앱은 자체적이고 독점적인 사용을 위해 기기를 즉시 차단하여 다른 앱이 동시에 그렇게 하는 것을 방지합니다.
이를 방지하기 위해 내 시스템에 구현한 솔루션은 pcm.default를 dmixer 플러그인으로 만드는 것으로 구성되었습니다.

pcm.!default{
        type plug
        slave.pcm "dmixer"
        hint{
                show on
                description "Tux Alsa Default"}}

기록을 위해 내 dmixer 세부 정보는 다음과 같습니다.

pcm.dmixer{
        type dmix
        ipc_key 219345
        slave{
                pcm MAUDIO
                format S32_LE
                period_size 1024
                buffer_size 4096 }}

그리고 내 MAUDIO pcm은 정의에 주의를 환기시키기 위한 것입니다 nonblock true.

pcm.MAUDIO{
        type hw
        card M2496
        device 0
        subdevice 0
        nonblock true}

관련 정보