再生前自動24fps化+Avisynth Filter+SVP4で補間再生
自動24fps化を行うtdecimate関数は、リアルタイム処理だとffdshow raw video filterの使用が必須ですが(Avisynth Filterを使用するとフリーズしてしまいますが)、再生前に手動や自動で24fps化しておけば、目的の動画をAvisynth Filter+SVP4で補間再生することが可能です。
通常の動画再生だとあまり差が分かりませんが、補間再生においてはffdshow raw video filterだとAvisynth Filterと比べると明らかに動作にもたつきが生じます。このため、本ページの方法を使えば、補間再生品質が大幅に向上します。
再生前変換の手間はかかりますが、手動変換ほどではありません。
ファイル名を含めた目的の動画ファイルのパスを全てASCIIコード(半角アルファベット、数字など)にしておく(.avsは日本語などの2バイト文字を扱えないため、フォルダ名やファイル名に日本語が入っていると、動画ファイルの読み込みに失敗してしまう)。
https://github.com/FFMS/ffms2/releasesからffms2-xxxx-msvc.7zをダウンロードし、エクスプローラーでファイルのプロパティの一番下の「許可する」にチェックを入れてOKを押してから、展開。
※「許可する」を行わずに展開すると、dllが動作しないので注意。ffms2-xxxx-msvc\x86の中にあるffms2.dllをC:\Program Files (x86)\SVP 4\pluginsにコピー。
※OSが64bitであっても、AviUtlは32bitアプリケーションなので、x86の方を使用。目的の動画を、TIVTC(自動24fps化導入時に追加したSVP4のオプション)が有効になっている32bit動画プレイヤー(MPC-BE(32bit)など)で再生。
再生後、キーボードのWindowsキー+Rを押して%APPDATA%\SVP4\scriptsの中にある.avsファイルを、他の適当な場所にコピー(SVP4再起動時にscripts内のファイルが全て消去されてしまうため)。4でコピーした.avsファイルをメモ帳で開き、16行目にあるffdshow_source()をFFVideoSource()に書き換える。
次に、FFVideoSourceの後ろの括弧内に、4で再生したaviファイルのパスをダブルクォーテーション(")で囲んで書き込む。
例:ffdshow_source()→FFVideoSource("d:\tmp\input.mp4") ※.avsファイルのパスではなく.目的の動画ファイルのパスであることに注意。上述通り、2バイト文字不可。
次に、上の方に並んだLoadPlugin(、、、の下に
LoadPlugin("C:\Program Files (x86)\SVP 4\plugins\ffms2.dll")
を追加。
次に、以下のようにinterpolate関数をコメントアウトする。
/*
stereo_type==0 ? eval(""" interpolate(input)
""") : stereo_type==1 ? eval("""
lf = interpolate(input.crop(0,0,input.width/2,0))
rf = interpolate(input.crop(input.width/2,0,0,0))
StackHorizontal(lf, rf)
""") : stereo_type==2 ? Eval("""
lf = interpolate(input.crop(0,0,0,input.height/2))
rf = interpolate(input.crop(0,input.height/2,0,0))
StackVertical(lf, rf)""") : input
*/
ファイル→名前を付けて保存を選択し、1番下の「文字コード」をANSI(Shift-JIS)に変更して、同名で上書き保存。
※メモ帳の標準保存時文字コードであるUTF-8で保存した.avsファイルをAviUtlに読み込ませた場合、エラーが出るので注意。AviUtlを起動し、メインメニューの設定→フレームレートの変更 の、なし にチェックを入れる(フレームレート変更はtdecimate関数が行うため)。
次に、5で書き換えた.avsファイルをウィンドウにドラッグ・アンド・ドロップ(読み込みに数十分かかる+読み込み中はAviUtlが固まるので注意)。
読み込みが終わったら、UtVideo RGBなどのCODECを指定してAVI出力(マルチスレッド)。SVP4を起動して、6の動画を、Avisynth Filterを設定した64bit動画プレイヤーで再生。
動画ファイルのサイズが大き過ぎる場合、再生時に動画プレイヤーがフリーズしてしまうため、6の出力前にAviUtlの右下の矢印アイコンで範囲指定するなどして適当なサイズ(200GBなど)に区切ってください。
例えばHuluなどの配信動画は、不規則に重複フレームが挟まっているため、それを手動で除去するには膨大な手間がかかってしまいますが、この方法を使えば、手軽に大部分の重複フレームを除去することが可能です。
この記事が気に入ったらサポートをしてみませんか?