ffmpeg
Bashはいくつかのコマンド(デフォルトではいくつかのコマンド)を実行しており、そのコマンドを使用して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