エンコめも
~見習いエンコ師のメモ帳~
http://encmemo.blog.fc2.com/

 

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

more


アニメ本編での60iテロップは、bob化してVFRにしている方が多いと思います。

60fpsにすると楽に処理出来ますが、、余分にビトレを食われたり、品質が落ちてしまったり、
PCやプレーヤーによってはカクカクしてしまったり・・・。
そもそもVFRが嫌って方もいるかもしれません。(自分も好きではない)

しかし普通に24fpsに間引いた場合、テロップの移動距離は均等にならずカクカクになってしまいます。

そこで、
ivtc_txt60mcという関数で、テロップの移動距離を均等にしたまま24p化できる、と聞いたので試してみました。
というか使ってます。グッドです。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#ivtc_txt60mc

Function ivtc_txt60mc (clip src, int frame_ref, bool "srcbob", bool "draft")
{
srcbob = Default (srcbob, false)
draft = Default (draft, false)

field_ref = (srcbob) ? frame_ref : frame_ref * 2
field_ref = field_ref % 5
invpos = (5 - field_ref) % 5
pel = (draft) ? 1 : 2

src
(srcbob) ? last
\ : (draft ) ? Bob ()
\ : QTGMC (SourceMatch=3, Lossless=2, tr0=1, tr1=1, tr2=1)

clean = SelectEvery (5, 1 - invpos)
jitter = SelectEvery (5, 3 - invpos, 4 - invpos)
jsup = jitter.MSuper (pel=pel)
vect_f = jsup.MAnalyse (isb=false, delta=1, overlap=4)
vect_b = jsup.MAnalyse (isb=true, delta=1, overlap=4)
comp = jitter.MFlowInter (jsup, vect_b, vect_f, time=50, thSCD1=400)
fixed = comp.SelectEvery (2, 0)
Interleave (clean, fixed)
Trim (invpos / 2, 0)
}


#ivtc_txt60mc

function txt60mcHybrid(clip c,int frame_ref,bool "draft",int "field",int "txt_area",bool "top",bool "show"){
h=c.height()
draft=default(draft,false)
field=default(field,0)
show=default(show,false)
field=(field>1)?1:(field<0)?0:field
txt_area=default(txt_area,(h==1080)?280:h/4)
txt_area=(txt_area%2==0)?abs(txt_area):abs(txt_area-1)
top=default(top,false)
crop_c1=(top==false)?0:txt_area
crop_c2=(top==false)?h-txt_area:0
num=frame_ref%5
offset1=select(field,select(num,0,0,0,1,1),select(num,1,0,0,2,1))
offset2=select(field,select(num,3,2,2,4,3),select(num,3,3,2,4,4))
c1=c.crop(0,crop_c1,0,h-txt_area).DoubleWeave().Pulldown(offset1,offset2)
c_e=c1.Trim(c1.framecount-1,-1).SeparateFields().FreezeFrame(1,1,0).weave()
c1=(num==3)?c1.Trim(0,c1.framecount-2)++c_e:c1
c2=c.crop(0,crop_c2,0,txt_area).ivtc_txt60mc(frame_ref,draft=draft)
c2=(show==false)?c2:c2.coloryuv(gain_v=32)
return (top==false)?StackVertical(c1,c2):StackVertical(c2,c1)
}


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


これをavsの最後に追記orインポート。
動作には MVTools v2 が必要です。
QTGMCは重いので、Tdeint(mode=1)に変更してもok。


Itsで使う場合

set [24] TIVTC24P2 = 'TIVTC24P2()'
set [24] AUTO24 = 'AUTO24()'
set [24] txt60mcH0 = 'txt60mcHybrid(0,txt_area=200,show=false)'
set [24] txt60mcH1 = 'txt60mcHybrid(1,txt_area=200,show=false)'
set [24] txt60mcH2 = 'txt60mcHybrid(2,txt_area=200,show=false)'
set [24] txt60mcH3 = 'txt60mcHybrid(3,txt_area=200,show=false)'
set [24] txt60mcH4 = 'txt60mcHybrid(4,txt_area=200,show=false)'
set [30] adeint = 'AutoDeint()'
set [60] tdeint = 'tdeint(mode=1)'
set [60] BOB = 'BOB60()'
default 24 = AUTO24
default 30 = adeint
default 60 = BOB

0-[30] adeint
125-[24] AUTO24
10535-[24] txt60mcH3
11295-[24] AUTO24
26625-[24] txt60mcH1
27365-[24] AUTO24

defファイルはこんな感じ。

frame_refの値は、
PIIPP なら 0
PPIIP なら 1
PPPII なら 2
IPPPI なら 3
IIPPP なら 4

となります。


技術的な詳しい解説は、putin様がされています。
http://putin999.blog.fc2.com/blog-entry-38.html

putin様による48fps版
http://putin999.blog.fc2.com/blog-entry-58.html

有志の方によるivtc_txt30mc
http://pastebin.com/Z7k3ZXBr


スポンサーサイト
 

Comment

 

へぇ

