1. ホーム
  2. linux

[解決済み] ffmpegの出力から継続時間を抽出する方法は?

2023-04-10 22:52:27

質問

メディアファイルに関する多くの情報を得るために、次のようなことができます。

ffmpeg -i <filename>

ここで、多くの行が出力されますが、その中でも特に

Duration: 00:08:07.98, start: 0.000000, bitrate: 2080 kb/s

のみを出力したい。 00:08:07.98 のみを出力したいので

ffmpeg -i file.mp4 | grep Duration| sed 's/Duration: \(.*\), start/\1/g'

しかし、長さだけでなく、すべてをプリントしてしまいます。

でも ffmpeg -i file.mp4 | grep Duration は全てを出力します。

デュレーションの長さだけを取得するには?

どのように解決するのですか?

ffmpeg はその情報を stderr ではなく stdout . これを試してみてください。

ffmpeg -i file.mp4 2>&1 | grep Duration | sed 's/Duration: \(.*\), start/\1/g'

のリダイレクトに注目してください。 stderrstdout : 2>&1

EDITです。

あなたの sed ステートメントも機能していません。これを試してみてください。

ffmpeg -i file.mp4 2>&1 | grep Duration | awk '{print $2}' | tr -d ,