X11を使用せずに、SSH経由でリモートマシンでサウンドを再生したい。これは、ユーザーがコンソールまたはXにログインしているかどうかに関係なく機能するはずです。
基本的に、ssh経由でログインした後、次のようなコマンドライン
mpg123 test.mp3
このリモートマシンでtest.mp3を再生する必要があります。言い換えれば、貧乏人のPAシステム。 paprefsパネルでネットワーク経由のパスワードなしのオーディオアクセスを許可しましたが、ssh経由で再生しようとすると音が出ません。
これを達成するための最も簡単で信頼できる方法は何ですか?
PS:過去の質問には、これに答えない質の低い回答があります。
最近のUbuntuシステム(この場合は17.10)では、システムの起動時にpulseaudio
を実行するか、ssh経由でオーディオを取得するために手動で実行する必要があります。 pulseaudio
はデフォルトでユーザーごとに開始されるため、誰もログインしていない場合は、SSHログインのnullシンクのみが取得され、すべての音声が静かに消えます。
永続的なソリューションの場合、systemdサービスを作成できます。
cat <<EOF >/etc/systemd/system/pulseaudio.service
[Unit]
Description=Pulse Audio
[Service]
Type=simple
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disable-shm --exit-idle-time=-1
[Install]
WantedBy=multi-user.target
EOF
これにより、pulseaudioデーモンが起動時にユーザーPulseとして起動されるようになります。 これは開発者によって強く推奨されていないため 一時的に使用するための推奨される解決策は、SSH経由でSudo pulseaudio --system -D
を発行することです。
Pulseaudioインスタンスがすでに実行されている場合は、新しいインスタンスがハードウェアを検出できるように、インスタンスを強制終了する必要があります。これは、ログインしているすべてのユーザーの音声に影響するため、ケースバイケースで処理する必要があります。
いずれの場合も、ログインしたユーザーは、Pulse-accessグループの一部である必要があります。
Sudo usermod -a -G Pulse-access userName
これで、リモートシステム(mpg123
、mpv
など)でSSH経由でサウンドを再生できるようになりました。 pactl list short sinks
で成功を確認して、適切なオーディオシンクを検出できます。
DISPLAY
変数を:0
に設定すると、問題が解決します。次のようなコマンドを実行してみてください。
$ DISPLAY=:0 mpg123 test.mp3