著者のの許諾を得て翻訳・公開しています。
元記事:Create Vintage Videos Using FFmpeg in 4 Simple Steps(2020.11.15公開)
年末年始に家族と思い出話をするのに、ビンテージ風の動画よりいいものはないでしょう。そして、ホームビデオをビンテージ風にするには、タイムマシーンで50、60年代に戻る必要もない!必要なのは、FFmpegと、想像力と、そしてこの手順書だけなのだ🙂
それでは、FFmpegを使って動画をビンテージ風にする方法を見てみましょう。
ビンテージ動画とは?
よくぞ聞いてくれた!
僕は「ビンテージ動画」を、「フレームレートが低く(15fpsぐらい)、ノイズとザラザラが入っていて、セピア調の動画」と定義します!
さて、FFmpegでこれらをどう実現するのか。
このチュートリアルでは、Xiphより「Touchdown Pass」という動画を使って解説する。20秒の動画だが、このチュートリアルでは10秒にトリミングしたものを使用する。
それでは、始めましょう!
Step 1: FFmpegを使ってフレームレートを変更
まずは、動画の早送りです。60fpsや30fps以前の時代に戻って、10fpsに下げましょう。それだけでレトロな動画になります!
ffmpeg.exe -i td-10sec.mp4 \
-filter:v fps=fps=10 \
td-fast.mp4
処理後の動画はこちら。
Step 2: FFmpegのフィルターでビンテージ風に
次は、動画のビビッドな色をセピア調に変えましょう。これはFFmpegのcurves
というフィルターで実現できる。curves
を使って、フレームごとのRGBの量の変更ができ、RGB曲線を操作して色の調整も可能である。
嬉しいことに、FFmpegにはいい感じのvintage
フィルターがプリセットで入っています!早送りした動画をビンテージ風のものに変換するコマンドは以下の通り。簡単だろう?
ffmpeg.exe -i td-fast.mp4 \
-vf curves=vintage \
td-vintage-fast.mp4
curves=vintage
フィルターをかけた動画はこちら。
Step 3: ザラザラ加工のオーバーレイのリサイズ
最後に、フィルム粒子とノイズを加えます。そうすると、まるでフィルムで撮影して、ホコリだらけの押入れにしまったものが40年後に掘り出されたかのような仕上がりに!
素晴らしいレトロなオーバーレイをYouTubeで見つけました。ダウンロードURLは動画の概要欄にあります。
上記のオーバーレイは1440x1080
なので、元の動画に合わせて1920x1080
に変換しなければならない。
FFmpegのscale
フィルターを使って動画のサイズ変更をするコマンドは以下の通り。サイズ変更後のオーバーレイはoldFilm1080.mp4というファイルとして保存した。
ffmpeg -i old-film-grain.wmv \
-vf scale=1920:1080,setsar=1:1 \
oldFilm1080.mp4
Step 4: 動画にオーバーレイを追加
2つの動画が出来上がりました:
- レトロなザラザラ加工のオーバーレイ動画
- ビンテージ風の早送りした動画
残るのは、2つの動画を重ね合わせて我々FFmpegが頑張った成果を楽しむのみ!
そのためのコマンドは以下の通り:
ffmpeg.exe \
-i oldFilm1080.mp4 \
-i td-vintage-fast.mp4 \
-filter_complex "[0]format=rgba,colorchannelmixer=aa=0.25[fg];\
[1][fg]overlay[out]" \
-map [out] \
-pix_fmt yuv420p -c:v libx264 -crf 18 \
touchdown-vintage.mp4
説明しよう。
- FFmpegに2つの動画を入力する。
-
filter_complex
で、colorchannelmixer
を使ってオーバーレイ動画([0]
)のアルファチャンネルを操作し、その結果を[fg]
に代入。オーバーレイ動画は白黒のため、アルファだけ操作しても、今回は十分である。文法は次の通り、colorchannelmixer=rr:rg:rb:ra:gr:gg:gb:ga:br:bg:bb:ba:ar:ag:ab:aa
。 - アルファだけ変更するため、aa(出力のアルファ)だけ0.25に設定する。
- それを早送りした動画(
[1]
)にoverlay
を使って重ね合わせ、その結果を[out]
に代入。これを[1][fg]overlay[out]
という部分で表している。 - 最後に、それを
H.264
とcrf=18
でエンコーディングして画質のいい動画に仕上げる。
最終結果はこちら。すごいだろう?
元の動画と、並べて比較しましょう
アルファチャンネルの透明度の設定を変えたり、違うオーバーレイ、または、curves
フィルターを使っても、上記の手順に沿ってできます。
年末年始はビンテージ風動画で家族とたくさん遊んで、笑って、楽しんでください🙂
それでは!