AviSynthを用いたエンコードに使用するavsファイルのお勧めフィルタの説明です。
サンプルavsファイルはこちらを参照してください。
エンコード方法はこちらの記事を参照してください。
なお、各機能を有効にする場合は、AVSファイルの各機能の先頭にあるコメントアウト(#)を削除します。
逆に不必要な機能を無効にする場合は、行等に#をつけることで、削除せずに無効にすることができます。
AVSの編集においてはファイルのフルパスを指定することがよくあります。
その際にこちらのPathCopyExをインストールしておくと、
右クリックメニューからファイルのフルパスをクリップボードにコピーできるため便利です。
1.外部プラグイン読み込み
2.ファイルの読み込み
3.Trim
4.透過ロゴ除去
5.手動VFR化
6.ドット妨害/クロスカラー除去
7.インターレース解除/逆テレシネ変換
8.ノイズ除去
9.リサイズ/クロップ
10.ワープシャープ
11.アンシャープマスク
12.エッジ補正(AVIUTLプラグイン使用方法)
##### 外部プラグインの読み込みを指定します。
# このサンプルavsで使用している関数に必要なプラグイン一覧です。
# Avisynthのプラグインフォルダ(C:\Program Files\AviSynth 2.5\plugins)
# に各dllを直接保存している場合は指定する必要はありません。
#LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\oplugins\LoadPluginEx.dll")
#LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\oplugins\warpsharp.dll")
#LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\oplugins\delogo.dll")
#LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\oplugins\Convolution3DYV12.dll")
#LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\oplugins\De.dll")
#LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\oplugins\DeCross.dll")
#LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\oplugins\MSharpen.dll")
#LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\oplugins\vinverse.dll")
#LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\oplugins\Its.dll")
#LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\oplugins\FFT3DFilter.dll")
#LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\oplugins\EEDI2.dll")
#LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\oplugins\TDeint.dll")
#LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\oplugins\TIVTC.dll")
外部プラグインの読み込みを明示的に実行します。
単純なDLLファイルのみであれば、Avisynthのプラグインフォルダ(C:\Program Files\AviSynth 2.5\plugins)に
保存してあるプラグインは自動的に読み込まれるため、この操作は必要ありません。
この記事で紹介する各機能において外部プラグインが必要となるため、
機能に応じたDLLを保存するようにしてください。
自動的にプラグインを読み込めるにも関わらず、この関数を使用する目的はいくつかあります。
・AVSファイル内で何のプラグインを使っているか明示的にする(自己管理)
・LoadPluginEx.dll等、先に読み込んでおかなければ正常に使用できない関数がある(読み込み順序の管理)
・プラグインの種類と環境によっては、オートローディングしただけで不具合を引き起こす可能性がある(バグの回避)
##### m2v.vfpを読み込み。BonTsDemuxで分離させたm2vファイルを読み込む場合必須です。
LoadAviUtlInputPlugin("C:\Program Files\AviSynth 2.5\plugins\oplugins\m2v_vfp\m2v.vfp", "MPEG2VIDEO")
##### エンコードするファイルの読み込み。パスをエンコードするファイルに書き換えてください。
video = MPEG2VIDEO("C:\TS\sample.m2v")
audio = WavSource("C:\TS\sample.wav")
AudioDub(video, audio)
AssumeTFF()
LoadAviUtlInputPlugin(パス)はm2vファイルを読み込むために必須です。
パスにはm2v.vfpのパスを指定します。
m2v.vfpはm2vconf.exeを一度は実行していなければ使用できません。
LoadAviUtlInputPluginを使用するためにwarpsharp.dllが必要です。
http://seraphy.fam.cx/~seraphy/program/WarpSharp/index.html
m2v.vfp等はこちらのサイトからダウンロードできます。
http://www.marumo.ne.jp/mpeg2/
m2v_vfp-0.6.54.lzhをダウンロードしてください。
MPEG2VIDEOでm2vファイルの読み込み、WavSourceで音声ファイルの読み込み
audioDubで映像と音声を結合し、AssumeTFFはフィールドオーダーがトップであることを指定しています。
読み込む場合はAVSファイルと読み込むファイルを同じドライブに保存してください。
MPEG2VIDEOではDVDから作成したd2vファイルも読み込むことができます。
余談ですがDVDのリッピングには「SlySoft AnyDVD」と「DGIndex」を使用しています。
TSを分離したファイル以外から読み込む場合は適宜読み込み方法を変更します。
AVISourceやDirectShowSource等が存在します。
3.Trim
##### CMカット。本編等残す部分のみフレーム単位で指定します。
# 書式:trim(開始フレーム,終了フレーム)
# 例:trim(2763,18645)+trim(22243,49425)+trim(52123,53111)
#trim(,)+trim(,)+trim(,)+trim(,)
CM等不必要な部分をカット編集します。
Trimに限らずAVSの編集にはVirtualDubMod(以下VDM)を使用すると便利です。
AVSをVDMで編集するためには、AVSファイルをVDMのウィンドウ上にドラッグし、
AVSファイルを開いた状態でCtrl+Eのショートカットキーでスクリプトエディターを開きます。
そのスクリプトエディターが編集できるようになっているため、テキストエディタのように編集することができます。
VDMのメインウィンドウでCM明け等本編がはじまった地点にフレームを合わせ、
その状態でスクリプトエディターにフォーカスを合わせてCtrl+Pのショートカットキーを押すと、
メインウィンドウで合わせているフレームが挿入されます。
このショートカットを用いてCMカットをしていくと便利です。
複数の部分を組み合わせる場合は+でTrimを繋ぎます。
OP開始~本編開始~後半本編開始~ED開始~次回予告と拾っていくと、
番組によりますが、だいたい3~4つのTrimになります。
編集が完了したら行の先頭のコメントアウト(#)を削除し、
スクリプトエディターの内容を保存します。(F2もしくはCtrl+S)
その状態で再度AVSをウィンドウ上にドラッグすればTrimが有効になった状態で読み込まれるため、
本編のみになっているかを確認します。
##### 透過ロゴ除去。透過ロゴが表示されている部分のみフレーム単位で指定します
# delogo.dllが必要です。AVIUTLでロゴデータ解析を実施し、ロゴ解析ファイルが必要です
# 書式:EraseLOGO(logofile="ロゴファイルパス", pos_x=0, pos_y=0, depth=透明度, yc_y=0, yc_u=0, yc_v=0, start=開始フレーム, fadein=フェードインフレーム数, fadeout=フェードアウトフレーム数, end=終了フレーム, interlaced=true)
#EraseLOGO(logofile="J:\anime\logofile\cbcLOGO 1440x1080.lgd", pos_x=0, pos_y=0, depth=128, yc_y=0, yc_u=0, yc_v=0, start=0, fadein=0, fadeout=0, end=5154, interlaced=true)
#EraseLOGO(logofile="J:\anime\logofile\cbcLOGO 1440x1080.lgd", pos_x=0, pos_y=0, depth=128, yc_y=0, yc_u=0, yc_v=0, start=5364, fadein=0, fadeout=0, end=15853, interlaced=true)
#EraseLOGO(logofile="J:\anime\logofile\cbcLOGO 1440x1080.lgd", pos_x=0, pos_y=0, depth=128, yc_y=0, yc_u=0, yc_v=0, start=15883, fadein=0, fadeout=0, end=43035, interlaced=true)
#EraseLOGO(logofile="J:\anime\logofile\cbcLOGO 1440x1080.lgd", pos_x=0, pos_y=0, depth=128, yc_y=0, yc_u=0, yc_v=0, start=43066, fadein=0, fadeout=0, end=-1, interlaced=true)
以下のような透過ロゴを除去(見えづらく)することができます。

delogo.dllが必要です。
http://mksoft.hp.infoseek.co.jp/avisynth.html#delogo
また、ロゴデータを解析したロゴファイルを作成しておく必要があります。
ロゴデータの解析方法は別途記事を作成予定です。検索すれば見つかると思いますが。
ロゴ解析でフレームを指定する場合は、既にTrimが完了して有効になっており、
フレーム数を変化させる逆テレシネ変換等は有効になっていないことを確認します。
逆テレシネの後にロゴ解析をやってもいいのですが、その場合はAVSの順番に留意して操作してください。
ロゴは番組中に表示されたり消えたりしており、ロゴが表示されていない状態で
ロゴ除去を実施すると逆にロゴを焼き付けてしまうため、表示状況に合わせて
ロゴ除去のフレーム数を指定する必要があります。
ちなみに多くの番組ではCM前や提供画面に移る数秒前にロゴが非表示になります。
logofileには解析したロゴファイルのパスを設定します。
startにロゴが表示されはじめたフレームを入力します。
endにはロゴが完全に非表示になったフレームを入力します。
startよりもendのほうが値が小さい場合(例:-1)は最後のフレームまでが対象になります。
fadein/fadeoutはロゴが徐々にフェードイン/フェードアウトしている場合に、そのフレーム数を入力すると、
自動的に透明度を調整して焼きつきが発生しないようにロゴ除去を行います。
この機能を使用した場合は細かな調整はできないため、数フレームフェードしている場合は
フレームの中央あたりで焼きつきか取りこぼしが発生しやすくなります。
これを避けるためにはdepthの値を調整して1フレームずつ指定していく必要がありますが、
これでも限界がある上に面倒なのであまりお勧めできません。
また逆テレシネ変換等でフレーム数が変動する場合は指定したフレームが崩壊することがあるため、
やはりfadein/fadeoutで指定するしかありません。
##### VFR化。アニメ等でフレームレートが変動する場合に使用します。
# its.dllが必要です。別途Defファイルを用意する必要があります。
# mode fps_adjust = onは指定範囲が5で割り切れる倍数で無いときにONにします。
#its(def="J:\anime\encode\def.def", fps=-1, output="enc1.tmc")
にゃんこさんの所に書いてあるので後回しします。
なおリンク先のサンプルをそのまま使おうとした場合、
色空間やバージョンの関係でコーミング除去として紹介されているAntiCombは使いづらくなります。
vinverse等を使用する等で対処します。
なおDEFファイル内では当サイトで推奨している処理のTIVTC24P2()は使えません。
ITSを使用した後にフレーム数が変わる処理を行うとアウトプットがおかしくなるため、
逆テレシネやTrimは実施しないようにします。
##### ドット妨害/クロスカラー低減。ドット妨害を除去する場合に使用します。
# De.dllが必要です。
# 書式:DeDot(輝度2D,輝度時間軸,色差時間軸1,色差時間軸2)
#DeDot(20,20,15,5)
##### クロスカラー低減。DeDotでクロスカラーが除去しきれない時に使用します。
# DeCross.dllが必要です。
# 書式:DeCross(エッジ検出閾値, ノイズ閾値, マージン, デバッグ)
#DeCross(30, 60, 1, false)
ドット妨害やクロスカラーを除去、低減します。
dedotはこちらのサイト
http://nullinfo.s21.xrea.com/#DeDot_YV12
DeCrossはこちらのサイト
http://nullinfo.s21.xrea.com/#DeCross
インターレース解除とは、簡単に言うと以下の絵のキャラクターにかかっているような縞を取り除く作業です。
動きが大きいフレームの前後で発生しやすいものです。

逆テレシネ変換とは、本来30fpsのTSファイルを24fpsに間引きする作業をいいます。
これはアニメや映画等が作成時点では24fpsであるが、放送のために30fpsに増やしていることに対して処置するためです。
両方とも調べれば奥が深いことなので詳細については記載しません。
サンプルで紹介している処理は4つで、それぞれの特徴は以下のとおりです。
(1)TIVTC24P2
インターレース解除と逆テレシネ変換の両方を同時に実施します。
個人的に最も多用している処理です。
重いですがコーミングの取りこぼしがまずありません。
必要プラグインが多いです。
3種類ともこちらのサイトからダウンロードできます
(2)auto24fps+vinverse
インターレース解除と逆テレシネ変換の両方を同時に実施します。
この処理でも通常問題ありませんが、稀に取りこぼしが発生します。
vinverse
(3)AutoDeint("blend")
インターレース解除のみ実施します。
(4)bob
30fpsのものを60fpsに変換します。スクロールするテロップ等は60fpsでなければ
滑らかでなくなることがあります。
##### ノイズ除去。映像からノイズを除去します。
# 方法がいくつかあるため、以下から一つ選択して使用します。
### 1.FFT3DFilter
# FFT3DFilter.dllが必要です。
# 書式: http://avisynth.org.ru/fft3dfilter/fft3dfilter.html 参照
#時間がかかるけれどしっかりノイズ除去する設定
#fft3dfilter(sigma=1.5, plane=4 , bt=5, bw=32, bh=32, ow=16, oh=16, sharpen=0.4)
#上記設定を少し軽くした設定
#fft3dfilter(sigma=1.5, plane=4 , bt=3, bw=16, bh=16, ow=8, oh=8, sharpen=0.4)
### 2.Convolution3D
# Convolution3DYV12.dllが必要です。
#Convolution3D(preset="animeHQ")
映像からノイズを除去します。
ノイズ除去には映像の綺麗にするほかに、ファイルサイズ低減の効果があります。
fft3dfilter
http://avisynth.org.ru/fft3dfilter/fft3dfilter.html
画面の最も下にあるリンクからダウンロードします。
Convolution3DYV12
http://hellninjacommando.com/con3d/beta/index.html
Convolution3Dの設定例はこちらを参照してください。
http://niiyan.s8.xrea.com/avisynth/avisynth_guide4_6.html
ここで紹介しているノイズ除去二つにはそれぞれGPU版が存在します。
処理をグラフィックボードに実施させるというもので、グラフィックボードが高性能だと
設定にもよりますが高速に処理を実施させることができます。
使用には環境依存な面などやや癖がありますが、エンコード速度が気になる場合は導入を検討してもいいでしょう。
GPUフィルタ一覧
fft3dgpu
##### 映像の拡大/縮小。基本的に縮小の際に使用します。
# エンコードの際は、映像の縦幅、横幅ともに16の倍数になっている必要があります。
# 書式:Lanczos4Resize(幅,高さ,左Cropピクセルサイズ,上,右(ピクセルサイズをマイナスで指定),下(ピクセルサイズをマイナスで指定))
# サイズ以降は省略可能
# 例:リサイズのみ Lanczos4Resize(1280,720)
# 例:クロップあり(上下17、左右10ピクセルずつ) Lanczos4Resize(1280,720,17,10,-17,-10)
Lanczos4Resize(1280,720)
地上デジタル放送の解像度は1440x1080ですが、
保存が目的の場合はファイルサイズの低減等を目的として解像度を落とすこともあります。
サンプルでは1280x720となっていますが、映像があまり奇麗でない放送であればもっと小さくすることもあります。
アスペクト比が変わらないように注意する必要があります。
また、解像度は縦、横共に16の倍数である必要があります。
クロップとは、映像は画面いっぱい使っているわけではなく、
無効領域と呼ばれる外枠部分が存在していることが多いです。
その無効領域(外枠)を取り除くのがクロップです。
クロップのピクセル数を数えるためには、VDMやAVIUTLで読み込んだ映像(リサイズなし)を
クリップボードに取り込み、ペイント等に貼り付けて数えると確実です。
AVIUTLの場合は右クリックから、VDMの場合はCtrl+1のショートカットキーでフレームをクリップボードにコピーすることができます。
また、額縁放送と呼ばれる外枠が完全に存在している放送や、
洋画等アスペクト比が異なる際につけられる黒いレターボックス等を取り除く場合にも使用します。
##### ワープシャープで輪郭をすっきりさせる
#WarpSharp(95,3,85,0)
ワープシャープをかけることで輪郭をすっきりさせることができます。
副作用として、強くかけすぎると輪郭に白い線が映るようになります。
##### アンシャープマスクでボケた映像を鮮明にする
#UnsharpMask(32,8,38)
アンシャープマスクをかけることでボケた映像を鮮明にすることができます。
副作用として、強くかけすぎると映像が平坦になり色数が減ります。グラデーション等がつぶれてしまうことがあります。
##### エッジ補正で輪郭を強調させる
# AVIUTLプラグインなので前準備が必要
##### AVIUTLのプラグインを使用する場合に読み込みます。
#Import("J:\anime\encode\aufilters.avs")
#ConvertYUY2ToAviUtlYC()
#AU_edgelevelMT(9,20,5,2)
#ConvertAviUtlYCToYUY2()
#ConvertToYV12()
エッジ補正により輪郭を強調することができます。
このエッジ補正プラグインはAVIUTL用のものですが、
それをAvisynthでも使用することができます。
まずはエッジ補正プラグインを入手します。
がらくたハウスのがらくた置き場
エッジレベル調整(Ver0.7)をダウンロードして、解凍してできたedgelevelMT.aufを
AVIUTLのフォルダに保存します。
AVIUTLのプラグインとしてはこれで使用することができますが、Avisynthの場合は更に手を加える必要があります。
手順としてはこちらのページを参照してください。
例としてこちらのようなファイルが作成されるため、
このファイルを作業用フォルダに保存してください。
aufilters.avsを保存したら、aufilters.avsのパスをメインのavsファイルの以下の部分に記述します。
#Import("J:\anime\encode\aufilters.avs")
その後、aufilters.avsを開き、1行目にあるプラグインのフルパスを変更します。
global AviUtl_plugin_directory = "C:\Program Files\aviutl98d\"
こうすることによってAVIUTLのプラグインが使用できるようになります。
なおエッジ補正プラグインの実行行は
#ConvertYUY2ToAviUtlYC()
#AU_edgelevelMT(9,20,5,2)
#ConvertAviUtlYCToYUY2()
#ConvertToYV12()
すべてとなります。
ConvertYUY2ToAviUtlYC()等によりAVIUTLのプラグインが映像を編集できるように変更していますので、
AVIUTLのプラグインを使用する場合はほぼ必須となります。
AU_edgelevelMT(9,20,5,2)の部分がプラグインにより変わってきます。