2017-02-05 4 views
1

での出力:再フォーマット私は、ファイルに黒い枠を得るために、このffmpegの引数を使用していバッシュ

ffmpeg -i ${arrayDesFichiers[$i]} -vf "blackdetect=d=3:pix_th=0.00" -an -f null - 2>&1 | grep black_duration >> log.txt 

は今、私は私のlog.txtでこれを取得しています:

[blackdetect @ 0x7fd9add06bc0] black_start:0 black_end:3.2 black_duration:3.2 

そして、私はこのような何かにそれを再フォーマットしたいと思います:

black duration : 3.2 seconds 

私はそれがバッシュに可能ですかなり確信しているが、どのように?

+0

** grep **を使用して希望の文字列を選択し、** sed **を使用してコロンをラップすることをお勧めします空白で...または** awk **を使用してください。 – Jdamian

+0

私はsedでしようとしていますが、ああ男私は正規表現でこのような困難な時間を持っています...私は "black_duration 'で終わるものすべてを置き換えることはできますか? – petaire

+0

なぜ@ codeforesterの回答を受け入れたのか分かりません。あなたの質問テキストでは、** 'black_duration:3.2'を改造するよう要求します。これは' grep'コマンドではできません。 – Jdamian

答えて

1

あなたはこれを行うことができます:

ff_output=$(ffmpeg -i ${arrayDesFichiers[$i]} -vf "blackdetect=d=3:pix_th=0.00" -an -f null - 2>&1 | grep -oE "black_duration:[[:digit:]][.[:digit:]]*") 
printf "%s seconds\n" "$ff_output" >> log.txt 

grep -oE "black_duration:[[:digit:]]+[.[:digit:]]*

  • -oオプションはgrep出力を制限するだけでマッチした部分
  • -Eが拡張選択した正規表現
  • [[:digit:]]+[.[:digit:]]*は、1つ以上の数字を検索し、任意にピリオドと1つ以上の数字を続けます。
+0

私はその制限を認識し、オプションの小数部分を探す正規表現を修正しました。 – codeforester

関連する問題