Help us understand the problem. What is going on with this article?

ffmpegを使って動画の最初にタイトルを追加する

色々と苦労したので,メモ代わりに.動画の上にタイトルの文字を入れるのではなく,動画の開始前にタイトルを数秒間表示させる方法です.

1. タイトル作成

ffmpeg -y ^
 -f lavfi -i "color=c=black:s=1280x720:r=30000/1001:d=5.0" ^
 -f lavfi -i "aevalsrc=0|0:c=stereo:s=44100:d=5.0" ^
 -vf "drawtext=fontsize=60:fontfile=C\\://Windows/Fonts/arial.ttf:fontcolor=black:fontcolor=white:textfile='title.txt':x=(w-text_w)/2:y=(h-text_h)/2" ^
  word.mp4


ffmpeg -y ^
 -i word.mp4 ^
 -vf "fade=t=in:st=0:d=2,fade=t=out:st=4:d=1" ^
 word_f.mp4

5秒間の黒い動画を作成し,その上にテキストを表示させます.表示させる文字は別途テキストファイルを用意し,textfile='title.txt'にて指定.

2番目の処理では,文字をフェードイン,フェードアウトさせています.これで0~2秒でタイトルがフェードイン→2~4秒までタイトル表示→4~5秒でタイトルが消える動画が出来ました.

2. 元の動画の前に空白を入れる

始めは上記の動画と元の動画をconcatで結合・・・としたが,エラーは出ないものの上手く結合されず.ffmpegのマニュアル等を調べていたらitsoffsetで動画に空白部分を追加出来るとの事で,これとoverlayを組み合わせる事にしました.

ffmpeg -y ^
 -itsoffset 5 -i "input.mp4" ^
 -af "adelay=5s|5s" ^
 "input_of5.mp4"

adelayについて,PC上ではitsoffsetのみで5秒間の空白/無音が追加されたのですが,別端末(Androidタブレット)では動画と音が5秒間ずれると言う,環境によって再生のされ方が違う動画が出来てしまいました.

ここで,adelayにより,明示的に5秒間の無音を入れ,この問題は解決.

3. 動画の結合

ffmpeg -y ^
 -i "input_of5.mp4" ^
 -i "word_f.mp4" ^
 -filter_complex "overlay=x=0:y=0:enable='between(t,0,5)'" ^
 -filter_complex "amix=inputs=2:duration=longest:dropout_transition=2" ^
 "out.mp4"

overlayにて2つの動画を重ね,意図した音が消えないようにamixにて2つの音も重ねます.ポイントはoverlayでの時間指定で,enable='between(t,0,5)'により,t(時間[s])が0~5秒の間だけoverlayをenable状態にする事が出来ます.

4. 終わりに

この手法,需要があまり無いのか,調べてみても,そのものの方法が出て来ませんでした.高価なツールを使えばきっと簡単に出来るし,ffmpegでやろうとする人は少ないのかも知れません.自分はかなり試行錯誤を繰り返したので,この記事がffmpegユーザーに役立てば幸いです.

haverisxa
ゲーム作りなどの創作活動を主にやっています.Rubyを使ってCUIツールを便利に使う事や,RPGツクールなどに役立てる事を良く考えています.
http://haverisxa.web.fc2.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした