Photo Gallery

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
以前の記事で、Merge順序について検証しましたが、ログを取らずに自動で選択するように関数化しました。
auto_frame_select_ex はただの副産物で AutoFrameSelect_Fast の軽量版です。

# マージ順序の自動化
function auto_merge_order(clip a, clip b, int "nmax") {
nmax=default(nmax,5)
a=flexiblemerge(a, b, nmax=nmax)
b=flexiblemerge(b, a, nmax=nmax)
return conditionalfilter(interleave(a,b), a, b, \
"averagechromav(combcheck(selecteven))", "<", "averagechromav(combcheck(selectodd))")
}

# フレーム単位で画質評価・選択
function auto_frame_select_ex(clip a, clip b) {
return conditionalfilter(interleave(a,b), a, b, \
"averagechromav(combcheck(selecteven))", "<", "averagechromav(combcheck(selectodd))")
}



スポンサーサイト
#先頭、末尾のフレームコピー簡略
function Copy(clip c, int "startend", int "count"){
startend=default(startend,0)
count=default(count,1)
return startend==0?c.FreezeFrame(0,0+count-1,abs(count)): \
startend==1?c.FreezeFrame(c.framecount-1-abs(count),c.framecount-1,c.framecount-1-abs(count)):c
}

#最終フレーム片フィールド
function EraseLOGO2(clip clip, string "logofile", string "logoname", int "start", int "end", int "pos_x", int "pos_y", int "depth", int "yc_y", int "yc_u", int "yc_v") {
clip=clip.EraseLOGO(logofile=logofile, logoname=logoname, start=start, end=end-1, pos_x=pos_x, pos_y=pos_y, depth=depth, yc_y=yc_y, yc_u=yc_u, yc_v=yc_v)
clip=clip.DwShift(true).EraseLOGO(logofile=logofile, logoname=logoname, start=end*2, end=end*2, pos_x=pos_x, pos_y=pos_y, depth=depth, yc_y=yc_y, yc_u=yc_u, yc_v=yc_v).UnDwShift(false)
return clip
}

#関数の適応回数をintで指定
function AppendFunc(string clip, string func, int limit, int "cnt") {
cnt=default(cnt,0)
cnt=cnt+1
clip=limit==cnt?clip:clip+"."+func
return limit==cnt?clip:AppendFunc(clip, func, limit, cnt)
}

#スレッドショートカット
function Thread(clip clip) {
return clip.ThreadRequest(3,3,5)
}

#関数の適応度微調整(保護)
function Dilute(clip clip, string func, int "rate") {
rate=default(rate,50)
return overlay(clip,eval("clip."+func),mode="blend",opacity=float(rate)/100)
}

#クリップを並べる(サイズ違いも可)
function addClip(clip a, clip b,int "mode") {
mode=default(mode,0)
Assert(mode==0||mode==1,"out of range. (int mode)'")
diff=mode==0? \
a.height!= b.height?a.height-b.height:0: \
a.width!= b.width?a.width-b.width:0
b=mode==0? \
diff!=0?b.AddBorders(0,0,0,diff):b: \
diff!=0?b.AddBorders(0,0,diff,0):b
return (mode==0?StackVertical(a,b).crop(0,0,0,-diff):StackHorizontal(a,b).crop(0,0,-diff,0))
}

#文字置換
function replace(string str, string a, string b) {
str=FindStr(str, a)==0 ? str : LeftStr(str, FindStr(str, a)-1)+b+MidStr(str, FindStr(str, a)+1, StrLen(str)-FindStr(str, a))
return FindStr(str, a)==0 ? str : Replace(str, a, b)
}

#文字埋め(右)
function rpad(string a, string b, int cnt){
a=strlen(a)<cnt?a+b:a
return strlen(a)<cnt?rpad(a,b,cnt):a
}

#文字埋め(左)
function lpad(string a, string b, int cnt){
a=strlen(a)<cnt?b+a:a
return strlen(a)<cnt?lpad(a,b,cnt):a
}

#iの範囲を指定
function minmax(float i, float "min", float "max") {
max=default(max,1.0)
min=default(min,0.0)
return i>max?max:i<min?min:i
}

#subtitleショートカット
function Text(clip clip, string "val") {
val=default(val,"empty")
return clip.subtitle(val, size=96)
}

#ConvertToYV12ショートカット
function YV12(clip clip, bool "bt709") {
bt709=default(bt709,false)
return bt709==true?clip.ConvertToYV12(matrix="bt709"):clip.ConvertToYV12()
}

#AssumeFPS()ショートカット
function FPS(clip clip, int "fps") {
fps=default(fps,24)
return clip.assumefps(fps*1000,1001)
}
Trim 内の任意の範囲を別の Trim として切り出します。
作業効率がちょっとでも良くしたいと思ったので作りました。


