このページについて

PC環境が色々変わってきたので、再び動画エンコ環境を調整中。多分まだまだ良い方法はあります。

 プライバシーポリシー / 免責事項

AviSynth2.6(まだアルファ版扱い)へのバージョンアップ、および現行バージョンへ戻す方法が思いっきり簡単な事に今更ながら気が付いたので、ちょこっとAviSynth2.6を体験してみました。

AviSynth2.6の主な改良点

AviSynth 2.6.0 Alpha1 [August 20th] - Doom9's Forum

SetMTModeとGetMTModeという関数でマルチスレッドをサポート。
SSE3+に最適化
SSSE3, SSE4.1 & SSE4.2 あたりの強化・バグフィックス
扱える色空間にYV24, YV16, Y8, YV411などを追加
TCP関連の改良

上記は実装予定であり、現行どこまで進んでいるかは良く分かりません。

AviSynth2.5X⇒2.6へのバージョンアップ方法

  1. AviSynth2.5系(出来れば2.5.8)をあらかじめインストール。
  2. Doom9's ForumのAviSynthスレッドから最新バージョンをダウンロード。
    Avisynth 2.6 - Doom9's Forum
    ▲ここから。
    ダウンロードできるのはavisynth.dll単体です。
  3. x86 Windowsの場合はwindows/system32フォルダ
    x64 Windowsの場合はWindows/SysWOW64フォルダ
    にダウンロードしたavisynth.dllを移動。というか置き換え。
    AviSynth26
    ▲その際以前のバージョンのavisynth.dllを残しておくと、元の環境に戻すのも簡単です。
  4. PC再起動
    実は再起動しなくてもOKだけど、念の為。
  5. AviSynth2.6のアンインストール
    「3.」で置き換えたavisynth.dllを元に戻せばAviSynthは元のバージョンに戻ります

AviSynth2.6を試してみた

AviSynth2.6を試してみました。(x64 Windows7 環境にて)
私のよく利用するスクリプトでは約15%の高速化。といっても2.5.8でMTプラグインを利用する場合と殆ど変わらず。

1.とりあえず安定
噂どおり、若干の高速化(10~15%)がなされている&マルチスレッド(MTモード)には現時点で対応しているようです。簡単なプラグインならば、エラーもなく順調にエンコードできます。

2.GPUプラグインはまだまだ未対応
FFT3DGPUや_GPU25を利用すると、エラーが出てAviSyhthは強制終了。この辺りはまだまだこれから対応なのかも。恐らく3DNR系のプラグイン全般これからっぽい。

私の環境で2.6を利用するのはまだ速いみたい。
速攻で2.5.8に戻しました(^_^;

スポンサー リンク

逆テレシネプラグインを再評価中

メインPCのOSをx64Windows7(RC)に変更してから、地デジ録画したTSファイルをエンコするAviSynthスクリプトに若干の変化があるのでご紹介。

以前にも似たエントリを書いていますが、その時はバックエンドとの相性、MTプラグインの速度低下や、GPUプラグインの速度低下の話題がメイン

それ以外に逆テレシネプラグインの挙動がx86 XP時代と若干違う挙動をみせています。

mt("""IT(fps = 24, ref = "TOP", blend = false)""",4,4)

x86 XP時代には、MTモードを利用して上記のようにスクリプトを組んで逆テレシネを行っていました。が、x64 Win7では時々コーミング解除ミスの残像が発生。

mt("""IT(fps = 24, ref = "TOP", blend = false)""",4,0)

これでコーミング解除ミスは無くなるけど、MTモードのスレッド分割ミスが発生し、キレイな結果が得られない。

mt("""IT(fps = 24, ref = "TOP", blend = false)""",2,0)

2スレッドで作動するよう指定すると、コーミングの解除残しも、スレッド分割ミスも皆無に。
x64 Win7でMTモードを利用しても、x86 WinXPの時ほどマルチスレッドを有効活用してくれないので、処理速度に変化は無し。

mt("""Auto24FPS()""",4,4)

x86XP時代には、MTとの組み合わせでは解除残しのコーミングが大発生していたAuto24FPS()が、x64Win7環境では再び利用できるレベルに戻った。ITより10%程度高速。時々解除残しがあるけれど、気にならないレベル。Athlon64X2時代もAuto24FPSにはお世話になっていたし、OSやCPUが変わる度にテストする必要はあるかも。

ちなみに.a60224もx86時代より安定。

MTモードとx64 Windows、逆テレシネの相性

x86 XPでMTモードを利用した場合、逆テレシネの解除残しが発生するタイミングでAviSynthは頻繁に落ちていたけれど、x64 Win7では解除残しが発生してもAviSynthは落ちない(同じ動画サンプル使用)

長時間テストを何本もしたワケではないけれど、この辺りは何かしら安定したかも?

現在の私のスクリプト

実写や30i素材は以前と設定変わらず。
24FPS化の必要のあるものだけ以下に変更。

お気に入りの映画をエンコする時

MPEG2Source("H:\000.d2v")
AddRange("F:\000.vcf")
mt("""IT(fps = 24, ref = "TOP", blend = false)""",2,0)
mt("LanczosResize(960,last.height)",4)
mt("LanczosResize(last.width,544)",4,splitvertical=true) 

    GPU_Begin()
    GPU_Convolution3d(preset="movieHQ")
    GPU_End()

FFT3DGPU(sigma=2,beta=1,plane=2,bw=32,bh=32,ow=16,oh=16,bt=3,
     mode=1,sharpen=0,interlaced=false,NVPerf=false,wintype=0,precision=0)
return last

ITが律速になるのでリサイズにLanczosResizeを利用。
x64 OSでは現状GPUプラグインを3個重ねると速度低下が著しいので2個。
(NVIDIA9600GT使用)
ちなみにx86で同じスクリプト走らせるより30%遅い。

とりあえず保存しておくかってレベルの映画をエンコする時

MPEG2Source("H:\000.d2v")
AddRange("F:\000.vcf")
mt("""Auto24FPS()""",4,4)
mt("BicubicResize(960,last.height)",4)
mt("BicubicResize(last.width,544)",4,splitvertical=true) 

    GPU_Begin()
    GPU_Convolution3d(preset="movieHQ")
    GPU_End()

FFT3DGPU(sigma=2,beta=1,plane=2,bw=32,bh=32,ow=16,oh=16,bt=3,
     mode=1,sharpen=0,interlaced=false,NVPerf=false,wintype=0,precision=0)
return last

LanczosResizeが律速になるのでITの変わりにAuto24FPSを利用。

あとがき

こうやって色々試してみているけど、PC環境が変わる度に(AviSynthやプラグイン、動画ファイルは同じでも)かなり異なる結果が出ています。細かい部分の調整は、このページ含めネットの情報を丸呑みせず、自分で試すってのが重要ですね(^_^;