调整pulseaudio中的最大可能音量
有时我的Ubuntu_12.04系统上的某些声音/电影/音乐本身的音量非常低。 从此以后我增加了声音输出的音量。 我可以使用以下设置(见截图)
因此,似乎pulseaudio能够通过仅使用机器的“增加音量”按钮来增加音量,使其超出可能出现的最大值。 我的问题是我如何调整Pulseaudio以允许更大的范围或更高的最大音量增加???
特别是对于一些体积非常小的音频材料而言,将能够迅速将输出音量(通电)增加到比其他已经相当大的材料所需的更高设置是很好的。
我们可以通过将音量控制滑动到100%以上来获得最大可能音量。 比正常峰值限制高出153%。 如果我们使用alsamixer将ALSA音量设置为100,则这些100%是音频将被削减或失真的级别。 使用滑块放大至153%时也会发生这种情况。
然而,可以通过使用终端中的follwing命令设置接收器级别来进一步提高此级别:
pacmd set-sink-volume
将
替换为您的接收器名称或接收器索引,如下所示:
pacmd list-sinks
下限显然是0
,线性体积100%是65536
的值,任何更高的值都将被进一步放大。 因此,512000的值将导致781%的过度简化。
这是一种非常粗略的方法来放大不同级别的声音输出,因为过度简化不仅会导致削波和丑陋的失真,还可能会损坏您的扬声器。
因此,这是规范化音频输出的更好方法。 有关如何使用pulseaudio执行此操作,请参阅以下问题:
- 根据内容自动调整音量?
我试过这个命令:
pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo 150%
这非常有帮助。 可以将150%更改为任何值。
video演示
我用
pactl set-sink-volume 0 100%
其中0
是来自pacmd list-sinks
器编号, 100%
是默认的unboosted卷。 您可以输入高于100%的值以获得音频提升(例如200%
)。
这是一个小脚本,可以为您进行计算和设置音量(只需将音量作为参数传递)。 例如: vol 105
将音量设置为105%。
-
创建文件
$> file=/usr/bin/vol;sudo touch $file && \ sudo chmod u+x $file && sudo chown $USER:$USER $file && \ gedit $file
-
复制和粘贴:
#!/bin/bash SetPacmdSinkVol() { #default index of 0 - can be changed local mySinkIndex=0 #if you want to ignore pacmd output local ignoreOutput=true local num=$1 local vol=$((num * 655)); vol=$((num * 36 / 100 + vol)); echo -e "\033[0;32mVol - ${num}:${vol}\033[0;m" if $ignoreOutput; then pacmd set-sink-volume $mySinkIndex $vol > /dev/null else pacmd set-sink-volume $mySinkIndex $vol fi } SetPacmdSinkVol $@
我将以下行插入shell脚本并将其设置为在启动时运行,因为我父亲的笔记本电脑(12.04 32位)未保存最大音量设置。
pacmd set-sink-volume 0 99999
如果只有一个声卡,它可能是索引0,那么你不需要输入全名。 我在上面看到该值基于65536为100%。 当我使用99999时,我在黑暗中拍摄。 153%实际上是100270,实现与使用gui相同的结果。
#!/bin/bash FILE=/tmp/currentVolume interval=15 minVolume=10 maxVolume=140 if [ -f "$FILE" ]; then CurrentVolume=$(cat $FILE ) else CurrentVolume=50 fi if [ $CurrentVolume -lt 60 ]; then interval=3 elif [ $CurrentVolume -lt 80 ]; then interval=5 elif [ $CurrentVolume -lt 110 ]; then interval=10 else interval=15 fi if [ "$1" == "UP" ] then CurrentVolume=$(echo "$CurrentVolume + $interval" | bc) if (( $(echo "$maxVolume < $CurrentVolume" | bc -l) )) then CurrentVolume=$maxVolume fi else CurrentVolume=$(echo "$CurrentVolume - $interval" | bc) if (( $(echo "$minVolume > $CurrentVolume" | bc -l) )) then CurrentVolume=$minVolume fi fi echo "CurrentVolume:" $CurrentVolume >> /tmp/currentVolume.log echo $CurrentVolume > $FILE for i in {1..20} do pactl -- set-sink-volume $i $(echo $CurrentVolume)% done