サンプルプログラム
以下のサンプルプログラムを保存して実行します。※ffmepg-pythonがインストールされた仮想環境の作成方法は「FFmpegをPythonから操作できるffmpeg-pythonをインストールした仮想環境を作成し、動画形式変換する」を参考にしてください。
各パラメータは以下の意味を持ちます。
・xパラメータ: x座標
・yパラメータ: y座標
・textパラメータ: 描画する文字列。「\n」で改行できます。
・fontfileパラメータ: 描画するフォントのファイルを指定します。日本語を描画する場合は、日本語フォントのファイルを指定します。
・fontsizeパラメータ: 文字の大きさを指定します。
・fontcolorパラメータ: 文字色
ffmpeg_drawtext.py
import ffmpeg
input = ffmpeg.input('./lake.mp4')
processed = input.video.filter("drawtext",x=100,y=50,text=u"サンプルです。\n2行目です。",fontfile="/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc",fontsize=100,fontcolor='#FFFFFF')
ffmpeg.output(processed, input.audio, './lake_drawtext.mp4').run()
・実行方法
以下のコマンドを実行して、サンプルプログラムを実行します。
python ffmpeg_drawtext.py
〇元動画
〇出力動画
行間スペースの指定
改行を含む文字列を描画するとき、行間のスペースはline_spacingパラメータで指定できます。ffmepg_drawtext_linespacing.py
import ffmpeg
input = ffmpeg.input('./lake.mp4')
processed = input.video.filter("drawtext",x=100,y=50,text=u"サンプルです。\n2行目です。",fontfile="/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc",fontsize=100,fontcolor='#FFFFFF',line_spacing=200)
ffmpeg.output(processed, input.audio, './lake_drawtext_linespacing.mp4').run()
〇出力動画
文字列が含まれる矩形領域の色の指定
文字列が含まれる矩形領域の色の指定はboxcolorパラメータで指定し、boxパラメータに1を指定することで文字列を含む矩形領域が塗りつぶされます。ffmepg_drawtext_boxcolor.py
import ffmpeg
input = ffmpeg.input('./lake.mp4')
processed = input.video.filter("drawtext",x=100,y=50,text=u"サンプルです。\n2行目です。",fontfile="/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc",fontsize=100,fontcolor='#FFFFFF',box=1,boxcolor='#008800')
ffmpeg.output(processed, input.audio, './lake_drawtext_boxcolor.mp4').run()
〇出力動画
縁取りした文字列を描画
borderwパラメータで縁取りの幅、bordercolorパラメータで縁取りの色を指定することが出来ます。ffmepg_drawtext_bordercolor.py
import ffmpeg
input = ffmpeg.input('./lake.mp4')
processed = input.video.filter("drawtext",x=100,y=50,text=u"サンプルです。\n2行目です。",fontfile="/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc",fontsize=100,fontcolor='#FFFFFF',borderw=10,bordercolor='#404040')
ffmpeg.output(processed, input.audio, './lake_drawtext_bordercolor.mp4').run()
〇出力動画
影付き文字の描画
shadowcolorで影の色、shadowx/shadowyで元の文字に対する影文字の相対位置を指定します。ffmepg_drawtext_shadowcolor.py
import ffmpeg
input = ffmpeg.input('./lake.mp4')
processed = input.video.filter("drawtext",x=100,y=50,text=u"サンプルです。\n2行目です。",fontfile="/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc",fontsize=100,fontcolor='#FFFFFF',shadowcolor='#202060',shadowx=10,shadowy=5)
ffmpeg.output(processed, input.audio, './lake_drawtext_shadowcolor.mp4').run()
〇出力動画
文字列を右下に描画
座標x/yを指定する際、定義済みの変数を使用することができます。これらを使用して計算して、画面の右下に文字列を描画することが出来ます。w: 入力画像の幅
h: 入力画像の高さ
tw: 描画する文字列の幅
th: 描画する文字列の高さ
ffmepg_drawtext_pos.py
import ffmpeg
input = ffmpeg.input('./lake.mp4')
processed = input.video.filter("drawtext",x="(w-tw)",y="(h-th)",text=u"サンプルです。",fontfile="/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc",fontsize=100,fontcolor='#FFFFFF')
ffmpeg.output(processed, input.audio, './lake_drawtext_pos.mp4').run()
〇出力動画
フォントに関するtips
googleさんの日本語Notoフォントは、以下のコマンドでインストールする事が出来ます(Ubuntu 20.04)。sudo apt-get -y install fonts-noto-cjk
インストールされているフォントの一覧は以下のコマンドで確認できます。
fc-list
関連情報
・様々な動画に関するアプリケーションについては、以下のまとめを参照してください。動画関連アプリケーションのまとめ
0 件のコメント:
コメントを投稿