Ffmpeg は画像サイズに関係なく、拡大されたビデオの上にテキストを描画します

Ffmpeg は画像サイズに関係なく、拡大されたビデオの上にテキストを描画します

ffmpeg を使用して単一の画像からビデオを作成し、ビデオの上にテキストを描画しています。

drawtext画像のスケールではなく、拡大縮小されたビデオ サイズの上にオーバーレイするにはどうすればよいですか?

現在、テキストを追加すると、X と Y は、拡大縮小されたビデオ自体ではなく、画像の左上隅から始まります。画像の寸法はビデオのスケールよりも小さいため、画像のサイズに関係なくテキストを描画する必要があります。テキストが画像のスケールの外側に出た場合、テキストは切り取られますが、残りの拡大縮小されたビデオの塗りつぶされていない黒い境界線はそのまま残ります。

これは私が使用しているコマンドです。

ffmpeg -loop 1 -r 1 -i image.jpg -b:v 1M -vf "scale=320:240, drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf: text='Test Text': x=200: y=100: fontsize=30: [email protected]: box=1: [email protected]" -t 20 output.mp4

答え1

画像が唯一のビデオソースである場合、ビデオただ画像と「ビデオの左上隅からのオーバーレイ「」は「」と同じ意味です。画像の左上隅からのオーバーレイ「だから、あなたはそれを正しくやっているのです。」

あなたが言及した黒い枠線はないビデオの一部。いくつかのメディア プレーヤーのコントロール パネルがビデオよりも幅が広いため、非常に狭いビデオを開くと、メディア プレーヤーが黒い境界線を表示しません。たとえば、VLC メディア プレーヤーのコントロール/メニュー バーはかなり幅が広く、ビデオに大きな境界線が表示されます。ただし、Windows Media Player では、コントロールが 320p ビデオの幅に収まるため、黒い境界線は表示されません。

答え2

以下のコマンドで動作しました:

ffmpeg -loop 1 -i image.jpg -r 29.970 -c:v libx264 -t 15 -pix_fmt yuv420p -profile:v high -level 4.2 -vf "scale=1920:1080, drawtext = text='Resumes in %{eif\:15-t\:d}': x=200: y=100: fontsize=30: [email protected]: box=1: [email protected]" out.mp4

関連情報