我可以将立体声音频缩混为单声道吗?

52 sound

我的电脑旁边有一个扬声器,我主要用作耳机放大器。有时我需要将它用作扬声器。是否可以将音频输出从立体声快速更改为单声道,无论是系统范围内的还是作为媒体播放器的插件?

dai*_*ib8 81

  1. 通过运行找到您的音频接收器的名称

    pacmd list-sinks | grep name:
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后运行此命令(注意从上一个命令的结果中删除尖括号):

    pacmd load-module module-remap-sink sink_name=mono master=NAME_OF_AUDIO_SINK_GIVEN_BY_PREVIOUS_COMMAND channels=2 channel_map=mono,mono
    
    Run Code Online (Sandbox Code Playgroud)

或添加

    load-module module-remap-sink sink_name=mono master=NAME_OF_AUDIO_SINK_GIVEN_BY_PREVIOUS_COMMAND channels=2 channel_map=mono,mono
Run Code Online (Sandbox Code Playgroud)

/etc/pulse/default.pa有它在启动时运行。

  1. 然后在Sound Preferences 中选择“Mono”作为输出,但请记住将音量减半,因为两个通道混合为一个,否则会产生失真。要测试,请运行:

    speaker-test -c 2 -t sine
    
    Run Code Online (Sandbox Code Playgroud)

单个命令中的相同内容:

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
Run Code Online (Sandbox Code Playgroud)
  1. 要删除单声道,只需使用:

    pacmd unload-module module-remap-sink
    
    Run Code Online (Sandbox Code Playgroud)

  • 只是对任何有点困惑的人(就像我一样)的评论:当@daithib8 写“或将 pacmd 的参数添加到 /etc/pulse/default.pa”时,这意味着执行 `sudo emacs /etc/pulse/default .pa`(或 `sudo nano` 或任何你喜欢的编辑器),向下滚动到最后,然后将命令中除 `pacmd` 部分之外的所有内容粘贴到文件底部的新行中。然后保存并重新启动:-) (7认同)
  • 您是单侧听力损失患者的救星。 (6认同)
  • 请务必降低“应用程序”音量(也可在声音首选项中找到)以及“输出”音量。如果您从终端播放音乐,您可以从那里调整音量。 (2认同)
  • 我通过`channels=1 channel_map=mono` 做得很好。 (2认同)

小智 16

我已将答案 1 转换为 perl 脚本,因此我不需要记住这 2 个命令:

#!/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));
Run Code Online (Sandbox Code Playgroud)

(我会注释那个答案,但我的业力太低了 ;-) )

  • 哦,您可以将 exec 命令替换为`exec "pacmd load-module module-remap-sink sink_name=hono master=$choice channels=1 channel_map=mono &gt;/dev/null";`(这会隐藏输出,并稍微使用更简单的映射。) (2认同)

Jan*_*sen 1

似乎没有简单的方法可以做到这一点。

不过,您可以通过将所有 PulseAudio 输出代理到 Jack 接收器来做到这一点。太麻烦了,不能随便用……


小智 0

您也许可以使用pulseaudio声音设置管理器将立体声更改为单声道。或者,也许您可​​以尝试将所有内容平移到左侧或右侧扬声器。