現在のリアルタイムオーディオ出力レベルを見る

現在のリアルタイムオーディオ出力レベルを見る

コンピュータがアイドル状態であることを確認し、スクリプトを実行しようとします。rootユーザーとしてx時間後。


最後のユーザー入力が発生してからの時間を測定するためにxprintidleを使用します。問題は、動画や音楽が再生されているときにxprintidleがリセットされないことです。

それで、現在のオーディオ出力レベルを見ることができるターミナルコマンドを見つけました。

私がテストしたほとんどのコマンドは、リアルタイムオーディオ出力レベルではなく、現在の音量パーセント/値設定のみを表示します。

次のコマンドを使用して、オーディオを出力するすべてのアプリケーションソースを取得できました。

pacmd list-sink-inputs | grep -c 'state: RUNNING'

ただし、rootとして実行すると、次のエラーメッセージが表示されます。

No PulseAudio daemon running, or not running as session daemon.

現在のライブオーディオ出力レベルを確認するためにどのコマンド/ファイルがあるかを知っている人はいますか?

または単に確認してください。いいえオーディオ再生中ですか?

答え1

pacmd環境変数を使用して、XDG_RUNTIME_DIR実行中のPulseAudioデーモンへのパスを見つけます。ただし、ユーザーが一致しない場合、接続は拒否されます。これは、ルートがpacmd通常のユーザーのPulseAudioと通信するために直接実行できないことを意味します。

ルートとして実行されるスクリプトは正しいユーザーとして使用され、実行できますが、まだ適切な権限がありますsudo(例:pacmdXDG_RUNTIME_DIRこの回答)。スクリプトは複数の値を知る必要があります。

PulseAudioにアクセスできる一般ユーザー(pacmd list-sink-inputs職場など)として呼び出されます。

id -u
echo "$XDG_RUNTIME_DIR"

1000出力はそれぞれとです/run/user/1000。次に、スクリプトでこの値を使用します。次のようになります。

sudo -u '#1000' XDG_RUNTIME_DIR=/run/user/1000 pacmd … | grep …

通常、渡される変数はsudo VAR=value …制限されます(参考資料を参照man 8 sudo)。sudorootで実行すると何も変わるのかわかりません。設定でこの方法で設定することをsudo許可しない場合は、XDG_RUNTIME_DIRシェルを使用してください。

sudo -u '#1000' sh -c 'XDG_RUNTIME_DIR=/run/user/1000 pacmd …' | grep …

関連情報