特定のpulseaudioクライアントを接続する方法

特定のpulseaudioクライアントを接続する方法

経由で 2 つのアプリケーションを実行していますpadsp。最初のアプリケーションからの出力が 2 番目のアプリケーションによって記録されるようにするには (できれば実行時に) どうすればよいですか?

答え1

まず、OSS アプリケーションを起動するときに、アプリケーションとストリームに名前を付けて、識別しやすくします。

padsp -n oss_play -m oss_output your/playback/app
padsp -n oss_rec  -m oss_input  your/recording/app

あるアプリからの出力を別のアプリにパイプするには、null シンクと関連するモニターを使用します。コマンドラインからロードします。

pacmd load-module module-null-sink sink_name=oss_pipe sink_properties=device.description=OSS-Pipe

これで、pavucontrol出力を設定するためにoss_playOSSパイプ、および入力oss_recOSS-PipeのモニターGUIを使用して、またはコマンドラインを使用してストリームのインデックス番号を識別することもできます。

pacmd list-sink-inputs
pacmd list-source-outputs

出力は特に解析しやすいものではありませんが、スクリプトを使用する場合は、sgrepうまくいきます (「oss_play」の場合、「oss_rec」の場合も同様)。

sgrep '"index: "__"\n" in ("index" .. ("index" or end)  containing "application.name = \"oss_play\"")'

インデックスがそれぞれ 3 と 17 だとします。最後に、これらを移動します。

pacmd move-sink-input 3 oss_pipe
pacmd move-sink-output 17 oss_pipe.monitor

がロードされている場合module-stream-restore(デフォルト)、pulseaudio はアクティブである限りそれらのアプリケーションのデフォルトのソース/シンクを記憶し、再度起動したときに自動的に接続します。

関連情報