« 続・USBあったか手袋&スリッパ | メイン | 卒研ぐにゃぁ »

AviSynthでアカギをエンコ

普段はAviUtilでエンコしていたモノを、試しにavisynthでやってみた。

スクリプトは適当に使い回せるように、共通部分だけ切り出して
名前だけ別ファイルで設定するようにしてみた。


どこか適当なディレクトリ
└─common
  commonAnime.avs アニメ用共通設定

作業ディレクトリ
└─akagi060111
  encode.avs avisynthスクリプト
  source.d2v source.m2pからDVD2AVIで作成したプロジェクト
  source.m2p 録画したもの(音声:MPEG2)
  source.mpa source.m2pからDVD2AVIで作成したMPA音声ファイル
  source.vcf source.m2pをVirtualDubModで開き、CMカットを行い作成したファイル


-=-=-=-=-=- commonAnime.avs -=-=-=-=-=-

# AviSynth 設定ファイル アニメ自動24fps用
# ※EncodeName にエンコするモノの名前を設定してからImportすること

# ディレクトリ・パス設定
# # プラグインのあるディレクトリ
PluginDir = "S:\tools\AviSynth208\plugins\"
# # ソース置き場
SourceDir = "R:\work\AviSynth\" + EncodeName + "\"
# # d2vファイルへのパス(SourceDir\source.d2v固定)
D2VPath = SourceDir + "source.d2v"
# # mpaファイルへのパス(SourceDir\source.mpa固定)
MPAPath = SourceDir + "source.mpa"
# # VCFファイルへのパス(SourceDir\source.cvf固定)
VCFPath = SourceDir + "source.vcf"

#--- ソース読み込み ---
LoadPlugin( PluginDir + "MPEG2DEC.dll" )
LoadPlugin( PluginDir + "mpasource.dll" )
MPEG2Source( D2VPath ) #DVD2AVI + MPEG2DEC
AudioDub( last, MPASource( MPAPath ) )


# CM編集
LoadPlugin( PluginDir + "AddRange.dll" )
AddRange( VCFPath )


# インターレース解除等
LoadPlugin( PluginDir + "De.dll" )
LoadPlugin( PluginDir + "LoadPluginEx.dll" )
LoadPlugin( PluginDir + "WarpSharp.dll" )
LoadPlugin( PluginDir + "Decomb.dll" )
LoadPlugin( PluginDir + "AntiComb.dll" )

# フィールドオーダー指定
AssumeFrameBased().ComplementParity() #トップ優先 ボトムはAssumeFrameBased()

#--- ドット妨害低減 ---
DeDot(10,40,100,5) #(luma2d,lumaT,chromaT1,chromaT2)

#--- 24fps化 ---
FrameCache(9).Auto24FPS(false,24,16,"blend",false) #WarpSharp.dll(間引き,閾値,範囲,mode)
Decimate(mode=2,cycle=5) #フレーム削除(Decomb)
AntiComb() #解除残し解除

# フィルタ
LoadPlugin( PluginDir + "Convolution3D.dll" )
LoadPlugin( PluginDir + "_2DCleanYUY2.dll" )
Convolution3d(1,12,22,8,8,2.8,0) #(0/1,2D-輝度,色差,T-輝度,色差,影響,debug)
_2DCleanYUY2(0,2,2,2,0,4,4) #(interlace,Y,範囲X,範囲Y,dmode,U,V)


# クリッピング・リサイズ
LoadPlugin( PluginDir + "lanczos3.vdf" )
crop(8,2,704,478) #(左,上,720-(左+右),480-(上+下))
Lanczos3Resize(640,480)


-=-=-=-=-=- encode.avs -=-=-=-=-=-
EncodeName = "akagi060111"

Import("S:\tools\AviSynth208\common\commonAnime.avs")


つまり、ソースはsource.xxxと決めうちして、
なおかつ 出力先ベース\EncodeName\ にあるものと決めちゃうことに。
実際にエンコード作業をするときは、

1) SourceDir に EncodeNameを名前とするディレクトリを作成( r:\Work\AviSynth\akagi060111 )
2) 出力先ディレクトリ(SourceDir\EncodeName\) に、録画したファイル(source.m2p)をコピー
3) そこでDVD2AVIプロジェクトを作成。 source.m2p->source.d2v,source *.mpa
4) 音声ファイルのファイル名にかかれたディレイ情報を確認してから、source.mpaにリネーム
5) VirtualDubModでsource.m2pを開き、CMカットを行い処理情報を保存。source.vcf
6) VirtualDubModでencode.avsを開き、CMカットが反映されているか確認。
7) 映像、ストリームの圧縮を設定。名前を付けて保存。
8) エンコード開始

といったステップ。


AviUtilの時は、インターレース解除2 / Wavelet3DNR / WaveletNR Type-G のフィルタで自動24fps出力でやってたんですが、
m2pファイルから直接CMカットして出力。優先度Lowerで、
30分アニメで約5時間。パッと見でのエンコード速度は2〜3fps程度。
まぁ寝てる間にちょうど終わるくらいでしたが、
上のスクリプトだと、 インターレース解除 / Convolution3D / _2DCleanYUY2 の自動24fpsで
優先度Lowerで約2時間半、パッと見で5〜6fps近く出てました。
DivXの出力設定はどちらも同じQB95%でしたが、さっと見たところほとんど違いは見られませんでした。
まぁアニメがアニメなんで、変化の激しい場面とかで比べてないのでわかりませんが、それでも2倍近く早いってのは驚き。
難点としては、VirtualDubModの編集がAviUtilのそれよりやりにくいってのと、DVD2AVIで映像と音声を切り分けなきゃいけないってことぐらいですかね。

とりあえず、今夜のローゼンでも試してみて、フィルタの組み合わせとかいろいろいじってみようかと。

投稿者 Zawa : 2006年01月12日 09:45

トラックバック

このエントリーのトラックバックURL:
http://zawa.s18.xrea.com/x/mt-tb.cgi/116

コメント

コメントしてください




保存しますか?