Sox は特定のバイト数の後に停止します。

Sox は特定のバイト数の後に停止します。

私の目標は、Raspberry Pi 3で長いマルチチャンネルwavファイル(5時間以上、18チャンネル)を録音するコマンドラインツールを持つことです。オーディオインターフェースはベリンジャーXR18

これを行う方法はもちろん via ですarecord。残念ながら、piにバッファオーバーフローが発生します。なぜなら、arecord固定された最大値があるからです。バッファサイズは500msに変更できないか、変更できません。arecordの出力をsoxにパイプしてntfs USBフラッシュドライブに書き込みます。追加ボーナスとして、soxはサンプルを32ビットから24ビットに動的に変換し、オーバーフローを削除できます(私が知る限り)。

私が実行したコマンドは次のとおりです。

arecord -M -D hw:CARD=X18XR18,DEV=0 -c18 -f S32_FE -r48000 | sox --input-buffer 51200 -t wav - -b24 -c18 -t wav <filename.wav>

最初の部分は配管|作業なので、助けは必要ありません。 2番目の部分も機能し、録音が進むにつれてファイルが作成され、大きくなります。ところで何の理由なのか1.5GB程度で録音が止まりsoxも終了します。

単独実行にはarecordこれらの制限はなく、数時間実行されます(もちろん制限内)。

最後のファイルサイズに達する直前にファイルが絶えず大きくなるのをやめ、代わりにかなり長い間滞在し、サイズが数MBずつ大きくなることを発見しました。私にとって、これはバッファオーバーフローと非常によく似ていますが、soxのバッファサイズを100MBに2倍にしても違いはありません。 soxの出力もあまり役に立ちません。詳細情報レベル3でも、次の内容のみが表示されます。

sox WARN sox: '<filename>' output clipped 13403 samples; decrease volume?
sox WARN sox: '-' balancing clipped 13403 samples; decrease volume?

私が今まで試したこと:

  • 靴下の変更--input-buffer-size- 違いなし
  • 1.5GB以前に新しいファイルを起動しようとしました。機能しますが、追加されたファイルサイズが1.5 GBに達するとすぐに停止します。
  • フラッシュドライブの代わりにSDカードに直接書き込む - 違いなし(オーバーフローを除く)

ATMでこれをテストする他のLinuxボックスはありませんが、Raspberry Pi 3は確実にタスクを処理できる必要があります(CPU / RAM側)。この奇妙な動作の原因が何であるかを知っている人はいますか?

ベストアンサー1

このスレッドxfs形式のターゲットディスク/SDカードをお試しください。

おすすめ記事