FFmpegのdrawtextでテキスト表示の有効無効を指定するパラメータがdrawからenableへ変わっていた
久しぶりにBEER Media Server用のスクリプトをいじっていたらメディア情報を画面に表示する時にFFmpegのエラーとなってしまう事に気づきました。
すべて確かめていませんがFFmpegの2.2.3までは動いていました。その後のバージョンでdrawtextフィルターの仕様が変わったようです。
BEER Media Server 2でDLNA再生をする時にトランスコードさせいろいろなメディアファイルを再生できるようにしています。トランスコードにはFFmpegを使い、メディア情報も画面に埋め込んでトランスコードをしていました。
drawtextフィルターでメディア情報を書き込んでいたのです。
メディア情報がいつも表示されていては邪魔なので最初の10秒くらいだけ表示するようにしていました。drawtextフィルターには表示をコントロールするパラメータがあり、これで表示する期間を指定することができます。
FFmpeg の2.2.3くらいまでこのパラメータは "draw"という名前でした。
例えば
draw='lte(n,360)'
とするとエンコード開始から360フレームまでテキストを表示させる事ができます。
しかしその後、このパラメータが消えてしまったようです。整理されたマニュアルや情報に辿りつかずパラメータが無くなってしまったのかと思いました。どうやら名前が変わっただけのようです。新しいバージョンでは "enable" になったようです。つまり先ほどの例は
enable='lte(n,360)'
と書くことになります。
ついでに、特定の時間だけテキストを表示させるのに便利な指定方法として
enable='between(n,0,360)'
と書く事もできます。これは先ほどの例と同じく0フレームから360フレームの間表示させています。nというのがフレーム数を現します。これをtとすると秒数になります。
enable='between(t,10,30)'
と書けばエンコード開始から10秒後から30秒後までの間表示させることができます。
すべて確かめていませんがFFmpegの2.2.3までは動いていました。その後のバージョンでdrawtextフィルターの仕様が変わったようです。
BEER Media Server 2でDLNA再生をする時にトランスコードさせいろいろなメディアファイルを再生できるようにしています。トランスコードにはFFmpegを使い、メディア情報も画面に埋め込んでトランスコードをしていました。
drawtextフィルターでメディア情報を書き込んでいたのです。
メディア情報がいつも表示されていては邪魔なので最初の10秒くらいだけ表示するようにしていました。drawtextフィルターには表示をコントロールするパラメータがあり、これで表示する期間を指定することができます。
FFmpeg の2.2.3くらいまでこのパラメータは "draw"という名前でした。
例えば
draw='lte(n,360)'
とするとエンコード開始から360フレームまでテキストを表示させる事ができます。
しかしその後、このパラメータが消えてしまったようです。整理されたマニュアルや情報に辿りつかずパラメータが無くなってしまったのかと思いました。どうやら名前が変わっただけのようです。新しいバージョンでは "enable" になったようです。つまり先ほどの例は
enable='lte(n,360)'
と書くことになります。
ついでに、特定の時間だけテキストを表示させるのに便利な指定方法として
enable='between(n,0,360)'
と書く事もできます。これは先ほどの例と同じく0フレームから360フレームの間表示させています。nというのがフレーム数を現します。これをtとすると秒数になります。
enable='between(t,10,30)'
と書けばエンコード開始から10秒後から30秒後までの間表示させることができます。
コメント
コメントを投稿