首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何读出控制台中脉冲音频客户端的音量级别

如何读出控制台中脉冲音频客户端的音量级别
EN

Stack Overflow用户
提问于 2011-02-18 21:50:32
回答 3查看 6.7K关注 0票数 5

我想读出目前播放的音频的音量为几个客户的脉冲音频。

我喜欢解决的问题是:我在xmms上听音乐,然后把它放在停顿上,听一个朋友在youtube上送给我的一首歌。一个小时后,我突然发现我没有在听任何音乐!

我想到的(非常基本的)解决方案是一个bash脚本,它每秒钟检查除xmms之外的所有应用程序的数量,如果有任何应用程序发出声音,则xmms暂停,如果没有声音,而xmms是静音的,则启用xmms。(我确实希望能够在应用程序方面做到这一点,例如,应该忽略pidgin )。

我只能找到图形化的工具来读取这个卷,比如pavucontrol,它很好地显示了它。我真的不想编写各种各样的C程序来做这么简单的事情,所以:

  1. 是在朝正确的方向思考,还是有一个更简单的解决方案--
  2. ,如果没有,如何读取独立应用程序

当前的卷级别?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-02 13:58:15

也许您可以从输出流中记录一个音频样本,并查看它是否(接近) 0。这条管道提供了一个单一的示例,其形式为-32768到32767 (包括在内):

代码语言:javascript
复制
parec --raw --channels=1 --latency=2 2>/dev/null | od -N2 -td2 | head -n1 | cut -d' ' -f2- | tr -d ' '

您将需要调整parec参数,并可能调整PulseAudio配置,以进入输出流并从中进行记录。

票数 8
EN

Stack Overflow用户

发布于 2011-03-02 12:43:46

pactl list转储了一个.好吧,看起来几乎所有的事情。对于正在运行的mplayer -ao pulse实例,我在输出中得到以下内容:

代码语言:javascript
复制
Sink Input #2
        Driver: protocol-native.c
        Owner Module: 8
        Client: 10
        Sink: 0
        Sample Specification: s16le 2ch 44100Hz
        Channel Map: front-left,front-right
        Mute: no
        Volume: 0: 100% 1: 100%
                0: 0.00 dB 1: 0.00 dB
                balance 0.00
        ...
        Properties:
                media.name = "audio stream"
                application.name = "MPlayer"
                native-protocol.peer = "UNIX socket client"
                ....
                application.process.binary = "mplayer"
                ...

不过,它并没有给你当前的监控级别(当前播放音频的音量),但也许它就足够了?

票数 1
EN

Stack Overflow用户

发布于 2011-03-02 00:57:46

我甚至不会费心去读这本书。我会编写一个模块,其中包含一个接收器,它可以检测连接到它的应用程序的数量,并可以在此基础上执行操作,还可以编写一个虚拟应用程序,您可以将其定向到现有接收器,以便最终输出音频。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5046975

复制
相关文章

相似问题

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