ffmpegの進捗・終了予定時刻をリアルタイムで表示する

no-translate-detected_318-45363
ffmpegを動かしていると、終わるのにどれくらいかかるのか分からなくなる。せめてシェル上で確認したい……。そんなときに使えそうなスクリプトを海外のフォーラムで発見したので紹介したい。


シェルスクリプトでffmpegの進捗状況・終了予定時刻を表示する

簡潔に言えば、下記のスクリプトがたぶん使えるはず。海外のフォーラムに転がっていたものを少し改変。
ちなみに、当方のffmpegのバージョンは次の通り。

なお、実装しているのは下記の設定。

driver-ffmpeg-teaser
tsをmp4にするのに、昔は莫大なことを行っていたのだが、今は非常にシンプルにしている。といっても、真面目な(つまり綺麗な)エンコードを行おうとすると、やはり20fpsが限界。

終了予想時刻

$ETAをそのまま使えば、hh:mm:dd形式で取り出せる。

経過時間

開始してからの経過時間は$(date -d @$ELAPSED -u +%H:%M:%S)。こちらもhh:mm:dd形式。

進捗率(パーセント)

$PERCENTAGEで取り出せる。単なる数字なので、そのまま出力する場合にはうしろに%を付けると良い感じ。

今回はTwitterに投稿

今回は44行目のハイライトのとおり、ttytterを用いてTwitterに吐き出す設定としている。こちらも、シェルで確認したいならecho、Webで確認したいならPHPやjsでゴニョゴニョ、などいろいろと出来るはず。
なお、あまり短く投稿すると面倒なので、今回はsleep 10mとしているが、ゴニョゴニョされる方はここを5なりに変更すればリアルタイムで変更が反映される。

ffmpeg用に変更する場所

ハイライトをした73行目にffmpegが転がっている。自分の普段の設定を入れてしまうのが吉。ただし、最後の”2>/dev/null &”は忘れないように。

使い方

肝心の使い方はこんな感じ。

簡単ですね。そんなこんなで、ffmpegでエンコするときの終了予想時刻を知りたいという自己満足は、こんな感じで解消可能です。

Pocket
LINEで送る

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です