flac:stdout(-c)への出力が中断され、ファイルに書き込むのと同じコマンド(-o)が機能します。

flac:stdout(-c)への出力が中断され、ファイルに書き込むのと同じコマンド(-o)が機能します。

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.flacvs。-c > test.flacファイルが破損するのはなぜですか?

違いがある場合:flac 1.3.2、arecord 1.1.3、USBマイク付きのPi3の最新のラスピアンで実行されます。

答え1

パイプを介して最終長を計算できないため、flacのヘッダに書き込むことはできません。ファイルを壊さずにライブストリームとして保存し、ライブストリームがいつ終わるのかわからず、ヘッダーはファイルの先頭にあります。

関連情報