再生前自動24fps化+Avisynth Filter+SVP4で補間再生

自動24fps化を行うtdecimate関数は、リアルタイム処理だとffdshow raw video filterの使用が必須ですが(Avisynth Filterを使用するとフリーズしてしまいますが)、再生前に手動や自動で24fps化しておけば、目的の動画をAvisynth Filter+SVP4で補間再生することが可能です。
通常の動画再生だとあまり差が分かりませんが、補間再生においてはffdshow raw video filterだとAvisynth Filterと比べると明らかに動作にもたつきが生じます。このため、本ページの方法を使えば、補間再生品質が大幅に向上します。
再生前変換の手間はかかりますが、手動変換ほどではありません。

  1. ファイル名を含めた目的の動画ファイルのパスを全てASCIIコード(半角アルファベット、数字など)にしておく(.avsは日本語などの2バイト文字を扱えないため、フォルダ名やファイル名に日本語が入っていると、動画ファイルの読み込みに失敗してしまう)。

  2. https://github.com/FFMS/ffms2/releasesからffms2-xxxx-msvc.7zをダウンロードし、エクスプローラーでファイルのプロパティの一番下の「許可する」にチェックを入れてOKを押してから、展開。
    ※「許可する」を行わずに展開すると、dllが動作しないので注意。

  3. ffms2-xxxx-msvc\x86の中にあるffms2.dllをC:\Program Files (x86)\SVP 4\pluginsにコピー。
    ※OSが64bitであっても、AviUtlは32bitアプリケーションなので、x86の方を使用。

  4. 目的の動画を、TIVTC(自動24fps化導入時に追加したSVP4のオプション)が有効になっている32bit動画プレイヤー(MPC-BE(32bit)など)で再生。
    再生後、キーボードのWindowsキー+Rを押して%APPDATA%\SVP4\scriptsの中にある.avsファイルを、他の適当な場所にコピー(SVP4再起動時にscripts内のファイルが全て消去されてしまうため)。

  5. 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に読み込ませた場合、エラーが出るので注意。

  6. AviUtlを起動し、メインメニューの設定→フレームレートの変更 の、なし にチェックを入れる(フレームレート変更はtdecimate関数が行うため)。
    次に、5で書き換えた.avsファイルをウィンドウにドラッグ・アンド・ドロップ(読み込みに数十分かかる+読み込み中はAviUtlが固まるので注意)。
    読み込みが終わったら、UtVideo RGBなどのCODECを指定してAVI出力(マルチスレッド)。

  7. SVP4を起動して、6の動画を、Avisynth Filterを設定した64bit動画プレイヤーで再生。

動画ファイルのサイズが大き過ぎる場合、再生時に動画プレイヤーがフリーズしてしまうため、6の出力前にAviUtlの右下の矢印アイコンで範囲指定するなどして適当なサイズ(200GBなど)に区切ってください。

例えばHuluなどの配信動画は、不規則に重複フレームが挟まっているため、それを手動で除去するには膨大な手間がかかってしまいますが、この方法を使えば、手軽に大部分の重複フレームを除去することが可能です。

この記事が気に入ったらサポートをしてみませんか?