ITSのdefってそんな風に複数個も宣言できるんだ
ITSはソースコードが同梱されているのに
細かな導入法とかどこにも書かれてなかったから

set [24] hoge2 = '関数名()'
set [30] hoge3 = '関数名()'
set [60] hoge6 = '関数名()'
default 24 = hoge2
default 30 = hoge3
default 60 = hoge6

0-[24]
300-[60]


こんな風に使ってた。

名前:通りすがりのエンコ好き | 2013.03.30(土) 00:24 | URL | [Edit]

 

参考になった

ivtc_txt60mc と txt60mcHybrid の関数 ConvertToYV12 だと
関数書き換えないとエラーとなったから書き換えた
あと故意でやってるのか分からなかったけど『""』なかったから足した
それと関数自分なりに改良して 通常24fps / 60fpstelo24fps化 / 通常24fpsと3分割
してteloギリギリまで文字の上下通常の24fpsになるようにした
満足です 情報ありがとうございました

名前: | 2013.04.24(水) 07:52 | URL | [Edit]

 

Re: 参考になった

ConvertToYV12・・・?
関数はネットからコピペしたものなので、関数の記述については分かり兼ねます・・・。

bob化する範囲を減らせれば画質&速度アップするかもなので、3分割するのは良いですね。

名前:名無し。 | 2013.04.27(土) 16:35 | URL | [Edit]

 

txt60mcHybrid 弄ったもの

3分割と言っても最初にtxt60mcHybridの処理をしてから
それをtelo文字下で2分割して3分割してるから処理が増えてる分多少遅くなるかもです
二人三脚みたいな感じで分割方法のみを改編しています

不具合が無いか試してくれるとうれしい
http://www1.axfc.net/uploader/so/2883452
キーワード:
txt60mcHybrid_kai

名前: | 2013.04.28(日) 21:29 | URL | [Edit]

 

txt60mcHybrid 弄ったもの

上記の一旦内容変更したので

これです
http://www1.axfc.net/uploader/Sc/so/459302
キーワード:
txt60mcHybrid_kai

名前: | 2013.05.27(月) 23:26 | URL | [Edit]

 

追記

上記の関数は60fpsを24fpsにするインターレース解除にQTGMCでするようになっています
以下のプラグイン等が必要です(無いとエラーになります)

●QTGMC-3.32.avsi
http://www.mediafire.com/?su7l5jtcobabksk

●mt_masktools-25.dll(avisynth2.5用) か mt_masktools-26.dll(avisynth2.6用)
http://manao4.free.fr/masktools-v2.0a48.zip

●nnedi3.dll
http://bengal.missouri.edu/~kes25c/nnedi3.zip

●RemoveGrain.dll と Repair.dll
http://chaosking.de/wp-content/uploads/avsfilters/Denoisers/Spatial_Denoisers/RemoveGrain___(1.0b_-_2005-07-07).7z


またはtxt60mcHybrid_kai.avsの34行目の
\ : QTGMC (SourceMatch=3, Lossless=2, tr0=1, tr1=1, tr2=1)#TD60Custom()#独自の60fps関数などでも良い ← ← ← 注目!!

  \ : TDeint(mode=1)#別途TDeint.dllが必要 http://bengal.missouri.edu/~kes25c/TDeintv11.zip
にするなど(半端なく画像がゆらゆらする)

良く知られているTDeint(mode=1, order=1, edeint=nnedi3(field=-2), emask=TMM(mode=1, order=1))も
1コマずつ見ていくと分かると思うけど画像が恐ろしく乱れてる
動画で60fpsのままで見ると速い速度で再生されている為
ちょっとゆらゆらしてるかな~という感じで気にならないが
60fpsを24fps化するとゆらゆら成分が強調されてしまい
通常24fpsとの境の違いが大きく目立つのと
telo文字自体も変な形になってしまうためQTGMCを使うことを推奨する
このtxt60mcHybrid関数はtelo部分付近のみを60fpsを24fpsでインターレース解除される為
QTGMCを全体にかける訳ではないので差ほど動作が重くなり過ぎる事はない
もちろんQTGMCを全体にかけたら激重ですがこの関数ではちょっと重いかな~程度で済む

名前: | 2013.06.16(日) 22:52 | URL | [Edit]


非公開コメント

zantei。

Author:zantei。
エンコ歴2年くらい。
エンコ勉強中。

使用ソフト
Avisynth v2.6 SEt 32bit
x264 64bit
aviutl v99j2

PCスペック
win7 64bit
Core i7 2600 3.4GHz
GeForce GTX550 Ti 1GB
メモリ 4GB

このブログの記事はエンコ初心者による
ただのメモ書きです。
全く参考にならないのでご注意ください。
※特に2012年の記事

@twitter

未分類 (3)
雑記 (6)
aviutl (0)
avisynth (12)
エンコメモ (1)
エンコめも (8)
プログラミング (0)

このブログをリンクに追加する

この人とブロともになる

 
*Template By-MoMo.ka* Copyright © 2017 エンコめも, all rights reserved.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。