我正在看火狐的NHL季后赛,但在广告期间,我正在测试我正在开发的音乐播放器。我“取消”我的音乐播放器在广告期间,所以有两个声音源播放的脉冲音频。我希望我的音乐播放器(python mserve)比火狐“声源优先”。
目前,当mserve播放时,脉冲音频似乎已经从Firefox发出了一点微弱的声音。声音调暗可能是20 %到40%?我怎么能增加这样的脉冲音频调暗火狐说60%到80%?
如果有软件自动识别什么时候开始广告,如声音增益增加或人耳音商业跟踪软件激活,这将避免我点击“播放”时,广告开始和“暂停”时,曲棍球恢复。
注意:我假设是pulseaudio而不是alsa在两个输入流声音搅拌器中做繁重的工作。我不是在寻找GUI混音器,而是一个bash或python解决方案。
发布于 2020-08-02 15:41:57
在Unix & Linux站点中,我发现了这个Q&A:
首先,获得一个简短的汇列表:
$ pactl list short sink-inputs
1545 0 1083 protocol-native.c float32le 2ch 48000Hz
1556 0 1083 protocol-native.c float32le 2ch 48000Hz
1688 0 1083 protocol-native.c float32le 2ch 44100Hz
1698 0 1455 protocol-native.c s16le 2ch 44100Hz从上面的命令中删除short以确认Firefox (在我的例子中)实际上是1688。我的音乐播放器刚刚加载,是最后一个输入:1698。在我的音乐plyaer上按下play时,我将Firefox的音量设置为40%,包括:
$ pactl set-sink-input-volume 1688 40%当按下音乐播放器上的暂停时,我将Firefox音量重置为100%,使用:
$ pactl set-sink-input-volume 1688 100%40%卷不够软,所以使用了25%。
可以有多个Firefox声源的实例,所以它们都需要静音。
下面是最后的代码:
def hockey_commercial(self):
'''
Commercial button plays music for 90 seconds then pauses.
'''
if self.play_hockey_active is True:
return # Already running, don't restart
self.play_hockey_active = True
self.play_hockey_secs = 90
self.play_hockey_remaining = self.play_hockey_secs
self.play_soften_firefox() # Soften volume of commercials
self.play_hockey_tstart = time.time()
if self.pp_state is "Paused":
self.pp_toggle() # Play music during commercials
def play_soften_firefox(self):
result = []
self.play_firefox_indices = []
result = os.popen('pactl list short sink-inputs') \
.read().strip().splitlines()
count = len(result)
if count < 2:
print('result missing firefox:',result)
return
# Firefox may have multiple entries
for line in result:
sink = line.split('\t')[0]
app = os.popen('pactl list sink-inputs | grep "Sink Input #' + \
sink + '" -A20 | grep application.name').read()
if "Firefox" in app:
self.play_firefox_indices.append(sink)
result = os.popen('pactl set-sink-input-volume ' + \
sink + ' 25%') \
.read().strip().splitlines()如果你想知道它在行动上是什么样子(只是我的第二个计划):

https://askubuntu.com/questions/1263885
复制相似问题