Avisynth で使う avs ファイルを久々に弄ってみたり。

本記事は最終更新日より 1 年以上経過しております。
スポンサーリンク

 もう長いこと同じフィルタ、同じパラメータで H.264 ないし HEVC エンコードをしているけどもう少し何か良くなることは無いかなーとよく見かけるフィルタを入れ込んでパラメータを調整しつつ自分好みに仕立て上げてみた。
 メモ代わりにまたスクリプトにコメントを入れつつペタっと貼っておこう。


 今回弄ったポイントとしては GScript を用いる事で、編集時にあちこち行を移動せずとも冒頭の変数を変えるだけでフィルタの ON/OFF が出来る様にした事と、今まで入れてなかった UnSharpMask も使う用にしてみた。
 もし使うのであればファイルのパスが記述されているところを自分の環境に合わせれば OK と思う。

SetMTMode(2,0)
#********** Initialization *******************************************
PluginPath = "C:\AviSynth\plugins\"
LoadPlugin(PluginPath + "GScript.dll")
LoadPlugin(PluginPath + "LoadPluginEx.dll")
LoadPlugin(PluginPath + "_GPU25.dll")
LoadPlugin(PluginPath + "warpsharp.dll")
LoadPlugin(PluginPath + "DGDecode.dll")
LoadPlugin(PluginPath + "TDeint.dll")
LoadPlugin(PluginPath + "TIVTC.dll")
LoadPlugin(PluginPath + "EEDI2.dll")
LoadPlugin(PluginPath + "ThreadRequest.dll")
LoadPlugin(PluginPath + "MSharpen.dll")

# DGIndex の d2v ファイルと AAC を fawcl.exe で疑似 Wave に変換した物を読み込む。
DGDecode_MPEG2Source("path/to/hogehoge.d2v")
AudioDub(last, WavSource("path/to/hogehoge_fake.wav"))


# *****************************************************
# *** 編集が終わったら 0 に戻す事 (De-interlace / 24fps ON/OFF) ***
editmode = 0

# *** 放送局によって Crop と EraseLogo のパラメータを変える **
# mx = TOKYO MX, tbx = TBS, tx = TV TOKYO, cx = FujiTV
ch = "mx"

SetMTMode(1)
#********** Edit *****************************************************
# ここで Trim とかして CM カット
# Trim(367, 8667) ++ Trim(10467, 27129) ++ Trim(28928, 46370) ++ Trim(48169, 48917)

# 変数 ch の内容によって条件分岐。ロゴ消しをする局を切り替えやすくしているだけ。
GScript("""
if ( ch == "mx" ) {
# -- TOKYO MX1 --
EraseLOGO(logofile="D:\TS\Logo\20140913_TokyoMX1 1440x1080.lgd",pos_x=0, pos_y=0, depth=128,yc_y=0, yc_u=0, yc_v=0,start=0, fadein=0, fadeout=1, end=43066,interlaced=true)
#EraseLOGO(logofile="D:\TS\Logo\20140913_TokyoMX1 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=43065,interlaced=true)
}
else if (ch == "tbs" ) {
# -- TBS --
EraseLOGO(logofile="D:\TS\Logo\20110416 TBS 1440x1080.lgd",pos_x=0, pos_y=0, depth=128,yc_y=0, yc_u=0, yc_v=0,start=6, fadein=10, fadeout=10, end=4998,interlaced=true)
EraseLOGO(logofile="D:\TS\Logo\20110416 TBS 1440x1080.lgd",pos_x=0, pos_y=0, depth=128,yc_y=0, yc_u=0, yc_v=0,start=5009, fadein=10, fadeout=10, end=24297,interlaced=true)
EraseLOGO(logofile="D:\TS\Logo\20110416 TBS 1440x1080.lgd",pos_x=0, pos_y=0, depth=128,yc_y=0, yc_u=0, yc_v=0,start=24309, fadein=10, fadeout=10, end=42851,interlaced=true)
EraseLOGO(logofile="D:\TS\Logo\20110416 TBS 1440x1080.lgd",pos_x=0, pos_y=0, depth=128,yc_y=0, yc_u=0, yc_v=0,start=42861, fadein=10, fadeout=10, end=44046,interlaced=true)
}
else if ( ch == "cx" ) {
# -- FujiTV --
EraseLOGO(logofile="D:\TS\Logo\20141230_FujiTV 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=-1,interlaced=true)
}
""")

SetMTMode(2)
# De-interlace
GScript("""
if ( editmode == 0 ) {
    TIVTC24P2()
}
""")

SetMTMode(1)
# Crop
# 局毎に変わる不要な箇所を除外する。
GScript("""
if ( ch == "mx" ) {
# -- TOKYO MX1 --
Crop(6, 0, -2, 0)
}
else if ( ch == "tbs" ) {
# -- TBS --
Crop(6, 0, -2, -4)
}
else if ( ch == "cx" ) {
# -- FujiTV --
# does not need.
}
else if ( ch == "tx" ) {
# -- TV Tokyo --
Crop(4, 0, -4, 0)
}
""")

#----- GPU Filter
GPU_BeginYV12()
GPU_Convolution3D(preset="animeHQ")
#GPU_LanczosResize(1920, 1080)  # 1080p
GPU_LanczosResize(1280, 720) # 720p
#GPU_LanczosResize(768, 432) # 360p
GPU_TemporalSmoother(2, 2)
GPU_EndYV12()


#********** Effect ***************************************************
SetMTMode(2)
# 好みでパラメータを変えたり、フィルタを使ったり使わなかったりすると Good
UnsharpMask(24, 3, 10) 
#msharpen(threshold=10, strength=16, mask=false) 
WarpSharp(96,2,80,-0.6)

#********** END ******************************************************
return last

#********** Functions ************************************************
function TIVTC24P2(clip clip){
Interp = clip.AssumeTFF().SeparateFields().SelectEven().EEDI2(field=1)
Deinted=clip.TDeint(order=1,field=1,edeint=Interp)
clip = clip.TFM(mode=6,order=1,PP=7,slow=2,mChroma=true,clip2=Deinted)
clip = clip.TDecimate(mode=1)
return clip
}
スポンサーリンク