解決策

解決策

私は2つの異なるユーザーで2つのKDEセッションを実行します。 2つのアカウントを切り替えると(Ctrl + Alt + F8など)、あるアカウントで再生された音楽は別のアカウントでミュートされます。仮想端末(Ctrl + Alt + F1)に切り替えても同じことが発生します。

私が知る限り、これは意図的なものであり、複数の人間のユーザーに適していますが、私の設定では面倒です。

他のKDEセッションや仮想端末に切り替えるときは、音楽を聴き続けますか?

私はKDE 5.36.0とPulseaudio 8.0と組み合わせてUbuntu 16.04 LTS(Xenial Xerus)ベースのKDE Neon 5を使用しています。

答え1

解決策

  1. プレイできる必要があるすべてのユーザーを追加してください。パルスアクセスグループ

    # adduser problemofficer pulse-access

  2. 作る/etc/systemd/system/pulseaudio.service次のコンテンツが含まれています。

    [Service]
    Type=simple
    PIDFile=/var/run/pulse/pid
    ExecStart=/usr/bin/pulseaudio --daemonize=yes --system=yes --disallow-module-loading=yes --disallow-exit=yes
    
    [Install]
    WantedBy=multi-user.target
    
  3. 起動時に起動するようにこの新しいシステムサービスを有効にします。# systemctl enable pulseaudio

  4. 参考までに、この設定は

    • 安全性が低い(たとえば、他のユーザーがマイクで聞くことができる)
    • サウンド出力が自動的にヘッドフォンに切り替わったり、ヘッドフォンから自動的に切り替わったりしません。
    • Bluetoothが機能しない可能性があります。以下の警告セクションも参照してください。
  5. 再起動

理由

サウンドがオフになる理由は、ログインするたびにそのユーザー権限でPulseaudioが起動し、システムが他のユーザーが他のユーザーの音声を聞くことを許可していないためです。

ソリューションの背景

パルスオーディオ

この問題を解決するには、Pulseaudioがroot権限で起動され、すべてのユーザーのみが使用できるシステム全体のデーモンとして実行する必要があります。誰もがこのインスタンスに接続し、他のユーザーが再生または録音したすべてを再生して聞くことができます。

Pulseaudioは実際には常にrootとして実行されるわけではありませんが、これらの権限を放棄してユーザーを想定しています。脈拍

~からman pulseaudio

ユーザー 脈拍、グループ 脈拍:PulseAudioがシステムデーモンとして実行され(上記の--systemを参照)、rootで起動すると、デーモンは権限を放棄し、このユーザーとグループを使用する一般ユーザープロセスになります。 PulseAudioがユーザーデーモンとして実行されている場合、このユーザーとグループは意味がありません。

「ユーザーデーモン」は「システムデーモン」と同じではありません。前者は以前にPulseaudioが実行された方法であり、後者は変更を適用した後に実行される方法です。

Pulseaudioシステムサービスに接続するには、次のものが必要です。パルスアクセスグループ。

再びman pulseaudio

グループ パルスアクセス:PulseAudioがシステムデーモンとして実行されている場合(上記の--systemを参照)、このグループのメンバーはAF_UNIXソケットを介して接続するとアクセスできます。 PulseAudioがユーザーデーモンとして実行されている場合、このグループは意味がありません。

システムサービス

簡単な解決策として、Pulseaudioのすべての「ユーザーデーモン」インスタンスを終了してから、/usr/bin/pulseaudio --system=yes概念証明チェックを実行すると便利です。

これを継続的に作成し、起動時にPulseaudioデーモンが自動的に起動されるようにするには、systemdサービスとして追加する必要があります。ファイルの内容です/etc/systemd/system/pulseaudio.serviceです。

Pulseaudioはすでにシステムデーモン²を見つけたときにユーザーデーモン²を起動しないため、このソリューションは機能します。

警告する

Pulseaudio 公式ドキュメントPulseaudioをシステムデーモンとして使用するための提案。上記の問題のいくつかは次のとおりです。

  • ...セキュリティの観点から特に問題となる点の1つはモジュールロードです。アクセス権を持つ人は誰でもモジュールをロードおよびアンロードできます。モジュールの読み込みを無効にできますが、Bluetoothおよびalsaホットプラグ機能は機能しません。

(これは、ヘッドフォンを接続してもサウンド出力が自動的にスピーカーからヘッドフォンに切り替わらないことを意味します。

  • ...システムモードでは、メモリ使用量とCPU負荷が高いです...

    (個人的にはロッドの変化が感じられませんでした。)

  • ...サーバーにアクセスできるすべてのユーザーは、互いのオーディオストリームをスニッフィングしてマイクを聞くことができます。

  • ...また、ジャック接続などの追加機能も多く失われます。

ここを含む私が理解していないので価値がないと思う他のものがあるかもしれません。

thecarpyの回答に関する注意事項:このソリューションでは、彼の回答に記載されている手順は必要ありません。

リソース


1 誰かがこの内容を詳しく説明していただきありがとうございます。

² 家庭[引用が必要]

答え2

~からhttps://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/213149:

これがパルスオーディオの「特徴」です。

編集する/etc/default/pulseaudio

PULSEAUDIO_SYSTEM_START=0 に変更 PULSEAUDIO_SYSTEM_START=1

このように、pulseaudioはシステムモードで起動します。

/etc/default/pulseaudioドキュメントから:

# Start the PulseAudio sound server in system mode.
# (enables the pulseaudio init script)
# System mode is not the recommended way to run PulseAudio as it has some
# limitations (such as no shared memory access) and could potentially allow
# users to disconnect or redirect each others audio streams. The
# recommend way to run PulseAudio is as a per-session daemon. For GNOME
# sessions you can install pulseaudio-esound-compat and GNOME will
# automatically start PulseAudio on login (if ESD is enabled in
# System->Preferences->Sound). For other sessions, you can simply start
# PulseAudio with "pulseaudio --daemonize".
# 0 = don't start, 1 = start

変更を適用する最も簡単な方法は、このオプションでpulseaudioが起動されていることを確認し、--daemonizeシステムを再起動することです。

別のオプションはpulseaudioを完全に削除し、代わりにalsaを使用することです。個人的に好む選択です。

答え3

私はsystemdを使用してArch Linuxを実行していますが、同じ問題が発生しました。私の目標は、Ctrl-Alt-Fxまたはディスプレイマネージャを介して他のユーザーに切り替えてサウンドを実行し続けることです。

ついにシステムモード(危険、サポートされていない)やPolicyKit(何も知らない)を使わずに動作するようになりました。

スピード:

  1. PulseAudioを再生し続ける必要がある$USERをオーディオグルー​​プに追加します。usermod -aG audio $USER
  2. ログインせずに PulseAudio を起動するユーザーの遅延を有効にします。 loginctl enable-linger $USER

~/.config/pulse/default.paこれが機能する場合は、次のコンテンツを追加して、このユーザーのPAをネットワークの他のユーザーと共有することを選択できます。

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24

「クライアントユーザー」の場合は、以下を追加してください~/.config/pulse/client.conf

default-server = 127.0.0.1

関連情報