PulseAudioでSSHサーバ側の音声をクライアント側で再生する

RDPと違い、VNCでは接続先の音声を送れないことがある。 接続先のデスクトップ(SSH・VNCサーバ)で再生された音声をSSH経由で送信し、SSH・VNCクライアント側で再生できるようにする。 https://raspberrypi.stackexchange.com/questions/8621/how-to-set-up-a-pulseaudio-sink https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/#module-tunnel-sink-new module-tunnel-sink-newの実装はすでにmodule-tunnel-sinkで動くようになっている(pulseaudio 13.99.1) 音声を受け取る側(SSH・VNCクライアント、PulseAudioサーバ) 受信側 /etc/pulse/default.pa load-module module-native-protocol-tcp auth-ip-acl=127.0.0.0/8 load-module module-null-sink sink_name=DummyOutputRemote0 sink_properties=device.description="DummyOutputRemote0" load-module module-loopback source=DummyOutputRemote0.monitor source_dont_move=true DummyOutputRemote0に対して音声が送られてくる。 DummyOutputRemote0.monitorで入力として音声を拾うこともできる。 受信側 ~/.ssh/config Host your-server # VNC LocalForward 15900 localhost:5900 # PulseAudio RemoteForward 14713 localhost:4713 音声を送る側(SSH・VNCサーバ、PulseAudioクライアント・サーバ=中継用) 送信側 /etc/pulse/default.pa load-module module-tunnel-sink sink_name=Remote server=tcp:127.0.0.1:14713 sink=DummyOutputRemote0 PulseAudio再起動(pulseaudio -k)後、 接続先のデスクトップ上で音声出力デバイス(Sink)をDummyOutputRemote0に設定する。 DummyOutputRemote0が表示されない場合、どこか設定が間違っていると思われる。 電源メニューから音声デバイスを変更できるようにするGNOME拡張 https://extensions.gnome.org/extension/906/sound-output-device-chooser/

2021年10月9日 · aoirint

PulseAudioで特定のアプリケーションからの音声出力だけを分離する

https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/#module-loopback 以下のコマンドで仮想出力デバイスDummyOutput0と、そのループバックLoopback from Monitor of DummyOutput0が追加される。 pacmd load-module module-null-sink sink_name=DummyOutput0 sink_properties=device.description=DummyOutput0 pacmd load-module module-loopback source=DummyOutput0.monitor source_dont_move=true pavucontrolまたはPulseAudio Volume ControlのPlaybackから 目的のアプリケーションの出力先をDummyOutput0にする。 また、Loopback from Monitor of DummyOutput0の出力先を 希望のスピーカーにすることで音声出力を分離しつつ同時に視聴できる。 source_dont_move=trueは、デフォルトの入力デバイス変更時にLoopbackの入力デバイスも変更されてしまうのを防ぐオプション。 pavucontrolからも変更できなくなる。 仮想出力デバイスとループバックを削除するには、以下のコマンドを実行する。 pacmd unload-module module-loopback pacmd unload-module module-null-sink ログイン時に自動作成する ログイン時自動作成 /etc/pulse/default.pa # Custom load-module module-null-sink sink_name=DummyOutputApp sink_properties=device.description="DummyOutputApp" load-module module-loopback source=DummyOutputApp.monitor source_dont_move=true load-module module-null-sink sink_name=DummyOutputVoiceChat sink_properties=device.description="DummyOutputVoiceChat" load-module module-loopback source=DummyOutputVoiceChat.monitor source_dont_move=true load-module module-null-sink sink_name=DummyOutputGeneral0 sink_properties=device.description="DummyOutputGeneral0" load-module module-loopback source=DummyOutputGeneral0.monitor source_dont_move=true load-module module-null-sink sink_name=DummyOutputGeneral1 sink_properties=device.description="DummyOutputGeneral1" load-module module-loopback source=DummyOutputGeneral1.monitor source_dont_move=true ログイン時自動作成 PulseAudioの再起動 pulseaudio --kill pulseaudio --start デバイス接続時の入出力デバイス自動切り替えを無効化する https://askubuntu.com/questions/1061414/how-to-disable-pulseaudio-automatic-device-switch 新しい出力デバイスが検出されたとき、デフォルト出力デバイスが切り替わるのを防ぐ。 ...

2020年11月9日 · aoirint

PulseAudioでマイク入力をスピーカから出力する

まずはPCに接続されている音声入力デバイスのIDを確認する。 pactl list short sources # pactl list sources 3 alsa_output.pci-0000_00_1f.3.analog-stereo.monitor module-alsa-card.c s16le 2ch 44100Hz RUNNING 4 alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor module-alsa-card.c s16le 2ch 44100Hz RUNNING 5 alsa_output.usb-GeneralPlus_USB_Audio_Device-00.iec958-stereo.monitor module-alsa-card.c s16le 2ch 44100Hz RUNNING 6 alsa_input.usb-GeneralPlus_USB_Audio_Device-00.analog-mono module-alsa-card.c s16le 1ch 44100Hz RUNNING ここでは、以下のようになっている。 ID 種類 3 本体のヘッドホン端子 4 HDMI 5 USBサウンドカードのヘッドホン端子 6 USBサウンドカードのマイク端子 以下のコマンドで、ID=6のUSBサウンドカードのマイク端子に入力されている音声をスピーカにループバックするモジュールがロードされる。 pacmd load-module module-loopback source=6 名前を使って指定することもできる。 pacmd load-module module-loopback source=alsa_input.usb-GeneralPlus_USB_Audio_Device-00.analog-mono 必要に応じて、pavucontrolを開いて出力先デバイスを設定する。 以下のコマンドで、ループバックモジュールをアンロードする。 pacmd unload-module module-loopback

2020年10月4日 · aoirint