私はこの作業を約1ヶ月間進めてきましたが、プロセスを最適化/自動化するためにさまざまな方法を試しました。基本的には、次のことができることを願っています。音声メーター(windows)、Linuxでは(アーチ)。
現在の回避策は、起動時に次のpactlコマンドを実行することです。
{ path = "pactl" args = "load-module module-null-sink sink_name=Virtual1" }
{ path = "pactl" args = "load-module module-null-sink sink_name=Virtual2" }
{ path = "pactl" args = "load-module module-loopback sink=Virtual1" }
{ path = "pactl" args = "load-module module-loopback sink=Virtual1" }
{ path = "pactl" args = "load-module module-loopback sink=Virtual1" }
次に、手動でパスをリセットします。特定のチャンネルPav制御で。ただし、時々(特に停止後)、ルーティングは完全にランダムにリセットされるため、pavucontrolに戻って必要な変更を加える必要があります(特に再生タブで)。ループバックモジュールのロード順序も時々台無しになり、システムの電源を入れるたびに実行する必要がある手動操作の混乱をさらに重視しました。
私の要件は、マイクとアプリケーションオーディオを組み合わせてからマイクを介して送信することです(例:ディスコード)。
シンクとソースが起動するたびにリセットされるか、毎回再割り当てされないようにする方法はありますか?それとも、チャンネルが自分の所望の場所に正確に移動するようにチャンネルを再ルーティングするプロセスを自動化する方法がありますか(少なくとも仮想ストリームの場合)。
ベストアンサー1
私も同様の問題に直面しました。ログイン時にこれらの受信者を設定するスクリプトがありますが、実際に行を保存することはまだこのツールには実装されていないようですhelvum
。 Wikipediaはこれを処理するためのいくつかのスクリプトを提供しています。
pw-savewires
#!/bin/bash
if [[ "$#" -ne 1 ]]; then
echo
echo 'usage: pw-savewires filename'
echo
exit 0
fi
rm $1 &> /dev/null
while IFS= read -r line; do
link_on=`echo $line | cut -f 4 -d '"'`
link_op=`echo $line | cut -f 6 -d '"'`
link_in=`echo $line | cut -f 8 -d '"'`
link_ip=`echo $line | cut -f 10 -d '"'`
echo "Saving: " "'"$link_on:$link_op"','"$link_in:$link_ip"'"
echo "'"$link_on:$link_op"','"$link_in:$link_ip"'" >> $1
done < <(pw-cli dump short link)
パラメータファイル名が与えられたら、現在の配線を読み、それをファイルに保存しますpw-savewires foo
。foo
pw-restoreという別のスクリプトを使用して、次の行を復元できます。
pw-loadwires
#!/bin/python
import sys
import csv
import os
if len(sys.argv) < 2:
print('\n usage: pw-loadwires filename\n')
quit()
with open(sys.argv[1], newline='') as csvfile:
pwwreader = csv.reader(csvfile, delimiter=',', quotechar='"')
for row in pwwreader:
print('Loading: ' + row[0] + ' --> ' + row[1])
process = os.popen('pw-link ' + row[0] + ' ' + row[1])
したがって、pw-loadwires foo
ファイルに保存されているライン構成を復元する必要がありますfoo
。お役に立てば幸いです。