FFmpegのdrawtextでテキストの改行をしたい(multiple line)時は改ページ(Form Feed \f ^L)を使えばよい

FFmpegでエンコード時にテキストを書き込むdrawtextフィルターがありますが、ずっと改行をする方法が判りませんでした。

普通にForm Feed(\f ^L)コードを置いておけばよかったんですね。




DLNAサーバーソフト BEER Media Server 2のLuaスクリプトでメディア情報を画面に埋め込むときなどにFFmpegのdrawtextフィルターを使っています。ここ2年くらいdrawtextフィルターでテキストを表示する時に1行だけでは無く複数の行で表示させる改行を使う方法が判らずにいました。

最近Luaスクリプトをいじっっていたので久しぶりにいろいろ試していました。するとあっさり改行ができました。テキストファイルに改ページを入れておけばよかったんです。
実は以前に探して知っていたはずなんですが・・・ ^L を脳内で改行に変換してしまい、うまく表示できなかったようです。

Luaスクリプトでは改ページ(Form Feed)は

"\f"

と文字列に書いておけばいいです。多くの言語で同じですね。
あるいは垂直タブ

"\v"

でも改行されました。

しかしながら、時々存在しない文字が表示されてしまいます。ちょっとdrawtextのテキスト処理に怪しい所があるのでしょうか? メモリーリークしてないよね。
"\f"自体が表示されてしまうのかもしれません。ゴミ文字を表示させないようにするため改行と合わせて "\r\n\f" と使用すると良い場合もありますが万能ではありません。

コメント

最近のコメント

Threaded Recent Comments will be here.