我想读出目前播放的音频的音量为几个客户的脉冲音频。
我喜欢解决的问题是:我在xmms上听音乐,然后把它放在停顿上,听一个朋友在youtube上送给我的一首歌。一个小时后,我突然发现我没有在听任何音乐!
我想到的(非常基本的)解决方案是一个bash脚本,它每秒钟检查除xmms之外的所有应用程序的数量,如果有任何应用程序发出声音,则xmms暂停,如果没有声音,而xmms是静音的,则启用xmms。(我确实希望能够在应用程序方面做到这一点,例如,应该忽略pidgin )。
我只能找到图形化的工具来读取这个卷,比如pavucontrol,它很好地显示了它。我真的不想编写各种各样的C程序来做这么简单的事情,所以:
当前的卷级别?
发布于 2011-03-02 13:58:15
也许您可以从输出流中记录一个音频样本,并查看它是否(接近) 0。这条管道提供了一个单一的示例,其形式为-32768到32767 (包括在内):
parec --raw --channels=1 --latency=2 2>/dev/null | od -N2 -td2 | head -n1 | cut -d' ' -f2- | tr -d ' '您将需要调整parec参数,并可能调整PulseAudio配置,以进入输出流并从中进行记录。
发布于 2011-03-02 12:43:46
pactl list转储了一个.好吧,看起来几乎所有的事情。对于正在运行的mplayer -ao pulse实例,我在输出中得到以下内容:
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"
...不过,它并没有给你当前的监控级别(当前播放音频的音量),但也许它就足够了?
发布于 2011-03-02 00:57:46
我甚至不会费心去读这本书。我会编写一个模块,其中包含一个接收器,它可以检测连接到它的应用程序的数量,并可以在此基础上执行操作,还可以编写一个虚拟应用程序,您可以将其定向到现有接收器,以便最终输出音频。
https://stackoverflow.com/questions/5046975
复制相似问题