我有一个外部 USB 声卡将我的 PC (Fedora 20) 连接到我的立体声放大器:
http://www.project-audio.com/main.php?prod=usbbox&cat=boxes&lang=en
现在,这通常工作正常,但是,有时我会遇到音量设置问题。特别是,当使用 VLC 播放视频和音乐时,音量设置往往会变得混乱。例如,在脉冲音频音量控制中,我将主音量设置为 100%,但在 VLC 中,音量设置低于 100%。如果我将 VLC 中的音量增加到 100%,母带实际上会超过 100%,这不是很理想,因为它会导致音频失真。在 Firefox 中播放 Youtube 视频时也会发生同样的情况。这是相当烦人的,因为它不仅降低了音频质量,而且还导致不可预测的行为,因为放大器上的一个音量设置可以在我的扬声器上产生很大范围的实际音量。
那么,如何才能完全禁用PC部分的音量设置,将其固定为100%并仅控制放大器上的实际音量呢?换句话说,我希望 USB 声卡完全像 CD 播放器、调谐器或其他音频源一样,具有固定电平输出。
答案1
我遇到了一些相似之处的问题(包括成交量破碎但水平较低)。我找到了一个解决方法并在中进行了解释带有外部声音适配器的 Pulseaudio:解决声音损坏的问题。
让我们根据您的情况进行调整。下面的命令应该为您找到正确的接收器名称(它只需要第一个):
export LC_ALL=C
ADAPTER_SINK_NAME=$( pactl list sinks | sed -n 's/^.*Name: \(.*\)$/\1/p' | head -n 1 )
echo $ADAPTER_SINK_NAME
然后将其插入软件定义的接收器,您可以设置音量
pacmd load-module module-combine sink_name=adapter-soft-volume slaves=$ADAPTER_SINK_NAME
pactl set-default-sink adapter-soft-volume
详情请参阅带有外部声音适配器的 Pulseaudio:解决声音损坏的问题
这应该适用于从现在开始启动的应用程序。
(可选)这会将当前正在播放的应用程序移至使用该接收器。
for SINK_ID in $(pactl list sink-inputs | sed -n 's/^Sink Input #\([0-9]*\)$/\1/p')
do
echo Sink $SINK_ID
pactl move-sink-input $SINK_ID adapter-soft-volume
done