首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >双源脉冲音频,一个减少音量

双源脉冲音频,一个减少音量
EN

Ask Ubuntu用户
提问于 2020-08-01 21:40:06
回答 1查看 319关注 0票数 0

我正在看火狐的NHL季后赛,但在广告期间,我正在测试我正在开发的音乐播放器。我“取消”我的音乐播放器在广告期间,所以有两个声音源播放的脉冲音频。我希望我的音乐播放器(python mserve)比火狐“声源优先”。

目前,当mserve播放时,脉冲音频似乎已经从Firefox发出了一点微弱的声音。声音调暗可能是20 %到40%?我怎么能增加这样的脉冲音频调暗火狐说60%到80%?

如果有软件自动识别什么时候开始广告,如声音增益增加或人耳音商业跟踪软件激活,这将避免我点击“播放”时,广告开始和“暂停”时,曲棍球恢复。

注意:我假设是pulseaudio而不是alsa在两个输入流声音搅拌器中做繁重的工作。我不是在寻找GUI混音器,而是一个bash或python解决方案。

EN

回答 1

Ask Ubuntu用户

发布于 2020-08-02 15:41:57

短答案

在Unix & Linux站点中,我发现了这个Q&A:

首先,获得一个简短的汇列表:

代码语言:javascript
复制
$ 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%,包括:

代码语言:javascript
复制
$ pactl set-sink-input-volume 1688 40%

当按下音乐播放器上的暂停时,我将Firefox音量重置为100%,使用:

代码语言:javascript
复制
$ pactl set-sink-input-volume 1688 100%

长答案

40%卷不够软,所以使用了25%

可以有多个Firefox声源的实例,所以它们都需要静音。

下面是最后的代码:

代码语言:javascript
复制
    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()

如果你想知道它在行动上是什么样子(只是我的第二个计划):

  • 这位音乐演奏者一边看曲棍球一边停下来。
  • 当广告开始时,单击带有曲棍球棒字符的“商业”按钮
  • 按钮文本更改为剩余时间倒计时。
  • 火狐的音量被削减到25%,几乎听不见。
  • 音乐开始以正常音量播放
  • 当倒计时击中零音乐停顿和火狐卷被恢复
  • 你仍然可以在倒计时时按下暂停/播放键。
票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1263885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档