PulseAudio에서 소스의 포트를 별도의 소스로 분할하는 방법은 무엇입니까?

PulseAudio에서 소스의 포트를 별도의 소스로 분할하는 방법은 무엇입니까?

pactl list sources여러 포트가 있는 소스가 있음을 보여줍니다.

Ports:
    analog-input-front-mic: Front Microphone (priority: 8500, not available)
    analog-input-rear-mic: Rear Microphone (priority: 8200, available)
    analog-input-linein: Line In (priority: 8100, available)

다음을 사용하여 루프백하고 함께 혼합하여 단일 싱크에서 출력할 수 있도록 이러한 포트를 별도의 소스로 분할하고 싶습니다.

pactl load-module module-loopback source=whatever sink=whatever

내가 무엇인가 놓치고 있지 않는 한, module-remap-source내가 추구하는 것을 성취하는 것은 불가능해 보입니다.

별도의 소스가 없으면 pavucontrol특정 소스에 대해 한 번에 하나의 포트만 활성화되도록 허용하는 인터페이스를 사용하여 수동으로만 포트를 전환할 수 있습니다.

LXDE를 사용하여 Debian Stretch를 실행하세요.

xfce4-mixer믹스(이 경우에는 내 헤드폰) 를 사용하여 Windows 7 및 Debian Jessie에서도 동일한 설정을 쉽게 수행할 수 있습니다

결과는 다음과 같습니다 cat /proc/asound/pcm.

00-00: ALC887-VD Analog : ALC887-VD Analog : playback 1 : capture 1
00-02: ALC887-VD Alt Analog : ALC887-VD Alt Analog : capture 1
01-03: HDMI 0 : HDMI 0 : playback 1
01-07: HDMI 1 : HDMI 1 : playback 1
01-08: HDMI 2 : HDMI 2 : playback 1
02-00: USB Audio : USB Audio : playback 1 : capture 1

결과는 다음과 같습니다 cat /proc/asound/card*/codec\#*.

https://pastebin.com/yusn4hJP

고쳐 쓰다:

이후 Alsa 위에서 직접 지우고 완전히 사용(사용 및 활성화) pulseaudio하여 pavucontrolqasmixer문제 를 피했습니다 . 이는 현재 단종된 제품보다 더 다양하지는 않지만 동일합니다 . 내가 그다지 팬은 아니지만 여전히 시도해 볼 가치가 있는 다른 Alsa 블렌더로는 및 가 있습니다 .Loopback MixingShow device selectionxfce4-mixervoltialsamixergui

이것이 내 문제를 해결했음에도 불구하고 이 질문에 대한 완전한 대답은 아닙니다. 특히 이 질문은 Pulseaudio 포트를 독립적인 소스로 분할하는 가능성과 방법도 다루기 때문입니다.

답변1

ALSA에서 "ALC887-VD 아날로그" 및 "ALC887-VD Alt 아날로그"라고 부르는 두 개의 A/D 변환기(오디오 입력 노드)만 있습니다. 따라서 소프트웨어 측면에서 얻을 수 있는 최선의 방법은 두 개의 소스이며, 두 소스에 대한 포트를 수동으로 전환해야 합니다(지금 단일 소스에 대해 수행하는 것처럼). 하지만 설정이 간단하지 않으며 에서 구성 파일과 경로를 조작하고 /usr/share/pulseaudio/alsa-mixer/profile-sets/Pulseaudio 모듈을 수동으로 언로드 및 로드해야 합니다. 내 시스템에서 시도해 보았지만 여전히 만족스러운 구성을 얻지 못했습니다.

그러나 목표가 "Pulseaudio의 모든 싱크로 루프백할 수 있도록 여러 Pulseaudio 소스를 원합니다"가 아니라 "하드웨어 오디오 입력을 하드웨어 오디오 출력(헤드폰)으로 다시 루프하고 싶습니다"인 경우 하드웨어를 사용할 수 있습니다. 믹서(아마도 xfce4-mixer를 사용하여 Windows 7에서 수행하는 작업일 것입니다).

따라서 유사한 프로그램을 사용하여 alsamixer하드웨어 amixer루프백 설정을 제어하면 이전과 같이 작동해야 합니다.

답변2

