PulseAudioを使用して、他のコンピュータの監視ソース(出力ミックス)を録音します。

PulseAudioを使用して、他のコンピュータの監視ソース(出力ミックス)を録音します。

たとえば、私は他のコンピュータのサウンド出力スペクトルを表示できるRaspberry PiベースのLED可視化壁を設計しています。論理的な選択は、PulseAudioを使用してLAN上のオーディオを監視することです。

しかし、問題があります。あるコンピュータから別のコンピュータにオーディオを簡単に再生でき、リモートマイク入力も録音できるため、デフォルト設定に問題はありませんが、何らかの理由でオーディオミキシングのためにリモートモニタのソースコンピュータで再生する必要があるすべてのコンテンツを録音することはできません。 。 PulseAudioボリュームコントロール(pavucontrol)の入力リストからリモートモニタリングソースも表示できますが、録音用に選択すると音は鳴りません。ローカル監視ソースが正常に動作します。受信機はAC3 / DTSパススルーの代わりに通常のステレオPCMを使用するHDMI出力です。

ここで重要なものを見逃していますか?何らかの理由で監視ソースへのネットワークアクセスがブロックされていますか?

また、私のプロジェクトに主に必要なソリューションがある場合は、CLIの代替案を見てうれしいです。

私はすべてのGoogle-fuを試してみましたが、成功しませんでしたが、これまで誰もこれをしたことがない場合は驚きます。

修正する:pacmd list-sources | grep name:リクエストに応じて出力を追加しました。 IPv6はトンネルプロジェクトを2回一覧表示しますが、これは問題ではありません。

name: <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor>
name: <alsa_input.pci-0000_00_1b.0.analog-stereo>
name: <tunnel.mediacenter.local.alsa_input.pci-0000_00_14.2.analog-stereo>
name: <tunnel.mediacenter.local.alsa_input.pci-0000_00_14.2.analog-stereo.2>
name: <tunnel.mediacenter.local.alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor>
name: <tunnel.mediacenter.local.alsa_output.pci-0000_00_14.2.iec958-stereo.monitor>
name: <tunnel.mediacenter.local.alsa_output.pci-0000_01_00.1.hdmi-stereo.2.monitor>
name: <tunnel.mediacenter.local.alsa_output.pci-0000_00_14.2.iec958-stereo.2.monitor>

ベストアンサー1

他の人が私の問題を避けるために、PulseAudio開発者の助けを借りて見つけた独自のソリューションを公開します。

この問題はPulseAudio 10.0のZeroconfモジュールのバグであり、近いうちに修正されることがわかりました。これまで手動でトンネルを作成することに加えて、唯一の解決策はトンネルモジュールをバイパスしてリモートPulseAudioサーバーから直接録音することでした。ただし、これはGUIアプリケーションでは機能しない可能性があります。リモート監視ソースを記録するコマンドの例:

PULSE_SERVER=REMOTE_HOST parecord --device=MONITOR_SOURCE > recording.wav

REMOTE_HOST と MONITOR_SOURCE をソースに適した値に置き換えます。地元の名前(例:私の場合はalsa_output.pci-0000_01_00.1.hdmi-stereo.monitor)。

さまざまなプログラミング言語への便利なCLIツールとバインディングを持つGStreamerに似た直接PulseAudio接続を使用できます。リモート監視ソースをローカルで再生するコマンドの例:

gst-launch-1.0 pulsesrc server=REMOTE_HOST device=MONITOR_SOURCE ! pulsesink

GStreamerは、視覚化プロジェクトに役立つスペクトルデータも提供できます。間隔が長くオーディオスループットがない例:

gst-launch-1.0 -m pulsesrc server=REMOTE_HOST device=MONITOR_SOURCE\
 ! spectrum interval=400000000 bands=10 threshold=-100 ! fakesink

おすすめ記事