
経由で 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_playにOSSパイプ、および入力oss_recにOSS-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 はアクティブである限りそれらのアプリケーションのデフォルトのソース/シンクを記憶し、再度起動したときに自動的に接続します。