ライブパイピングとフィルタリング bash 出力

ライブパイピングとフィルタリング bash 出力

ffmpegBashはいくつかのコマンド(デフォルトではいくつかのコマンド)を実行しており、そのコマンドを使用してgrep結果awkをフィルタリングしています。このコマンドは時間がかかり、ビデオの再生中にいくつかの結果を出力し続けます。チューブもgrep同じです。ただし、awkパイプはコマンドが完了するのを待ってからすぐにすべてを印刷するので、これはうまくいきません。出力したいすぐに一致するものが見つかりました。

実行中にリアルタイムで結果を出力するようにこのコマンドをどのように変更できますか?

ffmpeg -i freeze.mp4 -vf "freezedetect=n=-60dB:d=2" -map 0:v:0 -f null - 2>&1 | grep freezedetect | awk '{print $4,$5}' | tr -d , | grep lavfi

ベストアンサー1

標準ツールを使用してみてください。

ffmpeg -i freeze.mp4 -vf "freezedetect=n=-60dB:d=2" -map 0:v:0 -f null - 2>&1 |  stdbuf -o 0 grep freezedetect | stdbuf -o 0 awk '{print $4,$5}' | stdbuf -o 0 tr -d , | stdbuf -o 0 grep lavfi

おすすめ記事