[FFmpeg] FFmpeg でエンコード時にタイムコードを付ける

スポンサーリンク

環境

Ubuntu 12.04.2 (64bit) (3.5.0-24-generic)
FFmpeg

内容

ビデオを再生しながらタイムコード (時間情報) を表示できるように FFmpeg でエンコードをしてみます.

例えば,下記のようにエンコードすると,エンコードされたビデオにタイムコードを焼き付けることができます.
もちろん再生が進むに連れてタイムコードも進んでいきます.
下記の例では、00:00:00:00 (時間:分:秒:ミリ秒) からタイムコードが進みます.
なお,ビデオの実際のフレームレートと rate の値を確実に合わせる必要があります.

$ ffmpeg -i in.mp4 -vf drawtext="fontfile=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf:fontcolor=00FF00:fontsize=50:x=50:y=20:rate=29.97:timecode='00\\:00\\:00\\:00'" out.mp4

タイムコードの他に任意の文字を別の行として焼き付けたい場合は,例えば下記のようにします.
x, y 座標値とフォントサイズを関係を考慮して,文字が被らないように調節します.
drawtext を改行させる方法が分からなかったので,複数の drawtext を設定しています.

$ ffmpeg -i in.mp4 -vf "drawtext=fontfile=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf:fontcolor=00FF00:fontsize=50:x=50:y=20:rate=29.97:timecode='00\\:00\\:00\\:00', drawtext=fontfile=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf:fontcolor=00FF00:fontsize=50:x=50:y=60:text='homhom'" out.mp4

参考
http://ffmpeg.org/trac/ffmpeg/wiki/FilteringGuide
https://sites.google.com/a/asu.edu/wireless-video-sensor/video/how-to-setup-full-ffmpeg-tools-in-ubuntu-11-10/useful-ffmpeg-commands
http://stackoverflow.com/questions/11138832/ffmpeg-multiple-text-in-one-command-drawtext

FFmpeg
スポンサーリンク
コピペワールド