物忘れの激しいエンジニアのメモ

スクレイピング、映像系、アプリ、webなど...

ffmepg で No such filter: 'drawtext' エラー

背景

動画に文字をfade in / fade out でいれるのにdrawtextが使える!という情報を見て、コマンドを実行するとdrawtextが無いというエラー。

$ ffmpeg -i "input.mp4" -filter_complex "format=gbrp,drawtext=fontfile='your/font/file':fontsize='30':x=(w-tw)/2:y=(h-th)/1.2:text='title_text':fontcolor_expr=ffffff%{eif\\:clip(255*(1*between(t\,1+1.5\,6-1.5)+((t-1)/1.5)*between(t\,1\,1+1.5)+(-(t-6)/1.5)*between(t\,6-1.5\,6) )\,0\,255)\\:x\\:2},format=pix_fmts=yuv420p" -movflags +faststart -c:v libx264 -crf 20 "output.mp4"

...

[AVFilterGraph @ 0x466e4c0] No such filter: 'drawtext'

...

原因

使用しているffmpegがdrawtextに対応していないのが原因でした。

解決方法

drawtextを使用するにはfreetypeというライブラリが必要でした。

stackoverflow.com

しかし当方Macなのですが、brewffmpegをインストールするときのオプションが廃止されているようです。

$ brew install ffmpeg --with-freetype

Error: invalid option: --with-fdk-freetype

そしてオプションつけなくても全部入りでインストールされるようです!

qiita.com

なのでffmpegを再インストールしたら無事にdrawtextを使えるようになりました。

$ brew reinstall ffmpeg

まとめ

Macに入っていたffmepgのバージョンがdrawtextに対応していなかった。 ffmpegをインストールしなおしたら使えるようになりました。

$ brew reinstall ffmpeg