詳しいモーションブラーなどの概要などはググって頂くとして、FPSなどの動きのある動画はモーションブラーをちょこっとかけると動画がとても映えて見えます。そこで今回は、使っている方が多いであろう動画編集ソフト『AviUtl』とモーションブラーをかけるために必要な『Avisynth』などを使って動画にモーションブラーをつけてみます。
(大雑把に説明すると『Avisynth』はスクリプトを記述してフィルター効果などを動画にかけて、そのデータを他の編集ソフトに受け渡す役目のソフトウェアです。)
Avisynth(オーヴィーシンス)をインストールする
(※AviUtlはインストール済みと過程して、Avisynthのインストールから順を追って説明していきます。)
まずは最新版のAvisynth(AviSynth 2.5.8)をここからダウンロードします。ダウンロードした後はAvisynth_258.exeを実行してインストール。いろいろ聞かれますが、全部「Next」を選択でどんどん進んでOKです。
インストール先のフォルダは変更しても構いません。ただ後でプラグインを入れるのにこのフォルダを開く必要があるため、どこにインストールしたのかは覚えておきましょう。
AvisynthMT(マルチスレッド化プラグイン)を導入する
Avisynthの導入が終わったら、次はAvisynthMTと呼ばれるファイルを導入します。まずはここからAvisynthMTをダウンロード。
そして解凍したファイルの中にあるavisynth.dllをシステムフォルダに移動させます。(コピーして置き換えますか?と出てきますが、気にせず「はい」「続行」などを選択してください。)
OSが32bitの方は C:/Windows/System32 のフォルダへ
OSが64bitの方は C:/Windows/SysWOW64 のフォルダへ
システムフォルダ内にある別のフォルダの中へ移動させないように注意しましょう。
MVtools2(フレーム・モーション補間プラグイン)を導入する
次はMVtools2です。MVToolsのサイトの一番下にある VI) Download から、MVTools v2.5.11.3をダウンロードして下さい。
解凍した中にあるmvtools2.dllのファイルを、Avisynthのインストールした場所にあるPluginsフォルダの中に移動させます。
初期設定だと
OSが32bitの方は C:/Program Files/Avisynth 2.5/Plugins
OSが64bitの方は C:/Program Files (x86)/Avisynth 2.5/Plugins
になっているはずなので、探してPluginsフォルダの中へ入れて下さい。
モーションブラーのスクリプトファイルを作る(avsファイル)
「ブラーのスクリプトがよくわからないよ!」な方は、ひとまず下のコードをメモ帳にそのままコピペして下さい。
DirectShowSource(“ブラーをかけたい動画のパス.avi“)
ConvertToYUY2()
SetMTMode(2)
super=MSuper(vpad=0, hpad=0, pel=4, sharp=4, rfilter=4)
backward_1 = MAnalyse(super, chroma=true, isb=true, search=3, searchparam=3, delta=1, blksize=8, blksizev=8)
forward_1 = MAnalyse(super, chroma=true, isb=false, search=3, searchparam=3, delta=1, blksize=8, blksizev=8)
backward_2 = MRecalculate(super, chroma=true, backward_1, blksize=8, blksizev=8, searchparam=4, search=3)
forward_2 = MRecalculate(super, chroma=true, forward_1, blksize=8, blksizev=8, searchparam=4, search=3)
backward_3 = MRecalculate(super, chroma=true, backward_2, blksize=4, blksizev=4, searchparam=2, search=3)
forward_3 = MRecalculate(super, chroma=true, forward_2, blksize=4, blksizev=4, searchparam=2, search=3)
MFlowBlur(super, backward_3, forward_3, blur=40)
SetMTMode(1)
GetMTMode(false) > 0 ? distributor() : last
コピペが終わったら、ブラーをかけたい動画のパス.aviという箇所にそのまんまですがブラーをかけたい動画のパスを入力します。動画を右クリック→プロパティ→セキュリティ→オブジェクト名 という箇所に動画のパスが載っているので、そのままコピペで貼り付けます。
1つ注意しておく点は、モーションブラーをかけたい動画はAVI形式にしておきましょう。MP4でもスクリプトを変えれば大丈夫かとは思いますが、上記のスクリプトで動作するかどうかは不明です。
動画のパスをコピペできたら、このテキストをavsという拡張子で保存します。ファイル名は何でもいいです。(英数字でね!)ひとまずmotionblur.avsとかの名前をつけておけばOK。
この出来上がったavsファイルを、AviUtlに読み込ませてモーションブラーのかかった動画をエンコードする事になります。ひとまず先に動画を完成させる事にしましょう!という事で、簡単なスクリプトの補足説明などは最後のTips項目で補完します。
!補足!
上記のスクリプトをコピペしてメモ帳にコピー&ペーストすると、引用符が全角表示される場合がありますので、半角記号に直してください。
AviUtlにavsファイルを読み込ませる(動画エンコード作業)
AviUtlを起動して作成したavsファイルをドラッグ&ドロップすると、ブラーのかかった動画が表示されます。ここでプレビュー再生してみると音声がプツプツ飛んでいたり、動画がカクカクしているのが見られますが正常な動作なのでご安心を。
avsファイルをドラッグ&ドロップしてもエラーが表示されて動画が表示されない場合、スクリプトの記述が間違っていたり動画に何かしらの問題があります。(上記のスクリプトでテストがてらモーションブラー動画のエンコード確認済みなので、多分エラーは出ないかとは思いますがはてさて…。)
あとはいつも通り、MP4(H.264)でエンコードするなりAVIでエンコードするなりご自由にどうぞ。以上、簡単にですがAviUtlとAvisynthでモーションブラーをかける解説は終わりです。続きは補足説明など。
Tips(補足など)
「スクリプト自分で作ってみたいんじゃー!」な人が参考になりそうなサイトなど。
MVTools 本家(スクリプトの記述説明など 英語。)
AviSynth&MVToolsによるフレーム補間(ちりとまとチャンネル様)
MVtools覚え書きその2(ぼくんちのTV別館様)
MVtoolsのスクリプトの意味などを簡単に紹介してくださっています。あとはモーションブラー以外にも、AviSynthとスクリプトを使っていろいろな事が出来るので、興味のある方はAviSynth.infoのサンプルスクリプトページも参考になるかと思います。
DirectShowSource(“ブラーをかけたい動画のパス.avi”)
ConvertToYUY2()
SetMTMode(2)
super=MSuper(vpad=0, hpad=0, pel=4, sharp=4, rfilter=4)
backward_1 = MAnalyse(super, chroma=true, isb=true, search=3, searchparam=3, delta=1, blksize=8, blksizev=8)
forward_1 = MAnalyse(super, chroma=true, isb=false, search=3, searchparam=3, delta=1, blksize=8, blksizev=8)
backward_2 = MRecalculate(super, chroma=true, backward_1, blksize=8, blksizev=8, searchparam=4, search=3)
forward_2 = MRecalculate(super, chroma=true, forward_1, blksize=8, blksizev=8, searchparam=4, search=3)
backward_3 = MRecalculate(super, chroma=true, backward_2, blksize=4, blksizev=4, searchparam=2, search=3)
forward_3 = MRecalculate(super, chroma=true, forward_2, blksize=4, blksizev=4, searchparam=2, search=3)
MFlowBlur(super, backward_3, forward_3, blur=40)
SetMTMode(1)
GetMTMode(false) > 0 ? distributor() : last
モーションブラーのスクリプトファイルを作る項目で使用したスクリプトですが少しだけ大雑把な説明。
hpad=0 正確な動きを推定するため左右のフレーム境界付近に
小さな隙間を追加する処理。デフォルトは8、数値が小さいほど処理が綺麗。
vpad=0 正確な動きを推定するため上下のフレーム境界付近に
小さな隙間を追加する処理。デフォルトは8、数値が小さいほど処理が綺麗。
pel=4 動き推定の精度。デフォルトは2。(1か2か4で指定)
sharp=4 サブピクセルの補間方法。デフォルトは2。(2か4で指定)
ソフトな補完が好みの方は数値を2にするかsharp=4の記述を丸ごと消してOK。
rfilter=4 輝度値を滑らかにする。(ノイズを除去するために用いられます)
0~4で指定、数値が多いほど処理が重くなるが綺麗。
blur=40の箇所でブラーの強弱を変えられます。もうちょっとブラーを強くしたい方はここの数値を変えて下さい。(最大100まで)
ただしあまりにも強いブラーをかけると今度は逆に見え辛くなってしまうので、最大でも60辺りでストップしておいた方がいいかなと思います。(個人的にはちょっとかかっているかな?と感じる40が見やすくて好きです。)そしてブラーをかけてエンコードする場合、エンコード時間が大幅に長くなるので覚悟しておきましょう…。
参考までに、上記のスクリプトを使用して20分弱の動画をH.264(1280×720、ビットレート6000kbps)でブラーをかけてエンコードしたら、出来上がるまで3時間以上かかりました。私のPCスペックはそこそこある方だと思うので(CPU:Core i7-3770K、メモリ:16GB)PCスペックがミドルスペックの方はもっと時間がかかるかもしれません。
「ブラーをかけたいけどエンコードの時間も短縮したい!」という方は、スクリプトの数値を変えた方がいいかもしれません。(その分映像の綺麗さなどを少し犠牲にしなければいけませんが。)ひとまず上で紹介したスクリプトよりかはエンコードの時間が短いスクリプトも記載しておきます。
DirectShowSource(“ブラーをかけたい動画のパス.avi”)
ConvertToYUY2()
SetMTMode(2)
super=MSuper()
backward_vectors = MAnalyse(super, chroma=true, isb=true)
forward_vectors = MAnalyse(super, chroma=true, isb=false)
MFlowBlur(super, backward_vectors, forward_vectors, blur=50)
SetMTMode(1)
GetMTMode(false) > 0 ? distributor() : last
DirectShowSource(“ブラーをかけたい動画のパス.avi”)
ConvertToYUY2()
SetMTMode(2)
super=MSuper(vpad=0, hpad=0, pel=4, sharp=4, rfilter=4)
backward_1 = MAnalyse(super, chroma=true, isb=true, search=3, searchparam=3, delta=1, blksize=8, blksizev=8)
forward_1 = MAnalyse(super, chroma=true, isb=false, search=3, searchparam=3, delta=1, blksize=8, blksizev=8)
backward_2 = MRecalculate(super, chroma=true, backward_1, blksize=8, blksizev=8, searchparam=4, search=3)
forward_2 = MRecalculate(super, chroma=true, forward_1, blksize=8, blksizev=8, searchparam=4, search=3)
backward_3 = MRecalculate(super, chroma=true, backward_2, blksize=4, blksizev=4, searchparam=2, search=3)
forward_3 = MRecalculate(super, chroma=true, forward_2, blksize=4, blksizev=4, searchparam=2, search=3)
MFlowBlur(super, backward_3, forward_3, blur=40)
SetMTMode(1)
GetMTMode(false) > 0 ? distributor() : last
↑のスクリプトでエンコードしたのですができた動画を見るとスローになってしまうのですが、
何が原因か教えてください。
MP4で出力してます
すみませんコーデックの問題でした。解決しました。m(_ _)m