本当に良い時間です!現在、さまざまな音量レベルでさまざまなオーディオストリームを開始する必要がある「スマートホーム」などの作業を進めています。たとえば、バックグラウンドミュージックを元の音量の20%で聴きたいのですが、誰かが超人種を押すと、着信音を100%の音量で聴きたいと思います。現在私はmpg123
Pythonスクリプトを使用しています。 Pythonスクリプトはpexpect
mpg123を実行し、必要な設定を指定します。
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オプション:
mpg123
paplay
1)次のようにして出力をストリーミングします。
mpg123 --stdout ... | paplay --rate=44100 --format=s16le --channels=2 --stream-name=Music --client-name=Musicplayer --volume=65536
上記のようにコマンドラインでボリュームを設定することも、pavucontrol
クライアント名でボリュームを一度設定すると、次に同じアプリケーションが起動したときにそれを覚えておくことができます。したがって、Musicplayer
その他のクライアント名を使用している場合は、Bellringer
Pythonでボリュームを変更することなく、一度にボリュームを事前設定できます。
2)別のプログラムを使用してPulseaudioを使用してMP3ファイルを再生し、クライアント名が設定されているか、認識可能なクライアント名があるか、ボリュームを設定するオプションがあります。例えば
mplayer -volume=... ...
その後、上記と同じオプションがあります。
3)再生中のストリームの音量を有効または設定しますpamcd
。pactl
pacmd set-sink-input-volume 42 50%
次のようなものを使用できます
pacmd list-sink-inputs | egrep '(index)|(name)'
特定のストリームまたはクライアント名のインデックス番号を探します。または、Pythonで出力全体を解析します。
4) Python で Pulseaudio の DBUS インタフェースを使用します。これには少しのプログラミングが必要です。
私はPythonを使ってUIを介してボリュームを変更することをお勧めしませんpexpect
。それはひどい砂利のように見え、実際には「より高いレベル」ではありません。