web-dev-qa-db-ja.com

PulseAudioとMultiseatでサウンドを構成するにはどうすればよいですか?

完全な開示の精神で、私は この質問 をubuntuフォーラムに投稿しましたが、それに取り組んでいる他の頭を傷つけることはできないと思います。

マルチシートのセットアップが非常にうまく機能しています。入力デバイスのホットプラグは期待どおりに機能します。それでも解決できない唯一の問題は、各座席の音声を取得することです。

以下は、音声を機能させるための私の試みの要約です。

  1. ユーザーがログインする$ DISPLAYに基づいて、〜/ .Pulse/default.paを動的に構成します。

    • 詳細については Pastebin をご覧ください。
  2. Pulseaudioをシステム全体のインスタンスとしてロードします。

    • これを機能させることができませんでした。ユーザーはオーディオハードウェアにアクセスできませんでした。
  3. ConsoleKitで席をマークするには、udevルールを使用します。ここにあるudevガイドラインに従ってください: http://www.freedesktop.org/wiki/Software/systemd/multiseat

    • Irc.freenodeの誰かによって動作することが「保証」されていましたが、これが動作するとは思いませんでした#pulseaudio

これらの試みはどれも成功しませんでした。だから私は今、助けを求めてコミュニティに頼ります。提案されたメソッドが機能する可能性は十分にありますが、その一部をめちゃくちゃにしただけです、idk。これは、MultiseatXページを更新してUbuntu 12.04の手順を含める前に必要な最後のパズルです。

状況に関する私の理解:pulseaudioへのアクセスは、ConsoleKit(ACLに関する何か)でマークされているアクティブなセッションに制限されています。 CKは、一度に1つのセッションのみをアクティブとしてマークできます。人生のこの単純で小さな事実は、ソリューションがシステム全体のインスタンスとして実行されるpulseaudioを含むべきであると信じさせます。各ユーザーはPulseサーバーに接続し、すべてのハードウェアのサブセットに制限する必要があります。各ユーザーは、localhost、idkを介してPulseサーバーに接続する可能性があります。私の試みと失敗した結果に関係なく、私は常にSudo aplay -D plughw:0,0 /usr/share/sounds/alsa/Front_Center.wavを使用してハードウェアのいずれかで何かをプレイできることを知っています。

私はストローを握っていて、今では頭から抜け出すことができる最後の数本の毛になっています。私たちが富を分かち合えるように、これを理解するのを助けてください。必要に応じて追加情報が提供されます。

12
Anthony

オンラインでの調査、さまざまな設定のテスト、Pulseaudio開発者との会話に何時間も費やしました。要するに、pulseaudioを通常のユーザーモードで実行すると、ConsoleKitでマークされたアクティブセッションのみがオーディオハードウェアにアクセスできるようになるということです。現在のConsoleKitは一度に1つのセッションのみをアクティブとしてマークできるため、pulseaudioのシステム全体のインスタンスを実行する必要があることを意味します。利点:各座席に個別の音声を入れることができます。欠点:すべてのオーディオハードウェアはすべてのユーザーが使用でき、AT WILLを操作できます。これは、セキュリティが真の関心事であるインターネットカフェやその他の公共の場にとって理想的な状況ではありません。サイトのセキュリティポリシーを作成するときは、このことに留意してください。 pavucontrolの実行を管理者のみに制限するのが賢明かもしれません。

いつものように、すべてのデフォルト設定ファイルのバックアップを作成します。バックアップせずに設定を変更した場合は、apt-get -d install pulseaudioを使用してpulseaudioパッケージを取得できます。これにより、パッケージが(/ var/cache/archives/aptに)ダウンロードされるだけで、コンテンツを抽出してデフォルトの構成を取得できます。 client.confはそこに含まれていないことに注意してください。

Pulseaudioをシステム全体のデーモンとして実行するには、いくつかのファイルを編集する必要があります。

1.) / etc/default/pulseaudio

    PULSEAUDIO_SYSTEM_START=1

2.) / etc/Pulse/daemon.conf -詳細については、man Pulse-daemon.confを参照してください。

    daemonize = yes
    local-server-type = system

3.) / etc/Pulse/client.conf

    autospawn = no

また、Pulse-accessグループにユーザーを追加する必要があります。

Sudo usermod -a -G Pulse-access <username>

