単一の画像からビデオを作成し、その上にテキストを追加しようとしています。Ubuntu のコマンド:
ffmpeg -loop 1 -r 1 -i image.jpg -b:v 1M -vf scale=320:240 "drawtext=fontfile=/usr/share/fonts/truetype/DejaVuSans.ttf: text='Test Text'" -t 20 output.mp4
そして、次のエラーが発生します:
Unable to find a suitable output format for 'drawtext=fontfile=/usr/share/fonts/truetype/DejaVuSans.ttf: text='Test Text''
drawtext=fontfile=/usr/share/fonts/truetype/DejaVuSans.ttf: text='Test Text': Invalid argument
スケールを320:240に保つ必要があります
なぜこのようなことが起こるのか分かりません。
-loop 1
もう一つの問題は、コマンドを追加すると、エンコードに進む前に5〜7秒間フリーズすることです。この問題は、-loop 1
この出力が-loop 1
フリーズした後:
ffmpeg version 2.3.git Copyright (c) 2000-2014 the FFmpeg developers
built on Aug 14 2014 01:22:13 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
configuration: --prefix=/home/user/ffmpeg_build --extra-cflags=-I/home/user/ffmpeg_build/include --extra-ldflags=-L/home/user/ffmpeg_build/lib --bindir=/home/user/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libfreetype --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-libfribidi --enable-libfontconfig
libavutil 54. 1.100 / 54. 1.100
libavcodec 56. 0.100 / 56. 0.100
libavformat 56. 0.100 / 56. 0.100
libavdevice 56. 0.100 / 56. 0.100
libavfilter 5. 0.100 / 5. 0.100
libswscale 3. 0.100 / 3. 0.100
libswresample 1. 0.100 / 1. 0.100
libpostproc 53. 0.100 / 53. 0.100
そして、いつものようにエンコードを続行します。奇妙ですね。
答え1
問題は、ffmpeg に 1 つのフィルター (つまり、scale
1 つ) だけを与えたことです。
-vf scale=320:240 "drawtext=fontfile=/usr/share/fonts/truetype/DejaVuSans.ttf: text='Test Text'"
この"drawtext…"
部分は出力ファイル名として解釈されますが、開くことはできません。複数のフィルターを使用する場合は、それらをコンマで結合します。
-vf "scale=320:240, drawtext=fontfile=/usr/share/fonts/truetype/DejaVuSans.ttf: text='Test Text'"