PulseAudio上の録音に関する覚え書き(オーディオストリームの録音)
ここでは、PulseAudio上の録音を行う方法の内、付属のparecコマンドを用いてオーディオストリームを録音する方法についてを扱う。
あまり実用的とは言えないかもしれないが、ここで扱う録音の要領は、別記事で扱う他の録音方法でも使える。
出力される音(Sinkのモニタ)を録音する
-dオプションで、出力先デバイスのモニタデバイスを指定する。$ parec -d alsa_output.default.monitor (Ctrl+Cを押すと停止)
上の例ではALSAへの出力を行っているが、この部分のモニタデバイスの名前は
$ pactl list | grep monitor Name: alsa_output.default.monitor
のようにして調べておく。
もし、設定ファイルdefault.paで複数のSinkモジュールを使用していなければ、モニタデバイスは1つになるので
$ parec -d $(pactl list | grep monitor | cut -d " " -f 2) > audio.raw
のように実行する手もある。*1
(2009/5/24)PulseAudioのバージョン0.9.15の時点では「monitor」を含む行を取り出しても
$ pactl --version pactl 0.9.15 Compiled with libpulse 0.9.15 Linked with libpulse 0.9.15 $ pactl list | grep monitor Monitor Source: jack_out.monitor Name: jack_out.monitor device.class = "monitor" $ pactl list | grep monitor | cut -d " " -f 2 Source: jack_out.monitor =
のように名前の部分だけをうまく取り出せないため
$ pactl list | grep "Monitor Source:" | cut -d " " -f 3 jack_out.monitor $ pactl list | grep "Name:.*.monitor" | cut -d " " -f 2 jack_out.monitor
少し取り出し方を変えてみるとうまくいく。
入力(Source)を録音する
Sourceを録音する場合、特にオプションは付けない。$ parec > audio.raw (Ctrl+Cを押すと停止)
ストリームの再生
-pオプションでファイルを指定してpacatコマンドを実行すると、保存したストリームを再生できる。$ pacat -p audio.raw
このとき、pacatは、PulseAudioアプリケーションとして音を出すため、PulseAudioのデーモンが動作している必要がある。
RAWオーディオからWAVEへの変換
(2009/5/24)www.outflux.net/blog/archives/2009/04/19/recording-from-pulseaudio/
を見ると、soxという変換ツールでWAVE形式に変換することができるようだ。
(2015/1/10)バージョン4.0時点ではWAVE形式で直接保存ができるため、変換が必要な場面はあまりないと思われる。
使用したバージョン:
- PulseAudio 0.9.10(0.9.10-r51)