5

pulseaudioのいくつかのクライアントについて、現在再生されているオーディオの音量を読み上げたいと思います。

私が解決したい問題は次のとおりです。xmms で音楽を聴いているときに一時停止して、友人が YouTube で送ってくれた曲を聴きます。1 時間後、突然、音楽を聴いていないことに気付きました。

私が考えていた(非常に基本的な)解決策は、xmms以外のすべてのアプリの音量を毎秒チェックするbashスクリプトです。アプリケーションが音を出している場合、xmmsが一時停止し、音がない場合、xmmsは無音です。 xmms が有効になっています。(私はこれをアプリごとに実行できるようにしたいと考えています。たとえば、pidgin は無視する必要があります)

うまく表示するpavucontrolのような、ボリュームを読み取るためのグラフィカルツールしか見つかりませんでした。このような単純なことを行うために、あらゆる種類の C プログラムをコーディングしたくはありません。

  1. 私は正しい方向に考えていますか、それとももっと簡単な解決策がありますか
  2. そうでない場合、別のアプリの現在の音量レベルを読み取るにはどうすればよいですか
4

3 に答える 3

1

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-02T12:43:46.570 に答える
0

ボリュームを読むことさえ気にしません。接続されているアプリの音量を検出し、それに基づいてアクションを実行できるシンクと、最終的なオーディオ出力のために既存のシンクに送信できる仮想アプリケーションを含むモジュールを作成します。

于 2011-03-02T00:57:46.537 に答える