从bash脚本中,通过内置扬声器播放声音,同时使其有效禁用


0

我之前发过一个类似的问题,但Kamil Maciorowski是正确的&明智地指出,正如张贴的那样,它似乎并不是真正的单一问题,而是3的混合问题。所以我删除了破碎的系统和问题。我重新开始使用当前的Lubuntu。开箱即用,如果我打开蓝牙耳机,声音通过它们而不是内置扬声器播放。如果我关闭耳机,声音会自动通过扬声器播放。

我更喜欢的是除非我明确地将特定命令的输出指向它们,否则永远不会向扬声器发送任何声音。像,伪代码: aplay /path/fire-alarm.wav -o speakers 并且如果可以的话,通过耳机播放所有其他声音,&否则根本就没玩过。

如果没有这种策略的直接规定,我想知道是否有某种方法可以欺骗系统将/ dev / null视为一个始终工作的&始终可用的音频接收器,在耳机后面和内置扬声器之前排在第二位。这与“通过扬声器播放此声音”命令相结合应该这样做。

如果这些都不可能,则禁用和启用扬声器而不影响耳机功能的命令&如果拜占庭式Linux声音架构中的某些东西不会自发地决定“哦,你的扬声器已经关闭,我会为你解决这个问题。”如果没有重新登录就可以达到目的。

这与简单地说蓝牙耳机应该是默认值不同。这就是现在的样子。如果我看“Debbie Does Dubai”&耳机超出范围,或者没有果汁,或者我只是试着调整他们的物理位置而摸索他们,我不希望声音自动转移到扬声器开始出来。

我所追求的是一个不向扬声器发送任何内容的策略,除非我明确告诉它在那里发送特定流,然后仅发送它,或者失败,这是一种可编写脚本的方法来禁用和启用扬声器而无需重新记录。

Answers:


0

PULSE_SINK = LT; sink_name> someprogram

您可以从以下位置获取可用“sink_name”的列表:

LANG=C pactl list | grep -A2 'Sink #' | grep Name: | cut -d" " -f2

大。与此同时,我找到了将扬声器静音和取消静音的命令: pactl set-sink-mute 0 1 &安培; pactl set-sink-mute 0 0。我会在启动脚本中将它们静音。在我希望通过spkrs播放的脚本中,我将取消静音,使用您的命令并重新调用。不完全是我想要的,但足够接近。在我的实际使用案例中,差异很少。谢谢。
palidin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.