arecord
オーディオを録音し、ツールを使用して.flacでエンコードしflac
てから、より多くのプロセス(gzip、gpg、ここでは関係ありません)を介して転送したいと思います。
flac
パラメータを使用して結果をファイルに書き込むと、-o
すべてがうまく機能します。
arecord -t raw -f S16_LE -r16000 -d 10 -D sysdefault:CARD=1 | flac - -f --endian little --sign signed --channels 1 --bps 16 --sample-rate 16000 -o test.flac
代わりにパラメータを使用-c
して出力をファイルにリダイレクトする場合:
arecord -t raw -f S16_LE -r16000 -d 10 -D sysdefault:CARD=1 | flac - -f --endian little --sign signed --channels 1 --bps 16 --sample-rate 16000 -c > test.flac
...結果ファイルはうまく再生されますが(サウンドは機能します)、VLCにオーディオ録音の長さが表示されず、Audacityがインポートプロセスを開始し、ETAが数時間着実に増加してキャンセルされたままになります。
2つのコマンドの唯一の違いは-o test.flac
vs。-c > test.flac
ファイルが破損するのはなぜですか?
違いがある場合:flac 1.3.2、arecord 1.1.3、USBマイク付きのPi3の最新のラスピアンで実行されます。
答え1
パイプを介して最終長を計算できないため、flacのヘッダに書き込むことはできません。ファイルを壊さずにライブストリームとして保存し、ライブストリームがいつ終わるのかわからず、ヘッダーはファイルの先頭にあります。