すべてのユーザーがオーディオハードウェアにアクセスできるようになったので、各ユーザーが使用するハードウェアを選択する必要があります。これは、pavucontrolを使用して実行できます。設定はユーザーごとに保存され、座席には従わないことに注意してください。ユーザーが座席を切り替える場合、目的のオーディオハードウェアを再選択する必要があります。

Pulseaudioに関する追加コメント

私は、座席ごとのオーディオを機能させるためのよりエレガントなソリューションがあることを望んでいました。マルチシートでシステム全体のPulseaudioを使用すると、多くの欠点があり、リブート間で完全に安定しません。システム全体のインスタンスを起動し、ユーザーインスタンスをローカルホスト経由でサーバーとして接続しようとしました。 pulseaudio --startを実行するとdaemon.confが読み込まれるため、これは機能していないようです。

ConsolKitについて

通常のユーザーごとのpulseaudioを実行するときに見られる問題は、1つのシートがハードウェアにアクセスし、他のすべてがダミー出力を持っていることです。これは、ConsoleKitが完全に座席に対応していないためです。 CKは、すべての座席をseat1のセッションと見なし、1つのセッションのみをアクティブとしてマークできます。この事実は、getfacl/dev/snd/*を実行することで確認できます。特定のユーザーが使用している$ DISPLAYに基づいて、適切な/ dev/snd /ファイルのACLを編集できるかもしれないという思いが思いつきました。これは私が検討したことのないオプションです。この仮説を調査し、調査結果に合わせてドキュメントを編集することにより、マルチシートの原因に貢献することを検討してください。

ConsoleKitGDM-2. 、および GDM-3.x のマルチシートブランチは存在し、自動マルチシート機能を提供します。

追記

1.)ユーザーがモジュールDISALLOW_MODULE_LOADING = 1をロードできないようにすることも賢明です。

2.)autospawn = noは、私の例のファイルに見られるように、必ずしも必要ではありません。問題は発生しません。

7
Anthony

状況に関する私の理解:pulseaudioへのアクセスは、ConsoleKit(ACLに関する何か)でマークされているアクティブなセッションに制限されています。 CKは、一度に1つのセッションのみをアクティブとしてマークできます。

ConsoleKitへのパッチ があり、マルチシートサポートを追加します。これにより、すべてのアクティブな座席をアクティブとしてレポートできます。おそらくこれで問題が解決するでしょう。ディスプレイマネージャーとの連携が必要であり、このサポートを追加する GDMの古いバージョンへのパッチ があります。

PPA から変更されたConsoleKitおよびGDMパッケージを使用して、Natty(11.04)でマルチシートが動作するようにしました。私はまだNattyからアップグレードしていません-動作させる方法を見つけるのに長い時間がかかり、LightDMはパッチを適用したConsoleKitで動作しないのではないかと心配しています。

編集:Fedora 17には印象的なマルチシート機能がいくつかあり、そのうちのいくつかはQuantalにあることに注意してください。 アプローチを説明するwikiページ があります。 Ubuntuは、Fedoraのアプローチを単純にコピーすることはできません。Fedoraには大きな変更が必要だからです。 FedoraはsystemdとGDMを使用し、UbuntuはupstartとLightDMを使用します。

1
Richard Hansen

私は最近、PulseAudioとMultiseatの問題を解決しようとしていました。エレガントな解決策がないことを見て、私の回避策はネットワークを使用することでした。

このソリューションは、私が最も頻繁にマシンにいるユーザーであり、私の座席が最も頻繁にログインしているため、私のシナリオに適しています。

~/.config/Pulse/default.pa/etc/Pulse/default.paのシステム構成をコピーし、次の行を追加しました。

load-module module-native-protocol-tcp auth-anonymous=1 auth-ip-acl=127.0.0.1

他のユーザーのpulseaudioの設定で、トンネルを追加します-または、必要に応じていくつかのトンネルを追加します:

load-module module-tunnel-sink server=127.0.0.1 sink=alsa_output.pci-0000_00_XX.X.iec958-stereo

シンク名をマシンの名前と一致するように変更します。よりわかりやすい名前を構成することを決定できます(つまり、pulseaudio設定ファイルで構成する必要があることを意味します)。ただし、pacmd list-sinksで検索して特定の名前を使用しました。

これはエレガントなソリューションではありません。おそらく、次のリグで@Anthonyが提案するシステム全体の構成を使用しようとします。より「外科的」なソリューション。

0
MariusSiuram