オーディオを出力デバイスに送信できる場合は、同じオーディオを波形で録音できます。ファイルシステムを使用すると、ループバックファイルシステムを設定し、デバイスの代わりにファイルにバイナリデータを書き込むだけです。
私の質問は:私のオーディオデバイスの代わりにWAVファイルにオーディオ信号を送信できますか?どのように?
答え1
はい。
実際にはいくつかの方法があります。サウンド仮想サウンドカードデバイスを設定し、デバイスからデータをインポートできますが、これはあまり便利な形式ではありません。
arecord
alsa出力ストリームを盗聴し、それを既知のさまざまな形式で保存できるユーティリティなどの方が便利です。デフォルトでは、alsaサウンドシステムで再生できるすべてのアイテムを標準フォーマットのサウンドファイルにコピーできます。
答え2
システムまたはログするアプリケーションの場合は、出力を次のように指定します。サウンドサーバー、このサウンドサーバの録音の可能性を研究しなさい。たとえば、Ubuntuの公式サウンドサーバーは次のようになります。パルスオーディオ、これparec
コマンド(pulseaudio-utils
パック pulseaudio-utils インストール http://bit.ly/software-small)。出力をparec
使用可能なものに変換する必要があるかもしれません。ソックス(Ubuntu:sox
soxのインストールhttp://bit.ly/software-small)。
parec -r --rate=44100 | sox --type raw --rate 44100 - --type ogg recording.ogg
答え3
これはしなければならないAudacityに直接ログインすることは可能ですが、私のシステム(Ubuntu 10.10)では利用できません。だから指示に従ってください。ここAudacity wikiでは、ALSA
再生デバイスを使用してオーディオをファイルに転送しました。
これは.asoundrc
(ホームディレクトリにある)ファイルを使用します。
pcm.teeraw {
type empty
slave.pcm "tee:default,'/tmp/out.raw',raw"
# 48000 S16_LE 2ch (aplay -t raw -f dat)
}
Flash(Firefox)で録画するには、以下を使用します。
FLASH_ALSA_DEVICE=teeraw firefox
結果ファイル/tmp/out.raw
は生の形式なので、変換するには正しいパラメータが何であるかを知る必要があります。奇妙なことに、lame
この問題を自分で解決できるようですが、明示的に知っておく必要がありますsox
。したがって、次のすべてが機能しているようです。
aplay -t raw -f dat -r 44100 /tmp/out.raw # to play
sox -r 44100 -b 16 -e signed -c 2 /tmp/out.raw /tmp/out.wav # to convert to wav
lame /tmp/out.raw # to convert to mp3
答え4
ALSAツリーにはループバックドライバがあり、aloop-kernel.c(通過するここ);自分で作成する必要があります(そしてaplay
オーディオアプリケーションなどを介してデバイスとしての使用率を決定する必要がありますarecord
)...