如何在 Ubuntu 上使用脚本在扬声器和 USB 耳机之间切换



我正在尝试编写一个脚本来在扬声器和耳机之间切换。我希望能够使用快捷方式更改输出和输入。

我使用这些命令来查看我的音频设备:

$ pacmd list-sinks | grep alsa_output 
name: <alsa_output.usb-Logitech_Logitech_USB_Headset-00.analog-stereo>
name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
$ pacmd list-sources | grep alsa_input
name: <alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono>
name: <alsa_input.usb-093a_262c-01.analog-mono>
name: <alsa_input.pci-0000_00_1b.0.analog-stereo>

并编写了此脚本,以便我可以更改默认音频设备。

#! /bin/bash
  pacmd set-default-sink alsa_output.usb-Logitech_Logitech_USB_Headset-00.analog-stereo
  pacmd set-default-source alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono
exit 0

当我使用命令运行它时

 sudo ./usb-speakers.sh 

我收到此消息:

没有 PulseAudio 守护程序正在运行,或者未作为会话守护程序运行。
主目录不可访问:权限被拒绝
没有 PulseAudio 守护程序正在运行,或者未作为会话守护程序运行。

发现了几个有类似问题的问题,但我无法为我做任何事情。

我找到了这个脚本(我不记得在哪里了),它解决了我所有的问题

#!/bin/bash
declare -i sinks=(`pacmd list-sinks | sed -n -e 's/**[[:space:]]index:[[:space:]]([[:digit:]])/1/p'`)
declare -i sinks_count=${#sinks[*]}
declare -i active_sink_index=`pacmd list-sinks | sed -n -e 's/*[[:space:]]index:[[:space:]]([[:digit:]])/1/p'`
declare -i next_sink_index=${sinks[0]}
#find the next sink (not always the next index number)
declare -i ord=0
while [ $ord -lt $sinks_count ];
do
echo ${sinks[$ord]}
if [ ${sinks[$ord]} -gt $active_sink_index ] ; then
    next_sink_index=${sinks[$ord]}
    break
fi
let ord++
done
#change the default sink
pacmd "set-default-sink ${next_sink_index}"
#move all inputs to the new sink
for app in $(pacmd list-sink-inputs | sed -n -e 's/index:[[:space:]]([[:digit:]])/1/p');
do
pacmd "move-sink-input $app $next_sink_index"
done
#display notification
declare -i ndx=0
pacmd list-sinks | sed -n -e 's/device.description[[:space:]]=[[:space:]]"(.*)"/1/p' | while read line;
do
if [ $(( $ord % $sinks_count )) -eq $ndx ] ; then
    notify-send -i notification-audio-volume-high --hint=string:x-canonical-private-synchronous: "Sound output switched to" "$line"
    exit
fi
let ndx++
done;

只需将其复制并粘贴到空文档中并将其另存为 audio-device-swithcer.sh

然后将其保存到您的usr/local/bin目录中

如果要添加快捷方式,请转到"Keyboard & Shortcuts"并添加新的快捷方式。作为命令,只需将您的audio-device-switcher.sh文件放在

这就是所有为我完美工作的人.并感谢您的回答。

https://github.com/mk-fg/pulseaudio-mixer-cli/blob/master/README.md 说:

有点像alsamixer,

不关注水槽音量水平(实际上可以通过alsamixer控制,使用alsa-pulse插件),而是关注单个流的音量,因此您可以调低音乐以收听游戏,喃喃自语,Skype或浏览器中的内容。

除了交互式 UI 之外,脚本还允许通过配置文件匹配和配置接收器/流参数,以便在出现特定的接收器或流时,例如可以限制其音量、更改端口、调整 UI 标题、隐藏在 UI 中,诸如此类。

最新更新