Raspberry Pi3 で arecord と aplay を使用して fifo を作成したいと考えています。オーディオ インジェクターから音楽信号を一方の端に送信すると、正しく表示されますが、もう一方の端では音楽が無効になります。「arecord -f S16_LE -r 44100 -V stereo -c1 -D plughw:2 | aplay -D plughw:2」を使用しています。
解決方法と、ctrl+c を使用せずにそのコマンドを停止する方法を教えてください。
答え1
何をしようとしているのかよく分かりません。特に「相手側で音楽を無効にする」というのは理解できませんが、
1) オーディオ ストリームの転送は、ALSA よりも Pulseaudio (または jack) の方がはるかに簡単です。
2)arecord
パイプで使用する場合、WAV 形式を使用しないでください。WAV ヘッダーには長さエントリがあり、パイプでは入力できないためです。raw ( -t raw
) を使用して で正しいパラメータを指定するaplay
か、SUN オーディオ形式 ( -t au
) を使用してください。
3) arecord-aplay パイプは、Ctrl + C で停止するか、プロセスの 1 つまたは両方が ( を使用してkill
) 終了するまで実行されます。これ以外の方法はありません。
答え2
コマンドを停止するには、次のように、秒単位の期間変数 (-d) を arecord に追加します。
arecord -f S16_LE -r 44100 -V stereo -c1 -d2 -D plughw:2 | aplay -D plughw:2
このコマンドは、-d2 または 2 秒後に録画を停止します。
alsamixer コマンドを使用すると、ミキサー設定を変更できます。これにより、入力 (マイクまたはライン) を選択できるほか、出力 hifi (音を聞くため) を有効にしたり、CPU ではなくアナログ システムを介してオーディオ入力を直接出力にルーティングするバイパス モードを有効にしたりできます。バイパス モードでも、arecord を使用して信号をキャプチャできます。