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

【翻訳】FFmpegを使ってたった4ステップでビンテージ風な動画を作成する方法

著者のの許諾を得て翻訳・公開しています。
元記事: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つの動画が出来上がりました:

  1. レトロなザラザラ加工のオーバーレイ動画
  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.264crf=18でエンコーディングして画質のいい動画に仕上げる。

最終結果はこちら。すごいだろう?

元の動画と、並べて比較しましょう

アルファチャンネルの透明度の設定を変えたり、違うオーバーレイ、または、curvesフィルターを使っても、上記の手順に沿ってできます。

年末年始はビンテージ風動画で家族とたくさん遊んで、笑って、楽しんでください🙂

それでは!

deeeeeeekun
東京に住むフィリピン人エンジニア たまに歌い手。たまに踊り手。 最近中国語の勉強を再開しました。
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