ラベル pulseaudio の投稿を表示しています。 すべての投稿を表示
ラベル pulseaudio の投稿を表示しています。 すべての投稿を表示

リモートホストの音声をロカールで聞く

ローカル側

以下の設定を行なって、pulseaudioを起動
load-module module-native-protocol-tcp
もしくは、下記のcookieによる認証設定を行わないなら以下。
load-module module-native-protocol-tcp auth-anonymous=true 
一時的な設定なら以下
pactl load-module module-native-protocol-tcp
macOSでbrewでinstallしている場合は下記。
/usr/local/opt/pulseaudio/bin/pulseaudio --exit-idle-time=-1 --verbose
ポートフォワーディングしておく
ssh remote_ip -R 4713:localhost:4713
cookieファイルをremoteマシンにコピーする
rsync -Pavz .config/pulse/cookie remote_ip:

リモート側

環境変数PLUSE_SERVERを設定して、アプリケーションを実行(以下の例ではfirefox)
PLUSE_SERVER=localhost:4713 firefox

参考

  • https://blog.monophile.net/posts/20131017_pulseaudio_over_ip.html
  • https://mattintosh.hatenablog.com/entry/20160102/1451664667

pulseaudioで再生中の音声を録音する

次のようにmonitorデバイスを調べる。何もデバイスがない場合でも、下記のようにnullデバイスがあるはず。
$ pactl list | grep monitor
        Monitor Source: auto_null.monitor
        Name: auto_null.monitor
                device.class = "monitor"
そのデバイスを指定して、次のようにparecコマンドを実行する。
$ parec -d auto_null.monitor > audio.raw

NVidiaのグラボを使った時、pulseaudioがクラッシュする問題の回避策

GTX650搭載のグラボに交換した後、Ubuntu 16.10でpulseaudioがクラッシュしていた。
$ grep seg /var/log/syslog | tail -1
Feb  5 14:13:38 foo kernel: [ 2402.435970] pulseaudio[17820]: segfault at 0 ip 00007fb12b98b11b sp 00007ffc16868048 error 6 in libasound.so.2.0.0[7fb12b94b000+f9000]
/proc/asound以下の情報から、このカードにはIntel HD Audio用ドライバが使われていた。私は他のSoundカードにそのドライバを使用していない(USB audioやBlutoothを使用)ので、ドライバのロードを次のように抑止した。

/etc/modprobe.d/blacklist.confに次の行を追加して再起動
blacklist snd_hda_intel

Linux上で再生している音声を録音する。

parec --file-format=wav > name.wav
なお、複数の再生デバイスがあり、それがデフォルトでない場合、pavucontrolコマンドでで音量調整(Volume control)ツールを起動して、録音タブで希望の入力ソースを選ぶ。


pulseaudioでHWのサンプリングレート変更を抑止する

pulseaudioは、ソースのサンプリングレートに合わせて、オーディオデバイスのサンプリングレートを変更する。私が使っているUSB-Audioは、サンプリングレートの変更が行われた時に動作不良になるので、この振る舞いを抑止した。

具体的なやりかたは、/etc/pulse/daemon.confのdefault-sample-rateとalternate-sample-rateを同じにする。
default-sample-rate = 44100
alternate-sample-rate = 44100
参考:daemon.confのマニュアル

Ubuntu 14.04/14.10/16.04でBluetoothヘッドホンを接続する。

デフォルトだと、A2DPに接続しようとすると"Stream Setup Failed"とメッセージが表示され失敗する。
以下のようにして、pulse-audioにbluetoothのためのモジュールをインストールする。
$ sudo apt-get install pulseaudio-module-bluetooth
$ pactl  load-module module-bluetooth-discover
なお、オーディオの出力を制御するにはpavucontrolを使う。

追記: 2016/06/20
Ubuntu 16.04でもこの方法で再生できること確認しました。