mpg123 ボリュームコントロール

mpg123 ボリュームコントロール

本当に良い時間です!現在、さまざまな音量レベルでさまざまなオーディオストリームを開始する必要がある「スマートホーム」などの作業を進めています。たとえば、バックグラウンドミュージックを元の音量の20%で聴きたいのですが、誰かが超人種を押すと、着信音を100%の音量で聴きたいと思います。現在私はmpg123Pythonスクリプトを使用しています。 Pythonスクリプトはpexpectmpg123を実行し、必要な設定を指定します。

mpg123 -vC <filename>

現在のメソッドは、's'プレイヤーが起動するとすぐに一時停止信号を送信します。次に、必要な量('-'たとえば、音量を2だけ減らす)をプレーヤーに送信し、再生を再開します。うーん…うまくいきますが、実装は見苦しく、プレーヤーの起動と音量の減少にわずかな違いがあります。少なくとも、Pythonスクリプトが実際にプレーヤーを一時停止してボリュームを下げる前に、最初の「パケット」のいくつかを聞きました。

いくつかのコマンドでボリュームを減らす方法はありますか? mpg123を一時停止する方法はありますか?少なくともこのギャップを減らしてください。

ありがとうございます!

答え1

スマートホームでBluetoothオーディオを管理するために同じことを行い、以下を使用しました。

mpg123 -f -2000 test.mp3

振幅の最大値は100%で32768に相当します。私は約6.1%の2000の値を使用しました。詳しくはマニュアルをご覧ください。man mpg123

パルスの使用はお勧めできません。 mpg123の中でalsaを使用してください。

楽しく過ごしてください

答え2

Pulseaudioオプション:

mpg123paplay1)次のようにして出力をストリーミングします。

mpg123 --stdout ... | paplay --rate=44100 --format=s16le --channels=2 --stream-name=Music --client-name=Musicplayer --volume=65536

上記のようにコマンドラインでボリュームを設定することも、pavucontrolクライアント名でボリュームを一度設定すると、次に同じアプリケーションが起動したときにそれを覚えておくことができます。したがって、Musicplayerその他のクライアント名を使用している場合は、BellringerPythonでボリュームを変更することなく、一度にボリュームを事前設定できます。

2)別のプログラムを使用してPulseaudioを使用してMP3ファイルを再生し、クライアント名が設定されているか、認識可能なクライアント名があるか、ボリュームを設定するオプションがあります。例えば

mplayer -volume=... ...

その後、上記と同じオプションがあります。

3)再生中のストリームの音量を有効または設定しますpamcdpactl

pacmd set-sink-input-volume 42 50%

次のようなものを使用できます

pacmd list-sink-inputs | egrep '(index)|(name)'

特定のストリームまたはクライアント名のインデックス番号を探します。または、Pythonで出力全体を解析します。

4) Python で Pulseaudio の DBUS インタフェースを使用します。これには少しのプログラミングが必要です。

私はPythonを使ってUIを介してボリュームを変更することをお勧めしませんpexpect。それはひどい砂利のように見え、実際には「より高いレベル」ではありません。

関連情報