2016-06-07 1 views
0

우분투 15.10에서 pulseaudio를 사용하여 두 개의 다른 마이크를 하나의 싱크에 결합하고 두 개의 다른 출력에서 ​​결합 된 출력을 재생하려고합니다. 아래 스크립트는 첫 번째 부분 (웹에서 찾은 부분)을 수행하지만 출력은 단일 출력에서만 재생되는 것처럼 보입니다.Pulseaudio - 결합 된 스피커 싱크에서 출력을 재생하기 위해 결합 된 마이크 스트림

후자의 단계를 수행하려면 무엇이 필요합니까?

#!/bin/bash 

# Script to map two pulseaudio hardware input sources as mono inputs 
# to left and right channel of a new loopback-sink respectively. This 
# sink can be used e.g. to use VoIP or record two microphones seperately. 
# Copyright (C) 2013, Henning Hollermann, [email protected] 
# 
# This program is free software: you can redistribute it and/or modify 
# it under the terms of the GNU General Public License as published by 
# the Free Software Foundation, either version 3 of the License, or 
# (at your option) any later version. 
# 
# This program is distributed in the hope that it will be useful, 
# but WITHOUT ANY WARRANTY; without even the implied warranty of 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
# GNU General Public License for more details. 
# 
# You should have received a copy of the GNU General Public License 
# along with this program. If not, see <http://www.gnu.org/licenses/>. 

do_activate() { 
    while [ "x" = "x$LEFT" ]; do 
     echo "Choose Source for left channel by ID" 
     pactl list short sources 
     read ID 
     LEFT=$(pactl list short sources|awk '/^'$ID'/{print $2}') 
    done 
    while [ "x" = "x$RIGHT" ]; do 
     echo "Choose Source for right channel by ID" 
     pactl list short sources | grep -v $LEFT 
     read ID 
     RIGHT=$(pactl list short sources | grep -v $LEFT|awk '/^'$ID'/{print $2}') 
    done 
    # Create the name of the Combined sink 
    NAME="Combined_Mics:_Left:_"$(echo $LEFT|awk -F'.' '$0=$2')"_Right:_"$(echo $RIGHT|awk -F'.' '$0=$2') 

    echo "[LOAD] null sink as \"$NAME\" to connect the two mics to" 
    pactl load-module module-null-sink \ 
      sink_name=combined channels=2 \ 
      sink_properties="device.description=$NAME" 

    echo "[LOAD] map source 1 ($LEFT) to left channel of \"$NAME\"" 
    pactl load-module module-remap-source \ 
      source_name=${LEFT}_left_channel master=$LEFT channels=2 \ 
      master_channel_map=mono,mono channel_map=left,left 
    pactl load-module module-loopback sink=combined source=${LEFT}_left_channel 

    echo "[LOAD] map source 2 ($RIGHT) to right channel of \"$NAME\"" 
    pactl load-module module-remap-source \ 
      source_name=${RIGHT}_right_channel master=$RIGHT channels=2 \ 
      master_channel_map=mono,mono channel_map=right,right 
    pactl load-module module-loopback sink=combined source=${RIGHT}_right_channel 
    echo "[DONE] Now adjust the left and right channel volume of the new sink to be equally loud" 


} 

do_deactivate() { 
    echo "[UNLOAD] pulseaudio modules..." 
    echo "[UNLOAD] module-loopback" 
    pactl unload-module module-loopback 
    echo "[UNLOAD] module-remap-source" 
    pactl unload-module module-remap-source 
    echo "[UNLOAD] module-null-sink" 
    pactl unload-module module-null-sink 
} 

init() { 
    for exe in /usr/bin/pulseaudio /usr/bin/pactl; do 
     if [ ! -x "$exe" ]; then 
      echo "[ERROR] required file $exe not found or not executable" 
      exit 1 
     fi 
    done 
    [ ! -x /usr/bin/pavucontrol ] && echo "[NOTICE] pavucontrol might be very useful." 
} 

# MAIN 
init; 
case $1 in 
activate|enable|start) 
    do_activate;; 
deactivate|disable|stop) 
    do_deactivate;; 
*) 
    echo "Usage: $0 [enable|disable]";; 
esac; 

답변

0

이 내가 원하는 것을했다 :

pactl load-module module-loopback latency_msec=1 source=alsa_input.pci-0000_00_1b.0.analog-stereo sink=bluez_sink.00_02_5B_00_FF_03 

pactl load-module module-loopback latency_msec=1 source=bluez_source.00_02_5B_00_FF_03 sink=alsa_output.pci-0000_00_1b.0.analog-stereo