そもそもだけど ffprobe
の結果って以下のような感じ。
これらの Audio:
に続く aac
とか mp3
だけを取得したかった。
というわけで作ったのが以下のコマンド。
これを実行すると、ffprobe
の結果から音声コーデック (aac
とか mp3
) だけを抜き出せる。
まず 2>&1
だけど、これは ffprobe
が何故か結果をstderrに出してくるから、標準出力にまとめて後続の処理に渡せるようにしてる。
そしたら awk
で正規表現を使って目的の箇所を抜いてる。Audio:
から最初のカンマまでの間に対して、([^ ]+?)
で半角スペース以外の文字の連続をキャプチャしてる感じ。aac
の場合は aac (LC) (mp4a / 0x6134706D)
とかだから、うまいこと aac
だけを抜けるように頑張ってる。
あとは match()
の結果が m
に入ってるから、それを出力してる。丸括弧でキャプチャした文字列はインデックス1以降に入ってるから [1]
。
おまけ
引数で指定した動画ファイルから音声のみを audio.aac
とか audio.mp3
として出力するシェルスクリプト。