web-dev-qa-db-ja.com

Ubuntu / Linuxのssh経由でリモートマシンで*サウンドを再生*

X11を使用せずに、SSH経由でリモートマシンでサウンドを再生したい。これは、ユーザーがコンソールまたはXにログインしているかどうかに関係なく機能するはずです。

基本的に、ssh経由でログインした後、次のようなコマンドライン

mpg123 test.mp3

このリモートマシンでtest.mp3を再生する必要があります。言い換えれば、貧乏人のPAシステム。 paprefsパネルでネットワーク経由のパスワードなしのオーディオアクセスを許可しましたが、ssh経由で再生しようとすると音が出ません。

これを達成するための最も簡単で信頼できる方法は何ですか?

PS:過去の質問には、これに答えない質の低い回答があります。

7
emk2203

最近の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

これで、リモートシステム(mpg123mpvなど)でSSH経由でサウンドを再生できるようになりました。 pactl list short sinksで成功を確認して、適切なオーディオシンクを検出できます。

2
emk2203

DISPLAY変数を:0に設定すると、問題が解決します。次のようなコマンドを実行してみてください。

$ DISPLAY=:0 mpg123 test.mp3
3
gmoshkin