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;