一部のゲームでは、合成ウィンドウマネージャが好きではなく、私のお気に入りのデスクトップであるUnityでは合成をオフにできないため、同時に2人のユーザーを実行します。残念ながら互いに対話するので、同じユーザーに対して2つのTTYを実行したくありません。 Ubuntu 16.04を実行しています。
ユーザーjonathanはTTY7のUnityセッションにあり、他のユーザーsteamdudeはTTY2のXFCEセッションにあります。オーディオ以外のすべてが私が望む方法で動作します。両方のユーザーをオーディオグループに追加して再度ログインすると、あるTTYから別のTTYからのオーディオを聞くことができます。ただし、あるユーザーがサウンドカードを使用している間、他のユーザーはオーディオをまったく再生できません。
私が持っている最も近い解決策(なぜ動作するのかわかりません)は、paprefsを使用してRTPデバイスがUnityセッション内でループバックできるようにすることです。 steamdudeは何らかの理由でRTPデバイスを接続する必要はありません。ループバックはTTY2のサウンドを妨げません。問題は、モジュールのループバックに最大1秒まで遅延を引き起こす長いバグがあることです。手動サイクル
pacat -r --latency-msec=1 -d rtp.monitor | pacat --latency-msec=1 -d alsa_output.pci-0000_00_1b.0.analog-stereo
遅延の問題を解決しましたが、サウンドカードのロックの問題が再び発生して問題は解決されませんでした。
潜在的なソリューション(理想的には最初)は次のとおりです。
1) あるユーザーから別のユーザーへの直接オーディオストリーミング
私が試したがうまくいかなかった最初の明白なこと
pacat -r --latency-msec=1 -d rtp.monitor | sudo -u steamdude pacat --latency-msec=1 -d alsa_output.pci-0000_00_1b.0.analog-stereo
この操作は、次の出力で失敗します。
Home directory not accessible: Permission denied
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
write() failed: Broken pipe
2 人のユーザーはお互いのグループに属し、chmod と setfacl を介してホームディレクトリに対するフルアクセス権を与えました。
2)RTPマルチキャストを介してあるユーザーから別のユーザーへのオーディオストリーミング
Pulseが同じコンピュータのストリーミングデバイスを表示していないので、どうすればいいのかわかりません。
3)1つのTTYからRTPを介して別のTTYの軽量仮想マシン(または特別に設計されたchroot?)にオーディオを送信します。
これはうまくいきますが、すべての可能なソリューションの中で最もエレガントではなく、多くのシステムリソースを使用します。
私はこのようなことをしたいのですが、最も効率的な方法で行う方法を知りたいです。