trim_split.png


ダウンロード
TrimSplit_v1.0.rar


aviutl の TrimExport などで得た Trim 文を、再選択する形式のスクリプトをクリップボードに書き出します。
予めTrim文をクリップボードに入れてから起動すれば、自動で読み込みます。

かなり前に作ったんですが、今の作業イメージに合うようにフォーマットを直しました。


実行サンプル
trimshift11.png


メインウインドウはシンプルで小型
trimshift11







完全に個人用に作ったので汎用性もへったくれもありませんが、需要があれば個人設定とかできるようにしますけど、なければこのまま放置。



ダウンロード
TrimShift_v1.1.rar
TrimShift_v1.2.rar


0.png

create_interlace.png

function create_interlace(string path, int "x", int "y") {
x=default(x,0)
y=default(y,0)
ImageSource(path, start=0, end=0)
f1=SeparateFields().SelectEven()
f2=SeparateFields().SelectOdd().ShiftLocation(x=x,y=y)
f1+f2
return Weave()
}

function ShiftLocation(clip c, int "x", int "y", int "color") {
x=default(x,0)
y=default(y,0)
color=default(color,$ffffff)
c=x!=0?x>0?c.addborders(abs(x),0,0,0,color).crop(0,0,-abs(x),0):c.addborders(0,0,abs(x),0,color).crop(abs(x),0,0,0):c
c=y!=0?y>0?c.addborders(0,abs(y),0,0,color).crop(0,0,0,-abs(y)):c.addborders(0,0,0,abs(y),color).crop(0,abs(y),0,0):c
return c
}



©「SHIROBAKO」製作委員会
表題通り。
要 yrangemask.dll

459.png

diffmask_code.png


function create_diffmask(clip v01, clip v02, clip "v03", clip "v04", clip "v05", clip "v06", clip "v07", clip "v08", clip "v09", clip "v10", clip "v11", clip "v12", bool "trans", bool "expand"){
v03=default(v03,blankclip(v01,length=-1))
v04=default(v04,blankclip(v01,length=-1))
v05=default(v05,blankclip(v01,length=-1))
v06=default(v06,blankclip(v01,length=-1))
v07=default(v07,blankclip(v01,length=-1))
v08=default(v08,blankclip(v01,length=-1))
v09=default(v09,blankclip(v01,length=-1))
v10=default(v10,blankclip(v01,length=-1))
v11=default(v11,blankclip(v01,length=-1))
v12=default(v12,blankclip(v01,length=-1))
trans=default(trans,false)
expand=default(expand,true)

maskA=diff_mask(v01,v02)
maskB=v03.framecount!=-1&&v04.framecount!=-1?diff_mask(v03,v04):BlankClip(v01,length=-1)
maskC=v05.framecount!=-1&&v06.framecount!=-1?diff_mask(v05,v06):BlankClip(v01,length=-1)
maskD=v07.framecount!=-1&&v08.framecount!=-1?diff_mask(v07,v08):BlankClip(v01,length=-1)
maskE=v09.framecount!=-1&&v10.framecount!=-1?diff_mask(v09,v10):BlankClip(v01,length=-1)
maskF=v11.framecount!=-1&&v12.framecount!=-1?diff_mask(v11,v12):BlankClip(v01,length=-1)

mask=mt_logic(maskA,maskB,mode="or")
mask=maskC.framecount!=-1?mt_logic(mask,maskC,mode="or"):mask
mask=maskD.framecount!=-1?mt_logic(mask,maskD,mode="or"):mask
mask=maskE.framecount!=-1?mt_logic(mask,maskE,mode="or"):mask
mask=maskF.framecount!=-1?mt_logic(mask,maskF,mode="or"):mask

mask=expand?mask.mt_expand(mode="both",Y=3,U=2,V=2):mask

return trans?mask:no_trans(mask)
}

function diff_mask(clip a, clip b){
mt_makediff(a,b,U=-128,V=-128)
ab=mt_merge(MaskToClip(last),BlankClip(last,color=$ffffff),last.yrangemask(0,0,122,0),luma=true)
mt_makediff(b,a,U=-128,V=-128)
ba=mt_merge(MaskToClip(last),BlankClip(last,color=$ffffff),last.yrangemask(0,0,122,0),luma=true)
return mt_logic(ab,ba,mode="or")
}

function no_trans(clip c){
return mt_merge(c,BlankClip(c,color=$000000),c.yrangemask(00,0,143,0),luma=true)
}

function MaskToClip(clip m){
mt_merge(BlankClip(m,color=$ffffff).ConvertToYV12(),m,BlankClip(m,color=$ffffff).ConvertToYV12())
return last
}





©PEACH-PIT・集英社/ローゼンメイデン製作委員会



WHAT'S NEW?

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。