SSH接続の場合、リモート側で音を再生してもローカル側では聞くことができません。しかし、PulseAudioを使うとローカル側で音を再生することができます。
RaspberryPi Zeroをラジオにするシリーズの一つです。
https://rfriends.hatenablog.com/entry/2022/05/01/154913
以下に設定方法を記述します。
0.はじめに
ここでは、 ローカル:Windows リモート:Linux として、ローカルからリモートへSSH接続した環境を想定して説明します。
1.リモート(Linux)側の設定
1)pulseaudioのインストール
$ sudo apt install pulseaudio
2)ローカル(Windows)側のIPアドレスを設定する。
localhostの設定を行う。
$ sudo vi /etc/pulse/client.conf default-server = localhost
または、.bashrc(bashの場合)に記述し、再ログインする。
cd ~/ vi .bashrc 以下の1行を最後に追加 export PULSE_SERVER=localhost
以上でリモート(Linux)側の設定はおしまいです。
2.ローカル(Windows)側の設定
1)pulseaudioのダウンロード
以下のアドレスよりpulseaudioをダウンロードし、展開する。
ここでは、例としてc:\pulseaudio-1.1 に展開する。
http://www.freedesktop.org/wiki/Software/PulseAudio/Ports/Windows/Support/ http://bosmans.ch/pulseaudio/pulseaudio-1.1.zip
2022/04/30現在、上記からはダウンロードできないようです。
以下より入手してください。
http://rfriends.s1009.xrea.com/files/pulseaudio-1.1.zip
http://rfriends.s1009.xrea.com/files/pulseaudio-1.1x.zip (設定済)
2)pulseaudioの設定
以下の2つのファイルを設定する。
・c:\pulseaudio-1.1\etc\pulse\default.pa
load-module module-native-protocol-tcp auth-anonymous=1 load-module module-waveout sink_name=output source_name=input record=0
・c:\pulseaudio-1.1\etc\pulse\daemon.conf
exit-idle-time = -1
3)ファイアウォールの設定
管理者権限のコマンドプロンプトを開き、以下のコマンドを入力する。
netsh advfirewall firewall add rule name="PulseAudio" dir=in action=allow protocol=TCP localport=4713
4)PulseAudio の実行
コマンドプロンプトを開き、以下のコマンドを入力する。
cd c:\pulseaudio-1.1\bin .\pulseaudio.exe --kill .\pulseaudio.exe -F ..\etc\pulse\default.pa --exit-idle-time=600
アイドル状態が続くとpulseaudioは終了します。 その際は再度実行してください。
以上でローカル(Windows)側の設定はおしまいです。
5)追加
以下に設定済みのものをアップロードしました。
http://rfriends.s1009.xrea.com/files/pulseaudio-1.1x.zip
- ダウンロードした物を適当な場所に解凍
- 中にある、painit.batをダブルクリックして実行 --> 3)相当
- 中にある、pa.batをダブルクリックして実行 --> 4)相当
もしうまくいかなかったら再度実行してみてください。
3.SSHクライアントの設定
SSH経由での再生設定を行います。リモートのport(ここでは4713)をローカルのport(ここでは4713)に転送して再生することを想定しています。
使用するSSHツールにより設定場所が異なります。ツール自体の設定や自動化についてはそれぞれのマニュアルを参照ください。
1)teratermの場合
Setup -> SSH Forwarding -> Add
Forward remote server port 4713 to local machine 127.0.0.1 port 4713
2)Rloginの場合
ファイル -> サーバに接続 -> (Entry選択)-> 編集 -> プロトコル -> ポートフォワード-> 新規
Remote Host Name : リモート側のIPアドレス Port : 4713 Connect Host Name : localhost Port : 4713
4.実行テスト
設定がうまくいってるかどうかは、以下のコマンドで確認できます。Linux(RaspberryPi)側で、以下のコマンドを入力して、Windows側のスピーカから音が出たら成功です。
$ speaker-test -t wav
うまくいかない場合はWindows側のファイアウォールの再設定を行ってみてください。管理者権限のコマンドプロンプトを開き、解除、再設定。
netsh advfirewall firewall delete rule name="PulseAudio" netsh advfirewall firewall add rule name="PulseAudio" dir=in action=allow protocol=TCP localport=4713
5.その他
以上の設定が済めば、rfriendsでradiko/らじるらじるのリアルタイム再生が可能になります。お試しください。
注意事項
WAN経由の場合、約1.5mbpsの通信が発生するので、従量契約の方は気を付けてください。
また、以下のサイト他を参考にしました、ありがとうございます。
LinuxのサウンドをリモートのWindowsマシンで鳴らす
https://pcvogel.sarakura.net/2017/11/28/31784
以上