내 생각엔 네 문제에 대한 해결책을 찾은 것 같아여기. 아이디어는 다음과 같습니다.

  1. 사용 가능한 ALSA 사운드 카드 및 입력 목록을 가져옵니다.

    $ arecord -l
    **** List of CAPTURE Hardware Devices ****
    card 1: Generic [HD-Audio Generic], device 0: ALC887-VD Analog [ALC887-VD Analog]
      Subdevices: 0/1
      Subdevice #0: subdevice #0
    card 1: Generic [HD-Audio Generic], device 2: ALC887-VD Alt Analog [ALC887-VD Alt Analog]
      Subdevices: 0/1
      Subdevice #0: subdevice #0
    

    카드 및 장치 번호를 기록해 둡니다(위 예에서는card 1두 개의 입력 장치:device 0그리고device 2).

  2. 사용자별 PulseAudio 구성 파일이 없는 경우 복사본을 만드세요.

    cp /etc/pulse/default.pa ~/.config/pulse/default.pa 그리고 간단한 텍스트 편집기로 사본을 열어보세요. 정적 장치 구성과 관련된 섹션을 찾아 ALSA 장치에 대해 다음 줄을 추가합니다.

    ### Load audio drivers statically
    ### (it's probably better to not load these drivers manually, but instead
    ### use module-udev-detect -- see below -- for doing this automatically)
    #load-module module-alsa-sink
    #load-module module-alsa-source device=hw:1,0
    #load-module module-oss device="/dev/dsp" sink_name=output source_name=input
    #load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
    #load-module module-null-sink
    #load-module module-pipe-sink
    
    load-module module-alsa-sink device=hw:1,0 name="ALSAOutput"
    load-module module-alsa-source device=hw:1,0 name="ALSASource1" source_properties=device.description="ALSASource1"
    load-module module-alsa-source device=hw:1,2 name="ALSASource2" source_properties=device.description="ALSASource2"
    
    
    ### Automatically load driver modules depending on the hardware available
    #.ifexists module-udev-detect.so
    #load-module module-udev-detect
    #.else
    ### Use the static hardware detection module (for systems that lack udev support)
    #load-module module-detect
    #.endif
    

    device=hw:1,0이 줄에서는 구성에 따라 매개변수를 편집해야 합니다. 여기서 첫 번째 숫자는카드숫자, 두 번째는장비번호를 입력하려면 이전 단계의 번호를 기억해야 합니다.

    udev를 사용하여 드라이버를 자동 로드하는 방법에 대한 다음 섹션도 주석 처리해야 합니다.

  3. 사용자를 위해 PulseAudio를 다시 시작하세요.

    $ systemctl --user restart pulseaudio
    

완료되면 pavucontrol하나의 출력 장치와 두 개의 별도 입력 장치가 표시됩니다.

여기에 이미지 설명을 입력하세요.

여기에 이미지 설명을 입력하세요.

입력 장치의 이름은 pavucontrol위의 구성 파일에서 할당한 이름(매개변수)입니다 source_properties=device.description="ALSASource1". 이는 장치에 고유한 이름을 할당하는 편리한 방법입니다.

  1. 다음으로, 이러한 입력을 사용하려면 실제로 각 ALSA 입력에 올바른 음원을 할당해야 합니다. 이렇게 하려면 alsamixer콘솔에서 실행하고 F6을 눌러 사운드 카드를 선택한 다음 F4를 눌러 캡처 탭으로 전환하고 아래와 같이 필요한 입력을 할당하는 것이 좋습니다.

여기에 이미지 설명을 입력하세요.

Line in제 예에서는 첫 번째 입력과 Front Mic두 번째 입력을 선택했습니다 .

또한 두 캡처 장치가 모두 음소거되지 않았는지 확인해야 합니다. 이를 열려면 왼쪽/오른쪽 화살표 키를 사용하여 CaptureCapture 1컨트롤로 전환하고 스페이스바를 누르십시오. '라는 빨간색 글자가 보이실 겁니다.포착'장치가 있을 때존재하다.

그래서 이 시점에서 당신은두 개의 포트단일 장치는 다음과 같이 구분됩니다.두 개의 별도 장치pavucontrolPulseAudio에서는 평소처럼 원하는 대로 자유롭게 작업할 수 있습니다. 예를 들어, 이 두 소스의 신호를 연결하려면 다음을 사용할 수 있습니다.이 조리법.

이러한 모든 변경 사항을 되돌리려면 ~/.config/pulse/default.pa파일을 다시 편집하고 새 줄을 주석 처리하고 이전 줄의 주석 처리를 제거하면 됩니다. 아니면 파일을 직접 삭제할 수도 있습니다. 그런 다음 PulseAudio를 다시 시작하세요.

PS 저는 이 작업을 수행하는 더 스마트한 방법(예: PulseAudio용 사용자 정의 장치 프로필 생성)이 있어야 한다고 생각하지만 이에 익숙하지 않습니다. 어쩌면 여기 다른 누군가가 힌트를 줄 수도 있습니다.

관련 정보