使用 PulseAudio 可以在应用程序的基础上管理音量,但我发现手动进行几乎没有用。我宁愿拥有以下内容:我通常在听音乐,但有时我想观看 YouTube 视频 - 然后我必须手动暂停或降低音乐的音量,我经常忘记重新打开它视频结束了。
当另一个应用程序播放声音时,我需要做什么来自动降低音频流(背景音乐)的音量?
没有太多答案,但我不妨描述一下我发现的问题/可能性。
我看不出有什么方法可以为此编写 shell 脚本。没有(已记录的)方法可以使用pactl
/更改每个应用程序的卷pacmd
。我也看不到任何方法来判断何时添加新客户端,而无需重复进行轮询,例如:
pactl list short clients
Run Code Online (Sandbox Code Playgroud)
脉冲音频可以设置为 log through syslog
,因此一种可能性是使用一个名为 via 的脚本rsyslog
(如果发行版有)。请参阅我的回答以了解如何执行此操作的指示。这当然取决于pulseaudio
有关新客户的日志信息。
这绝对是可行的,该pavucontrol
程序是此类事情的一个很好的例子。然而,目前看起来没有 CLI 可以做同样的事情,所以它可能需要一个更直接的 API 接口pulseaudio
。
查看@derobert 的链接,角色闪避模块很容易启用,但它需要指定media.role
属性。无论如何我都找不到看看这些是什么!它们很可能没有为很多流定义(许多程序仍然认为它们正在使用 ALSA)。如果有某种方法列出这些并可能将它们配置为分配(可能基于进程的名称),这将是最简单的方法。
media.role
可以通过环境变量设置PULSE_PROP
。例如:
PULSE_PROP='media.role=music' play some_music.mp3 &
pactl list clients | grep -C 10 'media.role = "music"'
Run Code Online (Sandbox Code Playgroud)
这可以通过编辑文件和/或创建包装脚本来为不同的应用程序设置.desktop
,但这似乎不是一个很好的方法。
归档时间: |
|
查看次数: |
2985 次 |
最近记录: |