![我可以将立体声音频混音为单声道吗?](https://linux22.com/image/807419/%E6%88%91%E5%8F%AF%E4%BB%A5%E5%B0%86%E7%AB%8B%E4%BD%93%E5%A3%B0%E9%9F%B3%E9%A2%91%E6%B7%B7%E9%9F%B3%E4%B8%BA%E5%8D%95%E5%A3%B0%E9%81%93%E5%90%97%EF%BC%9F.png)
我的电脑旁边有一个扬声器,我主要将其用作耳机放大器。有时我需要将其用作扬声器。是否可以快速将音频输出从立体声更改为单声道,无论是系统范围的还是作为媒体播放器的插件?
答案1
通过运行找到音频接收器的名称
pacmd list-sinks | grep name:
然后运行此命令(注意从上一个命令的结果中删除尖括号):
pacmd load-module module-remap-sink sink_name=mono master=NAME_OF_AUDIO_SINK_GIVEN_BY_PREVIOUS_COMMAND channels=2 channel_map=mono,mono
或添加
load-module module-remap-sink sink_name=mono master=NAME_OF_AUDIO_SINK_GIVEN_BY_PREVIOUS_COMMAND channels=2 channel_map=mono,mono
使其/etc/pulse/default.pa
在启动时运行。
然后在声音偏好设置选择“单声道”作为输出,但请记住将音量降低一半,因为两个声道会混合成一个,否则会出现失真。要测试,请运行:
speaker-test -c 2 -t sine
用一个命令就可以完成同样的事情:
pacmd load-module module-remap-sink sink_name=mono master=$(pacmd list-sinks | grep -m 1 -oP 'name:\s<\K.*(?=>)') channels=2 channel_map=mono,mono
要删除单声道,只需使用:
pacmd unload-module module-remap-sink
答案2
我已经将答案 1 放入 perl 脚本中,因此我不需要记住这两个命令:
#!/usr/bin/perl
use strict;
my @choices = ();
my $i = 0;
for (`pacmd list-sinks`) {
if( /name:.*<(.+)>/) {
$choices[$i++] = $1;
print "$i:\t$1\n";
}
}
my $choice = $choices[<>-1] or die "invalid choice";
exec (qw(pacmd load-module module-remap-sink sink_name=mono),
"master=$choice",
qw(channels=2 channel_map=mono,mono));
(我本来想注释这个答案,但是我的运气太差了 ;-))
答案3
如果你正在使用杰克,那么您可以使用 patchage(可以使用 进行安装apt-get install patchage
)来完成此操作。它的界面非常直观。
答案4
作为附录,在您根据上述答案创建单声道接收器后,您可以将此脚本映射到热键:
#!/bin/bash
if [ "* index: 0" == "$(pacmd list-sinks | grep "*" | sed 's/^ *//')" ];
then pacmd set-default-sink 1 && notify-send "Mono";
SINK=1;
else
pacmd set-default-sink 0 && notify-send "Stereo";
SINK=0;
fi;
pacmd list-sink-inputs | grep index | grep -o '[0-9]*' | while read -r line;
do pacmd move-sink-input $line $SINK;
done;
这将在接收器之间切换,并将当前流重新映射到新的接收器(ma