Linux/ALSA에서 두 개의 애플리케이션이 동일한(디지털) 사운드 입력을 어떻게 읽을 수 있습니까?

Linux/ALSA에서 두 개의 애플리케이션이 동일한(디지털) 사운드 입력을 어떻게 읽을 수 있습니까?

두 개의 응용 프로그램으로 동시에 액세스하려는 AES/EBU 입력 포트가 있는 사운드 카드가 있습니다. 선형 WAV 파일에 입력을 실시간으로 녹음하는 동시에 IceCast를 통해 스트리밍하고 싶습니다. 순진하게 두 응용 프로그램을 사용하여 동일한 입력 장치에 액세스하려고 하면 해당 장치에 액세스할 수 없다는 메시지가 표시됩니다. 이를 수행하려면 ALSA를 어떻게 설정해야 합니까? 아니면 일부 외부 프로그램을 통해 전달해야 하므로 지연이 발생합니까?

답변1

dsnoop플러그인을 사용하여 샘플 데이터를 여러 가상 캡처 장치에 복사 할 수 있습니다 .

~/.asoundrc다음과 같은 내용을 또는 에 입력 /etc/asound.conf하고 snooped_digital두 애플리케이션 모두에서 장치 이름으로 사용하십시오.

pcm.snooped_digital {
    type dsnoop
    slave {
        pcm "hw:2,1"   # the actual device
        channels 2
        rate 48000
    }
}

관련 정보