2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

お前らのショボイAvisynthスクリプト貼ってください part4

1 :名無しさん@編集中:2009/03/31(火) 22:14:23 ID:6Om0hbMi.net
AviSynth Wiki
http://www.avisynth.info/

AviSynth Blog rev.2
http://d.hatena.ne.jp/avisynth/

本スレ
Avisynthを絶讃ιょぅょ Part26
http://pc11.2ch.net/test/read.cgi/avi/1228216385/

過去スレ
Part 3 http://pc11.2ch.net/test/read.cgi/avi/1234959794/
Part 2 http://pc11.2ch.net/test/read.cgi/avi/1153487392/
Part 1 http://pc8.2ch.net/test/read.cgi/avi/1030537641/


2 :名無しさん@編集中:2009/03/31(火) 22:15:39 ID:6Om0hbMi.net
主なスクリプト(ユーザー定義関数)とか・・・
http://www.avisynth.info/?%A5%E6%A1%BC%A5%B6%A1%BC%C4%EA%B5%C1%B4%D8%BF%F4


3 :名無しさん@編集中:2009/03/31(火) 22:56:40 ID:YMSKVZJh.net
ε ⌒ヘ⌒ヽフ
(   (  ・ω・) スレ建てd
 しー し─J

4 :名無しさん@編集中:2009/04/01(水) 13:54:25 ID:1xu7jQ6f.net
1乙

5 :名無しさん@編集中:2009/04/01(水) 14:28:28 ID:PCcjuj6Q.net
ほす

6 :名無しさん@編集中:2009/04/01(水) 21:22:27 ID:UtWJpSHA.net


7 :名無しさん@編集中:2009/04/02(木) 01:10:57 ID:asJuX3IZ.net


8 :名無しさん@編集中:2009/04/02(木) 02:52:42 ID:3t3Quro6.net
function MVDFTDenoise( clip clip, float "sigma", bool "Y", bool "U", bool "V" )
{
sigma = default( sigma, 2.0 )
Y = default( Y, true )
U = default( U, true )
V = default( V, true )

super = clip.MSuper

vf1 = super.MAnalyse( isb=false, overlap=4 )
vf2 = super.MAnalyse( isb=false, delta=2, overlap=4 )
vb1 = super.MAnalyse( isb=true, overlap=4 )
vb2 = super.MAnalyse( isb=true, delta=2, overlap=4 )

interleave( MCompensate( clip, super, vf2, thSCD1=800 )\
, MCompensate( clip, super, vf1, thSCD1=800 )\
, clip\
, MCompensate( clip, super, vb1,thSCD1=800 )\
, MCompensate( clip, super, vb2,thSCD1=800) )

dfttest( sigma=sigma, Y=Y, U=U, V=V )

SelectEvery( 5, 2 )
}

動作に必要なプラグイン:

MVTools v2(サイトが落ちているので転載): http://www.mediafire.com/file/ainymjbyiod/mvtools-v2.3.1.zip
dfttest: http://bengal.missouri.edu/~kes25c/

参考にした物: http://forum.doom9.org/showpost.php?p=1099351&postcount=23
激しい動きの有る映像のデノイズにどうぞ。

9 :名無しさん@編集中:2009/04/02(木) 03:03:14 ID:asJuX3IZ.net
どんな感じのデノイザーですかの

10 :名無しさん@編集中:2009/04/02(木) 03:08:22 ID:3t3Quro6.net
>>9
dfttest+動き補償

11 :名無しさん@編集中:2009/04/02(木) 22:05:06 ID:p2RHzGye.net
>>10
トン

12 :名無しさん@編集中:2009/04/04(土) 08:32:36 ID:xmATFM9b.net
ほしゅ

13 :名無しさん@編集中:2009/04/05(日) 00:16:37 ID:+4y0EKMS.net
ほしゅ

14 :名無しさん@編集中:2009/04/05(日) 00:25:00 ID:tUIO0/um.net
20まで行けば即死判定から抜けるかな?
援護保守

15 :名無しさん@編集中:2009/04/05(日) 00:27:28 ID:/wbJgWRd.net
そうなのか!
ほしゅ

16 :名無しさん@編集中:2009/04/05(日) 06:09:53 ID:CoLoUC1n.net
function InterlacedYV12ToYUY2_Yadif(clip source)
{
# You might need to change here.
Load_Stdcall_Plugin("C:\Program Files\AviSynth 2.5\plugins\yadif.dll")

YD = source.Yadif(mode=1).ConvertToYUY2.SeparateFields.SelectEvery(4,0,3).Weave

source.ConvertToYUY2.MergeChroma(YD)
}

動作に必要なプラグイン: http://avisynth.org.ru/yadif/yadif.html

AutoYUY2の代わりに使うスクリプト。これの改造版: http://forum.doom9.org/showthread.php?p=618364
TDeintを使ったオリジナルよりは高速だが、ソースに依ってはアップサンプリングの品質が劣る事もある。

もちろん、MPEG2SourceでupConv=1や、ConvertToYUY2(interlaced=true)とするよりは、こちらの方が良い。

17 :名無しさん@編集中:2009/04/05(日) 06:15:32 ID:CoLoUC1n.net
function InterlacedYUY2ToYV12_Yadif(clip source)
{
# You might need to change here.
Load_Stdcall_Plugin("C:\Program Files\AviSynth 2.5\plugins\yadif.dll")


YD = source.Yadif(mode=1).ConvertToYV12.SeparateFields.SelectEvery(4,0,3).Weave

source.ConvertToYV12.MergeChroma(YD)
}

ConvertToYV12(interlaced=true)の代わりに使う。

18 :名無しさん@編集中:2009/04/05(日) 16:55:46 ID:/wbJgWRd.net
ふむふむ、保守

19 :名無しさん@編集中:2009/04/06(月) 01:58:30 ID:czlXvP/I.net
保守

20 :名無しさん@編集中:2009/04/06(月) 15:04:58 ID:0r3JZLVE.net


21 :名無しさん@編集中:2009/04/06(月) 18:07:48 ID:aA+tGWFY.net
お疲れさまー
これで即死回避ですな

22 :名無しさん@編集中:2009/04/06(月) 18:21:23 ID:8ofVnDq2.net
>>16
> もちろん、MPEG2SourceでupConv=1や、ConvertToYUY2(interlaced=true)とするよりは、
> こちらの方が良い。

これよくわからんので何故か教えて。
BobしてからYV12<->YUY2変換してもSeparateFields.SelectEvery(4,0,3).Weaveした時点で
期待した効果は切り捨てられるフレームと共になくなるんじゃないの?
たとえ動き適応Bobberでスタティックなエリアは前後フィールドからインターポレーションしてても
同様の理由で切り捨てられるような…。

23 :名無しさん@編集中:2009/04/06(月) 19:00:57 ID:c3NyEdte.net
>>22
http://neuron2.net/autoyuy2/interlaced.bmp
http://neuron2.net/autoyuy2/progressive.bmp
http://neuron2.net/autoyuy2/autoyuy2.bmp

この3つを見比べてもらうのが分かりやすい。YV12<->YUY2をインターレースのままでやると、
縞か縞ではない部分のどちらかが劣化するから、Bobでプログレッシブにしてからやりましょうと言うこと。


英語が分かるなら、この辺りを読むのがお薦め。
Does YV12 to YV12 deinterlacing lose chroma detail?
http://forum.doom9.org/showthread.php?t=128515
Adaptive chroma upsampling
http://forum.doom9.org/showthread.php?t=97987

24 :名無しさん@編集中:2009/04/07(火) 09:07:09 ID:YykDKjpR.net
Deinterlacerにproposed methodとかいうのがあるらしいんだが

>http://i.cs.hku.hk/~chin/paper/wseas2006_594_175_journal_final.pdf

Avisynthで使えるフィルタがあったら教えてほしい。


25 :名無しさん@編集中:2009/04/07(火) 09:30:30 ID:CvNQjivJ.net
それは、要するにデインターレースにおける動き補償の重要性を言いたい様だから、
AviSynthだと、MCBobやTDeint+TMMでも使えば良いと思う。

26 :名無しさん@編集中:2009/04/07(火) 11:27:34 ID:RB+ImOo/.net
昔どっかで拾ったデインタレ24fps化。最近のは分からない。むしろ教えてくだしゃい(´・ω・`)

BruteIVTC()
TDeint(mode=0,order=1,field=1,type=1,mtnmode=3,full=false,chroma=false,tryweave=true,link=1,slow=2)
vinverse(sstr=2.7,amnt=255,uv=3,scl=0.25,opt=2)
TDecimate(mode=1,hybrid=0,dupThresh=0.7,blockx=8,blocky=8,chroma=true)


27 :名無しさん@編集中:2009/04/07(火) 14:18:16 ID:CvNQjivJ.net
TFM(clip2=TDeint(tryweave=true)).TDecimate

IVTCがよく分からないのだったら、これくらいから始めて見たら。

28 :名無しさん@編集中:2009/04/09(木) 09:21:06 ID:6q1OcNYQ.net
>>27
それも試してみる。
スクロールシーンで BruteIVTC が誤爆して面倒だなと思ってた。

29 :名無しさん@編集中:2009/04/15(水) 00:09:10 ID:eLGqXbAm.net
保守

30 :名無しさん@編集中:2009/04/18(土) 12:16:35 ID:o2/Hl2dW.net
過疎

31 :名無しさん@編集中:2009/04/19(日) 22:57:28 ID:Aq7QwMkk.net
" Vim compiler file
" Compiler: avsutil
" Last Change: 19-Apr-2009.

"" 使い方 {{{1
" HOWTO: Run an AVISYNTH script (imagewriter) without a player within a batch file??
" http://forum.doom9.org/showthread.php?t=74899

" avsutil.exe のパスを通しておく。
" http://www.members.optusnet.com.au/squid_80/

" $HOME/vimfiles/compiler に avsutil.vim として、このスクリプトを置く。

" .vimrc に以下を記入。
"autocmd FileType avisynth compiler avsutil
""autocmd BufRead,BufNewFile *.avs,*.avsi compiler avsutil

" :grep や :make の実行後、自動的に QuickFix ウィンドウを開く
" (注意: vim7 以降で利用可能)
" http://vimwiki.net/?tips%2F66

"au QuickfixCmdPost make,grep,grepadd copen
"au QuickfixCmdPost l* lopen

32 :名無しさん@編集中:2009/04/19(日) 22:59:25 ID:Aq7QwMkk.net
" ScriptClip などのデバッグ用
" ctrl + return で VirtualDub を編集中のスクリプトを読み込ん
" で起動。
"autocmd BufRead,BufNewFile *.avs,*.avsi map <C-CR> :!start "E:/home/hoge/bin/VirtualDub/VirtualDub.exe" "%:p"<CR>

"" 使用上の注意
" AviSynthスクリプト名、及びパスにマルチバイト文字や半角スペ
" ースを使わないこと。そうしないと、エラーの箇所にジャンプし
" ない。

" AviSynthスクリプトの返り値が clip でないときは、デバッグの
" ときスクリプトの最後にでも BlankClip を置いておく。

"" quickfix に値を出力。
" Function Say (val word) { Assert( !Defined(word), "avisynthi> " + string(word) + chr(10) ) }
" }}}

33 :名無しさん@編集中:2009/04/19(日) 23:00:20 ID:Aq7QwMkk.net
if exists("current_compiler")
  finish
endif
let current_compiler = "avsutil"

if exists(":CompilerSet") != 2    " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif

" :help errorformat
"set efm=%EScript\ Error:\ %m,%Z(%f\\,\ line\ %l),%A(%f\\,\ line\ %l),%Z(%f\\,\ line\ %l\\,\ column\ %c),%+G%.%#
set efm=%EScript\ Error:\ %m,%A(%f\\,\ line\ %l),%A(%f\\,\ line\ %l\\,\ column\ %c),%+G%.%#
CompilerSet makeprg=avsutil\ %

" vim:set fdm=marker:

34 :名無しさん@編集中:2009/04/19(日) 23:06:41 ID:Aq7QwMkk.net
## 関数: {{{2
# プロンプト avsutil.exe hoge.avs や vim の QuickFix ウィンドウ、
# VirtualDub のエラーウィンドウに関数などの評価された値を表示する。
# 返り値が clip のときは clip の情報を表示する。
Function Say(val expression) {
    Assert( !Defined(expression), "avisynthi> " + string(expression) + chr(10) )
}

Function return1(val a, val "str") {
    Assert( false, !a.isClip ? "avisynthi> " + string(a) + chr(10)
     \                       : ( Defined(str) ? "avisynthi> " + string(str)
     \                                        : "The return value is a clip." ) + chr(10) + chr(10)
     \                       + getVideoProperty(a) + chr(10) + chr(10)
     \                       + getAudioProperty(a) + chr(10) )
}
# Say(24000/float(1001)) # 23.976025
# (24000/float(1001)) .return1 # 23.976025
# BlankClip(34600, fps=24000, fps_denominator=1001) return1(last, isInterleaved)

35 :名無しさん@編集中:2009/04/19(日) 23:09:44 ID:Aq7QwMkk.net
# プロンプト avsutil.exe hoge.avs や vim の QuickFix ウィンドウ に関数などの処理時間を表示する。
Function clock(val expression1, val "expression2") {
!Defined(expression2) ? ( expression1.isClip ? expression1
\ : BlankClip.Subtitle(string(expression1)) )
\ : ( expression1.isClip ? expression1.Subtitle(string(expression2))
\ : BlankClip.Subtitle(string(expression1)+", "+string(expression2)) )
}
# return clock( Fib(46) )


Function getVideoProperty(clip c) {
c.hasVideo ? "Frame: " + string(c.FrameCount) + chr(10)
\ + "Time: " + toTimecode(c.FrameCount*c.FramerateDenominator/float(c.FramerateNumerator)) + chr(10)
\ + "ColorSpace: " + string(pixelTypeOf(c)) + chr(10)
\ + "Width: " + string(c.width) + " pixels, Height: " + string(c.height) + " pixels" + chr(10)
\ + "Frames Per Second: " + string(c.Framerate, "%.4f") + " (" + string(c.FramerateNumerator)
\ + (c.FramerateDenominator != 1 ? "/" + string(c.FramerateDenominator) : "") + ")" + chr(10)
\ + "FieldBased (Separated) Video: " + (c.isFieldBased ? "YES" : "NO") + chr(10)
\ + "Parity: " + (GetParity(c) ? "Top" : "Bottom") + " Field First"
\ : "Has Video: NO"
}

36 :名無しさん@編集中:2009/04/19(日) 23:11:16 ID:Aq7QwMkk.net
Function getAudioProperty(clip c) {
c.hasAudio ? "Has Audio: YES" + chr(10)
\ + "Audion Channels: " + string(c.AudioChannels) + " ch" + chr(10)
\ + "Sample Type: " + (c.IsAudioInt ? "Integer " : "Float ") + string(c.AudioBits) + " bit" + chr(10)
\ + "Samples Per Second: " + string(c.AudioRate) + " Hz" + chr(10)
\ + "Audio Length: " + string(c.AudioLength) + " samples. " + c.toTimecodeAudio
\ : "Has Audio: NO"
}

Function toTimecodeAudio(clip c) {
toTimecode(c.AudioLength/float(c.AudioRate))
}

Function toTimecode(float seconds) {
str = string(seconds, "%.3f")
sss = int(value(leftStr(str, findStr(str, ".") - 1)))
Return _add0(sss/3600) + ":" + _add0(sss%3600/60) + ":" + _add0(sss%60) + "." + rightStr(str, 3)
function _add0(t) { strLen(string(t))==1 ? "0" + string(t) : string(t) }
}
# toTimecode(3599) .return1 # 00:59:59.000
# toTimecode(3599.9999) .return1 # 01:00:00.000
# return BlankClip(34600, fps=24000, fps_denominator=1001).ScriptClip("""
# Subtitle(string(current_frame) + " (" + toTimecode(current_frame*FramerateDenominator/float(FramerateNumerator)) + ")")
# """)

37 :名無しさん@編集中:2009/04/19(日) 23:12:15 ID:Aq7QwMkk.net
Function pixelTypeOf(clip c)
{
Return c.IsYV12 ? "YV12"
\ : c.IsYUY2 ? "YUY2"
\ : c.IsRGB24 ? "RGB24"
\ : c.IsRGB32 ? "RGB32"
\ : c.IsRGB ? "RGB"
\ : c.IsYUV ? "YUV"
\ : nop
}

38 :名無しさん@編集中:2009/04/19(日) 23:13:31 ID:Aq7QwMkk.net
Function Evaluation(clip clp, string "block", int "y", int "guifg", string "guifont", int "font_size", bool "err")
{
y = Default(y, 0)
guifg = Default(guifg, $FFFFFF)
guifont = Default(guifont, "osaka_unicode") #http://osakattf.hp.infoseek.co.jp/
#guifont = Default(guifont, "MS_Gothic")
font_size = Default(font_size, 18)
err = Default(err, false)

EVALUATION_Y = !globalDefined("EVALUATION_Y") ? 0 : EVALUATION_Y + 3 + y
y = EVALUATION_Y

Global EVALUATION_BLOCK = block
Global EVALUATION_COUNT = 0

while("""findStr(EVALUATION_BLOCK, "\n") > 0""",
\"""
Global EVALUATION_BLOCK = DelChr10(EVALUATION_BLOCK)
Global EVALUATION_COUNT = EVALUATION_COUNT + 1
""")

Global EVALUATION_Y = EVALUATION_Y + EVALUATION_COUNT

str = err ? _evalBlock() : string(Eval(EVALUATION_BLOCK))

39 :名無しさん@編集中:2009/04/19(日) 23:14:51 ID:Aq7QwMkk.net
function _evalBlock()
{
try
{
string(Eval(EVALUATION_BLOCK))
}
catch(err_msg)
{
return err_msg
}
}

clp

Subtitle(string(VersionString), font=guifont, size=font_size, text_color=guifg)
Subtitle("$ " + string(block), font=guifont, size=font_size,
\ text_color=guifg, y =font_size*(2+y), lsp=1)
Subtitle(str, font=guifont, size=font_size,
\ text_color=guifg, y =font_size*(3+EVALUATION_COUNT+y))
}

40 :名無しさん@編集中:2009/04/19(日) 23:16:06 ID:Aq7QwMkk.net
Function ConsoleClip(int "columns", int "lines", int "font_size", int "guibg", int "length")
{
columns = Default(columns, 80)
lines = Default(lines, 25)
font_size = Default(font_size, 18)
guibg = Default(guibg, $000000)
length = Default(length, 240)

BlankClip(length=length, width=font_size*(columns/2), height=font_size*lines, color=guibg)
}

Function DelChr10(string block, string "ffs") {
ffs = Default(ffs, "\n")
LeftStr(block, Findstr(block, ffs)-1) + MidStr(block, Findstr(block, ffs)+2)
}

Function globalDefined(string x)
{
try
{
Eval("defined(" + x + ")")
}
catch(err_msg)
{
return false
}
}

41 :名無しさん@編集中:2009/04/19(日) 23:19:52 ID:Aq7QwMkk.net
Function undef(val "x") { Assert(!Defined(x), "Usage: a = undef()") Return x }
# n = undef()
# defined(n) .return1 # false
# global x = 2
# global x = undef()
# globalDefined("x") .return1
##}}}
### }}}

## 使用例:
ConsoleClip(lines=30)

Evaluation("""
# 正しい解を求めることができる最大値は Fib(46)\n
Function Fib(int n) {\n
Assert( (n >= 0), "fib: n should be larger than or equal to 0." )\n
Return (n == 0) ? 0\n
\ : (n == 1) ? 1\n
\ : (n == 2) ? 1\n
\ : n.isEven ? powerOf(fib((n/2)+1), 2) - powerOf(fib((n/2)-1), 2)\n
\ : fib(n-1) + fib(n-2)\n
}\n\n
Fib(46)
""")

42 :名無しさん@編集中:2009/04/19(日) 23:21:29 ID:Aq7QwMkk.net
# http://www.avisynth.info/2chlog/1153487392.html の 367-372 の修正。
# ・Evaluation() でオプションに y を指定しなくても自動で改行。
# ・フィボナッチ数 fib() を整数型の範囲で解を出力するようにした。

Evaluation("xor(true, true)")
Evaluation("xor(true, false)")
Evaluation("xor(false, true)")
Evaluation("xor(false, false)")

# 冪乗(べき乗)
# Pow() を整数型でも使えるようにしたもの。
Function powerOf(val base, val expt) {
Assert( base.isNumber, "powerOf: base should be Number." )
Assert( expt.isNumber, "powerOf: exponent should be Number." )
Return (expt == 0) ? 1
\ : (base.isFloat2) || (expt.isFloat2) ? pow(base, expt)
\ : (expt < 0) ? 1. / powerOf(base, abs(expt))
\ : (expt.isEven) ? squareOf( powerOf(base, expt / 2) )
\ : base * powerOf(base, expt-1)
}
# pow(3, 16) .return1 # 43046720.000000 不正解
# powerOf(3., 16) .return1 # 43046720.000000 不正解
# powerOf(3, 16) .return1 # 43046721 正解
# powerOf(2, 1./2) .return1 # 1.414214
# powerOf(2, -3) .return1 # 0.125000

43 :名無しさん@編集中:2009/04/19(日) 23:22:41 ID:Aq7QwMkk.net
Function xor(P, Q) { !(P == Q) }
Function isNumber (val a, val "b") { defined(b) ? a.isFloat && b.isFloat && a==b : a.isFloat }
Function isFloat2 (val a, val "b") { defined(b) ? a.isFloat2 && b.isFloat2 && a==b : !a.isInt && a.isFloat }
Function isEven(int n) { n % 2 == 0 }
Function isOdd(int n) { n % 2 == 1 }
Function squareOf(val n) { n * n }
Function cubeOf(val n) { n * n * n }
# IsFloat() 数は float として扱われる。
# ( 2 .isFloat ) .return1 # true
# ( 2..isFloat ) .return1 # true
# ( int(2) .isFloat ) .return1 # true
# ( 2 .isFloat2 ) .return1 # false
# ( 2..isFloat2 ) .return1 # true

44 :名無しさん@編集中:2009/04/19(日) 23:30:13 ID:Aq7QwMkk.net
上に貼ったもののまとめ
tp://pub.idisk-just.com/fview/t7g_72CR_2yjhrrLwcxUEeiMxM0unJukS5yoa1sZ2R7qf_b24EWtbJsrGENFTVOu


45 :名無しさん@編集中:2009/04/19(日) 23:59:00 ID:Aq7QwMkk.net
修正
Function isEven(int n) { abs(n) % 2 == 0 }
Function isOdd(int n) { abs(n) % 2 == 1 }

46 :名無しさん@編集中:2009/05/23(土) 08:24:20 ID:EqPrC8cc.net
動いてる部分だけ(もしくは静止部分だけ)任意のフィルタをかける(もしくはかけない)関数誰か作っておくれ
mvtoolsとかでできそうなんだけど難しい・・・せめてドキュメントが日本語なら・・・

47 :名無しさん@編集中:2009/05/29(金) 00:38:12 ID:tWPEs+1x.net
>>46
ttp://www.avisynth.info/?ConditionalFilter
を参考に作ってみれば。


### 文字列の置換 {{{2
Function replaceString (string str1, string str2, string str3)
{
Return (str2 != chr(0)) ? _replaceString(str1, str2, str3) : str1
}

Function deleteString (string str1, string str2)
{
Return (str2 != chr(0)) ? _replaceString(str1, str2, "") : str1
}

function _replaceString (string str1, string str2, string str3, int "pos")
{
pos1 = default(pos, 1)

str4 = leftStr(str1, pos1-1)
str5 = midStr(str1, pos1)

pos2 = findStr(str5, str2)


48 :名無しさん@編集中:2009/05/29(金) 00:40:04 ID:tWPEs+1x.net
return (pos2 != 0)
\ ? _replaceString( str4 + leftStr(str5, pos2-1) + str3 + midStr(str5, pos2+strLen(str2)),
\ str2, str3, pos1+pos2+strLen(str3)-1 )
\ : str1
}
# replaceString("あいうえお", "う", "u") .return1 # あいuえお
# replaceString("123456789012345678901234567890", "2", "two") .return1 # 1two345678901two345678901two34567890
# deleteString("0000000123", "0") .return1 # 123
### }}}

文字列の置換は cp932 + VirtualDub, 及び utf-8 + vim + avsutil で確認。

vimで保存すると同時に :make を実行。
" http://blog.blueblack.net/item_317
"<Leader><Leader>で変更があれば保存
noremap <Leader><Leader> :update<CR>

~/vimfiles/after/ftplugin/avisynth.vim
"" errormarker.vim : Highlights and sets error markers for lines with compile errors
"" http://www.vim.org/scripts/script.php?script_id=1861

if !exists('b:current_compiler')
compiler avsutil
endif

autocmd BufWritePost <buffer> silent make



49 :名無しさん@編集中:2009/05/31(日) 23:32:36 ID:YolEMfRe.net
hos

50 :名無しさん@編集中:2009/06/29(月) 10:27:52 ID:T7cisb0D.net
ほしゅ

ホワイト・ブラックアウトを検出できれば
(明るさ・コントラスト・色合い・ガンマ値などの)自動補正プラグインが安全につかえる?

51 :名無しさん@編集中:2009/09/21(月) 09:25:30 ID:pIylTiNI.net


52 :名無しさん@編集中:2009/11/13(金) 21:31:25 ID:Jw42OdBI.net
タダ乗りといえば、無線ルーター認証なしで使ってる人多そうだね

53 :名無しさん@編集中:2009/11/13(金) 21:32:40 ID:Jw42OdBI.net
誤爆すんませんorz

54 :名無しさん@編集中:2009/11/19(木) 21:30:31 ID:F1lxBJYZ.net
EasyVFR改3でtimecode v0を出力するavsの使用例ない?

55 :名無しさん@編集中:2009/11/19(木) 22:06:17 ID:ABREaFcR.net
>>54
EasyVFR3.avs開いたら書いてあるだろ・・・・

56 :名無しさん@編集中:2009/12/14(月) 00:07:07 ID:YknLNIDc.net
一部の音楽畑の人以外不明だろうけど、
GScript(http://forum.doom9.org/showthread.php?t=147846)のループを利用して、
N平均律の音列モデル作成用スクリプト書いたよ。
N=12で12平均律、N=31なら31平均律ね。

最後に映像も追加してるのは、"Avs2wav.exe"に通すため。
どうせなら改良して映像に数値情報が表示されるようにしようか考え中…。


# N平均律
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\GScript.dll")

##--ここから数値指定--##
N = 12 # N平均律

Start = 440 # 1音目の周波数(Hz)
Length = 1.0 # 1音の発音時間(sec.)
Level = 1.0 # 音量(0 - 1.0)

Channels = 2 # チャンネル数
SampleRate = 48000 # サンプルレート

Type = "Sine" # 波形("Silence" "Sine" "Noise" "Square" "Triangle" "Sawtooth")
Outro = 2.0 # 発音終了後に追加する無音部分の長さ(sec.)
##--ここまで数値指定--##


57 :名無しさん@編集中:2009/12/14(月) 00:08:05 ID:YknLNIDc.net
>>56 の続き

# 2のN乗根 = 2の1/N乗
RN = Pow(2.0,1.0/N)

# Start
Tone(length=Length, frequency=Start, samplerate=SampleRate, channels=Channels, type=Type, level=Level)

# Follower
GScript("""
for (G=1,N,1) {
AlignedSplice(last,Tone(length=Length, frequency=Start*Pow(RN,G), samplerate=SampleRate, channels=channels, type=Type, level=Level))
}
""")

Audio = AlignedSplice(last, Tone(length=Outro, samplerate=SampleRate, channels=Channels, type="Silence"))
return AudioDub(BlankClip(),Audio)
__END__


58 :名無しさん@編集中:2010/01/29(金) 00:15:07 ID:0Yf+kDbU.net
下のスクリプトは等幅フォントで見ることを前提にしています。
2chブラウザで見るには、Navi2ch, Chaliceを使うか
Janeでレス番号をマウスで範囲選択、右クリックでポップアップ
または、Jane Styleで ReplaceStr.txt を編集する
http://jane.s28.xrea.com/test/read.cgi/bbs/1243173026/
//▽ と をスペースに置換する
<ex2> 【TAB】【半角スペース】【TAB】msg
<ex2>【半角スペース】【半角スペース】【TAB】【全角スペース】【TAB】msg
<ex2> 【半角スペース】【TAB】【全角スペース】【TAB】msg
<ex2> 【TAB】【半角スペース】【TAB】msg
こうしておくと、プログラム板でインデントが保たれて見える。

以下は、timecode を出力するための計算例。
# 終結端数補正値
#
# ソースクリップの選択範囲の 総フレーム数, フレーム周波数を
# src_count, src_fps
# その選択範囲をフレームレイト変換した後の 総フレーム数, フレーム周波数を
# ivtc_count, ivtc_fps
#
# fps^-1 は、その Framerate での 1frame の表示時間の長さである。
# 例えば、24000/1001 Hz での 1frame の表示時間は、
# (24000/1001)^-1 = 1001 / 24000 = 0.041708333333…
#
# ソースクリップの選択範囲の再生時間 src_count * src_fps^-1 と
# フレームレイト変換後の再生時間 ivtc_count * ivtc_fps^-1
# は一致するとは限らないので、フレームレイト変換後の最終フレームの
# フレーム周波数でもって調整する必要がある。
# フレームレイト変換後の最終フレームのフレーム周波数を、
# 終結端数補正fps とここでは呼ぶことにする。
#
# 終結端数補正fps を tail_fps とおく。

59 :名無しさん@編集中:2010/01/29(金) 00:17:44 ID:0Yf+kDbU.net
#
# src_count * src_fps^-1 = (ivtc_count - 1) * ivtc_fps^-1 + tail_fps^-1
#
# tail_fps^-1 = src_count * src_fps^-1 - (ivtc_count - 1) * ivtc_fps^-1
# = src_count / src_fps - (ivtc_count - 1) / ivtc_fps
# = (src_count * ivtc_fps - (ivtc_count - 1) * src_fps) / (src_fps * ivtc_fps)
#
# よって、
# tail_fps = src_fps * ivtc_fps / (src_count * ivtc_fps - (ivtc_count - 1) * src_fps)
#
# また、分母を den, 分子を num とすると
# tail_num = ivtc_num * src_num
# tail_den = src_count * ivtc_num * src_den - (ivtc_count-1) * src_num * ivtc_den
function tcCalc(int src_count, int src_num, int src_den, \
int ivtc_count, int ivtc_num, int ivtc_den)
{
tail_num = ivtc_num * src_num
tail_den = src_count * ivtc_num * src_den - (ivtc_count-1) * src_num * ivtc_den

gcd = GCM(tail_num, tail_den)

tail_num = tail_num / gcd
tail_den = tail_den / gcd

return string(tail_num) + "/" + string(tail_den)
}

60 :名無しさん@編集中:2010/01/29(金) 00:19:47 ID:0Yf+kDbU.net
# 最大公約数
#
# ユークリッド(Eukleides エウクレイデス)の互除法
# 2つの正整数の小さくない方を a, もう片方を b とするとき
# r = a - b となる r を取り、b と r で 小さくない方を a,
# 残りを b としてこの操作を繰り返す。
# 小さい方の数が 0 となるとき、大きい方の数を最大公約数
# といい、(a, b) と表す。また、小さい方の数が 1 となる
# とき 2数は互いに素といい最大公約数は 1 となる。
# 尚、この計算は除算をしていることに他ならない。
# (a, b) = 1 と書かれていれば、a と b は互いに素という
# 意味である。計算機の教科書では、GCD(a, b) と書かれる。
#
# (a, b)=1 ⇔ (2^(a-1), 2^(b-1))=1
#
# (206,40) = 2
# a - b = r
# 206 - 40 = 166
# 166 - 40 = 126
# 126 - 40 = 86 (a,b) = (b,r)
# 86 - 40 = 46 a / b = q … r
# 46 - 40 = 6 ----> 206 / 40 = 5 … 6
# 40 - 6 = 34
# 34 - 6 = 28
# 28 - 6 = 22
# 22 - 6 = 16
# 16 - 6 = 10
# 10 - 6 = 4 ----> 40 / 6 = 6 … 4
# 6 - 4 = 2 ----> 6 / 4 = 1 … 2
# 4 - 2 = 2
# 2 - 2 = 0 ----> 4 / 2 = 2 … 0
#

61 :名無しさん@編集中:2010/01/29(金) 00:21:24 ID:0Yf+kDbU.net
Function GCM(int a, int b)
{
Assert((a != 0) || (b != 0), "GCM: GCM(0, 0) is undefined.")
Assert((a >= 0) && (b >= 0), "GCM: a and b should be greater than 0.")
#a = abs(a)
#b = abs(b)
Return (b == 0) ? a \
: (a == 0) ? b \
: (a < b) ? _gcm(b, a) : _gcm(a, b)
}


Function _gcm(a, b)
{
# 減算と除算との組み合わせ。AviSynthでは再帰呼び出し
# において計算量を減らす何らかの方法を取り入れないと、
# 計算量が増えてくるとフリーズするときがある。
r = a % b
d = b - r
r = r <= d ? r : d
Return (r == 0) ? b : _gcm(b, r)
}
#GCM(206, 40) .return1 # 2

62 :名無しさん@編集中:2010/01/29(金) 13:51:43 ID:uzsBpp5S.net
ユークリッドの互除法って
function getGCD(int a,int b){return b==0?a:getGCD(b,a%b)}
これだけでいいんじゃないの?

63 :名無しさん@編集中:2010/01/29(金) 22:16:38 ID:0Yf+kDbU.net
>>58
&を置換し忘れ
//▽&#160;と&nbsp;をスペースに置換する
<ex2>&#160;【TAB】【半角スペース】【TAB】msg
<ex2>【半角スペース】【半角スペース】【TAB】【全角スペース】【TAB】msg
<ex2>&nbsp;【半角スペース】【TAB】【全角スペース】【TAB】msg
<ex2>&nbsp;【TAB】【半角スペース】【TAB】msg
全角&は半角



64 :名無しさん@編集中:2010/01/29(金) 22:18:18 ID:0Yf+kDbU.net
>>62
教科書では
ttp://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html#%_sec_1.2.5
というような書き方が殆どだが、これだけでは不十分。

約数は、除法の原理により必ず正整数でならなければいけない。
getGCD(-18, 12) .return1 # -6
getGCD(0, 0) .return1 # 0
こういうのは、よろしくない。

この点を考慮すると、
function getGCD(int a,int b)
{
Assert((a != 0) || (b != 0), "getGCD: GCD(0, 0) is undefined.")
a = abs(a)
b = abs(b)
return b==0 ? a : getGCD(b, a % b)
}
となる。

ゼロの約数は、任意の正整数である。
除法の原理の a = qb + r において、
q, r = 0
とおくと
a がゼロのときの約数 b は、
0 = 0・b + 0
となり任意の正整数となる。
よって、GCD(0, 0) は定義されていない。
Assert((a != 0) || (b != 0), "GCM: GCM(0, 0) is undefined.")

65 :名無しさん@編集中:2010/01/29(金) 22:19:23 ID:0Yf+kDbU.net
整数環の計算では何が何でも abs() で正整数にしてしまったのではバグが見つけにくく
なる。どうして負数が必要か、どうして解が負数に なるか、きちんと理解したうえで
使うのが望ましい。 (ここで言うバグとは、整合であるか無いかとする)

これらの理由により >>61 では、abs() を使わずに
Assert((a >= 0) && (b >= 0), "GCM: a and b should be greater than 0.")
としている。

d = b - r
r = r <= d ? r : d
の部分は、Avisynth において関数の再帰呼び出し回数を削減するためのもの。剰余と
差を比べて大きくない方を選ぶ。>>60 で述べた互除法のアルゴリズムと、減算とは何か、
除算とは何かを考えてみよう。



66 :名無しさん@編集中:2010/01/29(金) 22:21:25 ID:0Yf+kDbU.net
# 定理: 除法の原理
# a を任意の整数、b は b > 0 の整数とする。このとき
#
# a = qb + r, 0 <= r < b
#
# となる整数 q, r がただ1組存在する。
#
# そのとき q を a を b で割った商, r を余りという。
# また、 r = 0 であるとき、
#
# a = bq (b ≠ 0)
#
# となる整数 q が存在するとき、a は b で割り切れるといい、b|a と表す。
# このとき、b を a の約数、a を b の倍数という。

# a を b で割った余りを求める。
# 合同式 a ≡ r (mod b) において、0 <= r < b となる 整数 r を求める。
Function mod(int a, int b)
{
Assert(b > 0, "mod: modulo should be greater than 0.")
Return a >= 0 ? a % b : ((a % b) + b) % b
}

67 :名無しさん@編集中:2010/01/29(金) 22:22:45 ID:0Yf+kDbU.net
# a の n を法とする乗法における逆元 a^(-1) mod n を求める。
# (a,n)=1 ならば a・x ≡ 1 (mod n) となる x が存在する。
#
# a, n が互いに素でなければ逆元は存在しない。
# よって、n が素数ならば 0 を除く任意の元に対して逆元が存在する。
# また、a・x ≡ 1 (mod n) となる x を求めることは、
# 不等方程式 a・x + n・y = 1 を解くことに他ならない。
#
# 拡張ユークリッドの互除法
#
# 互いに素であるとき
# (29, 17) = 1
# 29 - 17 = 12 ----> 29 / 17 = 1 … 12
# 17 - 12 = 5 ----> 17 / 12 = 1 … 5
# 12 - 5 = 7 ----> 12 / 5 = 1 … 7
# 7 - 5 = 2 ----> 7 / 5 = 1 … 2
# 5 - 2 = 3
# 3 - 2 = 1 ----> 5 / 2 = 2 … 1
#
# 29 * s + 17 * t = 1 となる s, t を見つける。
# a = 29, b = 17 とおく
# 29 - 17 = 12
# 1a + 0b = 29 ----> (1)
# -)0a + 1b = 17 ----> (2)
# 1a - 1b = 12 ----> (3) = (1) - (2)
#
# 17 - 12 = 5
# 0a + 1b = 17 ----> (2)
# -)1a - 1b = 12 ----> (3)
# -1a + 2b = 5 ----> (4) = (2) - (3)
#

68 :名無しさん@編集中:2010/01/29(金) 22:23:58 ID:0Yf+kDbU.net
# 12 - 5 = 7
# 1a - 1b = 12 ----> (3)
# -)-1a + 2b = 5 ----> (4)
# 2a - 3b = 7 ----> (5) = (3) - (4)
#
# 7 - 5 = 2
# 2a - 3b = 7 ----> (5)
# -)-1a + 2b = 5 ----> (4)
# 3a - 5b = 2 ----> (6) = (5) - (4)
#
# 5 - 2 = 3
# -1a + 2b = 5 ----> (4)
# -) 3a - 5b = 2 ----> (6)
# -4a + 7b = 3 ----> (7) = (4) - (6)
#
# 3 - 2 = 1
# -4a + 7b = 3 ----> (7)
# -)3a - 5b = 2 ----> (6)
# -7a + 12b = 1 ----> (8) = (7) - (6)
#
# -7*29 + 12*17 = 1
# 整数 -7 を 17 を法とする剰余環の数に変換。
# -7 (mod 17) = 10
# ----------------------------------------------------------
# 計算量を減らす。
# 12 - 5 = 7
# 1a - 1b = 12 ----> (3)
# -)-1a + 2b = 5 ----> (4)
# (4) に 12 / 5 = 2 … 2 の商2を掛ける。
#

69 :名無しさん@編集中:2010/01/29(金) 22:25:41 ID:0Yf+kDbU.net
# 12 - 10 = 2
# 1a - 1b = 12 ----> (3)
# -)-2a + 4b = 10 ----> (4') = (4) * 2
# 3a - 5b = 2 ----> (5') = (3) - (4')
#
# 5 - 4 = 1
# -1a + 2b = 5 ----> (4)
# -)6a - 10b = 4 ----> (5'') = (5') * 2
# -7a + 12b = 1 ----> (6) = (4) - (5'')
# ----------------------------------------------------------
Function modinv(int a, int n)
{
Assert( n > 0, "modinv: modulo should be greater than 0." )
Return (exGCD(n, mod(a,n), true) + n) % n
}


Function exGCD(int a, int n, bool "inv", int "x", int "y")
{
inv = default(inv, false)
x = default(x, 1)
y = default(y, 0)
inv && (n == 0) ? Assert( a == 1, "modinv: GCM(a, n) == 1" ) : NOP
Return (n != 0) ? exGCD(n, mod(a,n), inv, y - (a/n) * x, x) : inv ? y : a
}

70 :名無しさん@編集中:2010/01/29(金) 22:26:23 ID:0Yf+kDbU.net
#modinv(29, 17) .return1 # 10
#mod(29*10,17) .return1 # 1
## 29・x ≡ 1 (mod 17)
## 29・x + 17・y = 1
## 29*10 - 17*17 = 1

#modinv(17, 29) .return1 # 12
#mod(17*12,29) .return1 # 1
## 17・x ≡ 1 (mod 29)
## 17・x + 29・y = 1
## 17*12 - 29*7 = 1

#modinv(-17, 29) .return1 # 17
#mod(-17*17,29) .return1 # 1
## -17・x ≡ 1 (mod 29)
## -17・x + 29・y = 1
## -17*17 + 29*10 = 1

#modinv(-29, 17) .return1 # 7
#mod(-29*7,17) .return1 # 1
## -29・x ≡ 1 (mod 17)
## -29・x + 17・y = 1
## -29*7 + 17*12 = 1

71 :名無しさん@編集中:2010/01/29(金) 23:28:56 ID:0Yf+kDbU.net
<<64
× 約数は、除法の原理により必ず正整数でならなければいけない。
○ 約数はマイナスとプラスの値を取り得るが、最大公約数なので
  プラスのほうを選択しなければならない。

72 :名無しさん@編集中:2010/01/30(土) 18:24:16 ID:LBUHjYOw.net
>>64
ググレカス的質問に丁寧な解説、マコトにありがとうございます!

>64-65の前半はGCM(0,0)とか変な呼び出しを見つけるのに便利ってはなしですよね?
その辺は関数の外の話だと思ったので省略しただけで特に疑問は無いです

d = b - rとr = r <= d ? r : dの2行が見慣れないコードだったんで何だろうと思ってレスしました
残念ながら私の脳ミソでは>65-70を読んでも理解できなかったので、結局、googleに教えてもらいました
a%bがgcdの倍数であるようにb-a%bもgcdの倍数な訳で、それならより小さい方を使いましょう!って感じですかね?
あらためて>65-70を読んでも、何故拡張ユークリッドの互除法が出てくるのかさっぱり解らないけど

今日まで何となく使ってけど理解した気になれました、ありがとうございました

73 :名無しさん@編集中:2010/01/30(土) 19:17:41 ID:9B7LZ21n.net
>でも、テスト版は負の方向には動くが、正の方向には、動かなくなっているらしい。
フイタw なんだよその突貫作業w

74 :名無しさん@編集中:2010/04/07(水) 07:35:18 ID:VC766J+4.net
# ロゴ表示開始又は終了地点でトップかボトムのどちらかの
# フィールドしかロゴがかかってないフレームのロゴを除去し
# クリップ全体でなくその単一フレームのみ返す関数

function HalfFieldDeLogo(clip clp, int "framenumber", bool "topfieldlogo", string "logofile"){
c=clp.Trim(framenumber,framenumber)
d=c.EraseLOGO(logofile=logofile,interlaced=true)
dc = d.SeparateFields() + c.SeparateFields()
cd = c.SeparateFields() + d.SeparateFields()
weaved = (topfieldlogo == GetParity(clp)) ? dc.SelectEvery(4,0,3).Weave() : cd.SelectEvery(4,0,3).Weave()
return weaved.AssumeFPS(Framerate(clp))
}

75 :名無しさん@編集中:2010/04/07(水) 16:31:03 ID:ffy2YvsS.net
コピペ乙

76 :名無しさん@編集中:2010/09/26(日) 08:59:12 ID:UXdKQhbu.net
大丈夫か?このスレ・・・

77 :名無しさん@編集中:2010/10/21(木) 22:55:14 ID:AHZ9Au1x.net
保守

78 :名無しさん@編集中:2010/10/21(木) 22:58:21 ID:BxcFhB7U.net
半年放置しても落ちないのに保守とか

79 :名無しさん@編集中:2011/01/20(木) 01:17:12 ID:HYYaGR2t.net
クリップの輝度や彩度の数値を返す関数はありませんか?
ランタイム関数はどうにも使い勝手が難しく難儀しております。

80 :名無しさん@編集中:2011/03/02(水) 10:29:57.66 ID:K4aqw3JF.net
いい検索ワードがいまいち思いつかないが
avisynth getClip Luma Chroma value
こんな検索ワードだとこのあたりのリソースがつかえるんじゃね?

http://forum.doom9.org/showthread.php?t=154184
http://www.wilbertdijkhof.com/AviSynth-Documentation_20100101.pdf


81 :名無しさん@編集中:2011/04/06(水) 21:27:43.67 ID:BCB+wDWW.net
sv = "hoge.d2v"
sa = "hoge.aac"
da = 0.00
AudioDub(Mpeg2source(sv),bassAudioSource(sa)) DelayAudio(da)
# EraseLOGO()
# lji(-1,-1,"def","hd")
# trim()
main(30)
return last
function main(clip clip, int "fp",int "tH", int "tW") {
fp = default(fp,24) tH= default(tH,clip.Height()) tW= default(tW,clip.Width())
pre = (fp == 24 ) ? "animeLQ" : "movieLQ"
clip = clip.AssumeTFF().AutoDeint("blend")
clip = (fp == 24 ) ? clip.TFM(mode=6,order=1,PP=7,slow=1,mChroma=true,opt=4) : clip
clip = (fp == 24 ) ? clip.TDecimate(mode=1) : clip
clip = clip.ConvertToYUY2()
clip = clip.BicubicResize (tW,clip.Height())
clip = clip.fft3dGPU(sigma=0.4,beta=1,plane=0,bt=3,bw=12,bh=12,ow=8,oh=8,sharpen=0.2,wintype=1)
clip = clip.GPU_Begin()
clip = clip.fft3dGPU(sigma=0.4,beta=1,plane=1,bt=2,bw=16,bh=16,ow=12,oh=12,sharpen=0.2,wintype=1)
clip = (fp == 24 ) ? clip.fft3dGPU(sigma=0.45,beta=1,plane=2,bt=1,bw=20,bh=20,ow=14,oh=14,sharpen=0.3,wintype=1) : clip
clip = clip.GPU_HardwareResize (clip.Width(),tH,"Anisotropic")
clip = clip.GPU_Convolution3d(preset=pre)
clip = clip.WarpSharp(95,3,85,0)
clip = clip.UnsharpMask(19,8,24)
clip = clip.GPU_TemporalSmoother(2,2)
clip = clip.GPU_EndYV12()
clip = (fp != 24 ) ? clip.GradFun2DBmod(screenW=tW,screenH=tH) : clip
return clip
}

82 :名無しさん@編集中:2011/04/06(水) 21:48:03.14 ID:BCB+wDWW.net
前はこんな感じにしていたんだがgpuに任せっきりで熱々だった

clip = clip.fft3dGPU(sigma=1.25,beta=1,plane=1,bt=3,bw=16,bh=16,ow=8,oh=8,sharpen=0.1,wintype=1)
clip = clip.fft3dGPU(sigma=1.25,beta=1,plane=0,bt=4,bw=24,bh=24,ow=12,oh=12,sharpen=0.2,wintype=2)
clip = clip.GPU_BeginYV12()
clip = clip.GPU_Convolution3d(preset=tMode)
clip = clip.GPU_LanczosResize (tWid,tHei)
clip = (fp == 24) ? clip.GPU_2DCleanFake() : clip.GPU_2DClean()
clip = clip.GPU_TemporalSmoother(2,2)
clip = clip.GPU_EndYV12()

これを>>81に変えてからだいぶGPUの熱々感がマシになった気がする。
X4 955BE+HD5670 だけど双方ともx264のエンコだとfpsは普通に出る

CSソースの480p->576pで70fps前後
BSソースの1080p->720pで30fps前後
地デジソースの1080p->1080pで20fps前後

あとバンディングをしないならさらに早くなる。あれソースによったら重いからw
俺のHDDが逝ったとき用にここにメモをのこしておく。

83 :保守代わり:2011/06/17(金) 21:58:10.16 ID:aBclwywQ.net
Avisynthプラグイン / Avisynthスクリプト / AviUtlプラグイン を
拡張子で自動判別してロードする関数Load()。
プラグインやスクリプトを置いているフォルダがいつも々なら地味に便利かも?

function Load(string "fileName", string "funcName")
{
PluginDir = "C:\Avisynth\Plugins" # ←Avisynthプラグインフォルダのパスを記入
ScriptDir = "C:\Avisynth\Plugins" # ←Avisynthスクリプトフォルダのパスを記入

AviUtlPluginDir = "C:\AviUtl\Plugins" # ←AviUtlプラグインフォルダのパスを記入
AviUtlPluginPrefix = "AU_" # AviUtlプラグインの関数名に付けるデフォルトの接頭語

funcName = default(funcName, AviUtlPluginPrefix + LeftStr(fileName, StrLen(fileName)-4))

( RightStr(filename, 4) == ".dll" ) ? LoadPlugin(PluginDir + "\" + fileName) : \
( RightStr(filename, 4) == ".auf" ) ? LoadAviUtlFilterPlugin(AviUtlPluginDir + "\" + fileName, funcName) : \
Import(ScriptDir + "\" + fileName)

return( last )
}

84 :保守代わり:2011/06/17(金) 22:00:33.22 ID:aBclwywQ.net
[使い方]
Load("DGDecode.dll") → Avisynthプラグインフォルダからロード

Load("LSFmod.avsi") → Avisynthスクリプトフォルダからロード
Load("myScript.avs") → Avisynthスクリプトフォルダからロード

Load("DeDot.auf") → AviUtlプラグインフォルダからロード
デフォルトの関数名は"AU_DeDot(…)"になる
Load("DeDot.auf", "hogehoge") → AviUtlプラグインフォルダからロード
関数名は"hogehoge(…)"になる

※なお,AviUtlプラグインをロードするときは,事前にwarpsharp.dllもロードをお忘れなく。

85 :保守代わり:2011/06/17(金) 22:05:33.70 ID:aBclwywQ.net
このスクリプトを毎回Importするのが面倒なら,
このスクリプトだけはC:\Program Files (x86)\AviSynth 2.5\plugins
に放り込んでおくか,シンボリックリンクを張っておくのが吉ッス。

86 :保守代わり:2011/06/18(土) 06:10:56.19 ID:eXhqdsh9.net
ScriptDirのパスがPluginDirのパスと同じになっていたので訂正。
もしも実際に使う時はPluginDirとScriptDirを自分の環境に応じて変更願います。
ついでにスクリプト読み込み部分をもう少し丁寧に書いてみました。
後の改良の余地はtry〜catchなどを使って,LoadAviUtlFilterPluginが呼ばれるときに
予めwarpsharp.dllを自動ロードするように改造するくらいでしょうか。よく分かりませぬ。


function Load(string "fileName", string "funcName")
{
PluginDir = "C:\Avisynth\Plugins" # ←Avisynthプラグインフォルダのパスを記入
ScriptDir = "C:\Avisynth\Scripts" # ←Avisynthスクリプトフォルダのパスを記入

AviUtlPluginDir = "C:\AviUtl\Plugins" # ←AviUtlプラグインフォルダのパスを記入
AviUtlPluginPrefix = "AU_" # AviUtlプラグインの関数名に付けるデフォルトの接頭語

funcName = default(funcName, AviUtlPluginPrefix + LeftStr(fileName, StrLen(fileName)-4))

( RightStr(filename, 4) == ".dll" ) ? LoadPlugin(PluginDir + "\" + fileName) : \
( RightStr(filename, 4) == ".auf" ) ? LoadAviUtlFilterPlugin(AviUtlPluginDir + "\" + fileName, funcName) : \
( RightStr(filename, 4) == ".avs" || RightStr(filename, 5) == ".avsi" ) ? Import(ScriptDir + "\" + fileName) : \
Assert(false, "Load(): Unknown Plugin/Script loaded!")

return( last )

87 :保守代わり:2011/06/18(土) 06:34:06.44 ID:eXhqdsh9.net
関数の最後の括弧が抜けてました。ショボくてマジスマソ。

function Load(string "fileName", string "funcName")
{
PluginDir = "C:\Avisynth\Plugins" # ←Avisynthプラグインフォルダのパスを記入
ScriptDir = "C:\Avisynth\Scripts" # ←Avisynthスクリプトフォルダのパスを記入

AviUtlPluginDir = "C:\AviUtl\Plugins" # ←AviUtlプラグインフォルダのパスを記入
AviUtlPluginPrefix = "AU_" # AviUtlプラグインの関数名に付けるデフォルトの接頭語

funcName = default(funcName, AviUtlPluginPrefix + LeftStr(fileName, StrLen(fileName)-4))

ext4 = RightStr(filename, 4)
ext5 = RightStr(filename, 5)

( ext4 == ".dll" ) ? LoadPlugin(PluginDir + "\" + fileName) : \
( ext4 == ".auf" ) ? LoadAviUtlFilterPlugin(AviUtlPluginDir + "\" + fileName, funcName) : \
( ext4 == ".avs" || ext5 == ".avsi" ) ? Import(ScriptDir + "\" + fileName) : \
Assert(false, "Load("+filename+") ERROR! Unknown Plugin/Script.")

return( last )
}

88 :名無しさん@編集中:2011/08/26(金) 10:45:57.17 ID:6Pj/f4gj.net
保守

89 :名無しさん@編集中:2011/11/12(土) 00:46:30.08 ID:01JO6To2.net
保守

90 : 忍法帖【Lv=17,xxxPT】 :2011/12/09(金) 03:07:12.41 ID:rfkEsvd9.net
てs

91 :名無しさん@編集中:2011/12/09(金) 03:07:36.21 ID:Qvm8DmUA.net
保守

92 :名無しさん@編集中:2011/12/23(金) 02:06:45.13 ID:PKe+O8Xj.net
ほす

93 :名無しさん@編集中:2012/01/19(木) 16:12:10.49 ID:ynciJXC3.net
自分なりに改良してみたTIVTC24P2を貼ってみる

function NewTIVTC24P2(clip clip, string "fieldorder")
{
fieldorder = Default(fieldorder,"TOP")
Assert(("TOP" == fieldorder )||("BOTTOM" == fieldorder),"Please specify ''TOP'' or ''BOTTOM'' .")
Assume = (fieldorder == "BOTTOM") ? clip.AssumeBFF() : clip.AssumeTFF()
num = (fieldorder == "BOTTOM") ? 0 : 1
interp = Assume.SeparateFields().Selecteven().nnedi3(field=num,dh=true)
Deinted = clip.yadifmod(order=num,field=num,edeint=interp)
clip.TFM(mode=6,order=num,PP=7,mChroma=true,clip2=Deinted,cthresh=-1)
TDecimate(mode=1)
Return last
}

自分なりに改良してみたところ
1、BFFにもたぶん対応※未確認
2、取りこぼしを更に少なくした。

TIVTC24P2よりも少し重いけど、取りこぼしが減るのでエンコ後のサイズは減りSSIMは向上した。

英語は適当
チラ裏ごめんね。

94 :名無しさん@編集中:2012/01/19(木) 17:00:20.20 ID:c/4Wh/fp.net
slowを外したのって単に少しでも軽くするため?

95 :名無しさん@編集中:2012/01/19(木) 18:10:43.31 ID:SMeo6kya.net
いつも思うんだけど、フィールドオーダーなんてベースクリップに従えばいいんじゃないの?

96 :名無しさん@編集中:2012/01/19(木) 21:03:21.32 ID:ynciJXC3.net
>>94
うん。
でも突っ込まれると不安になったので、ちょっと検証してくる。
>>95
個人的には明示的に書いたほうが安心するのでこう書いた。

97 :名無しさん@編集中:2012/01/19(木) 23:11:03.93 ID:ZUP+oOiK.net
ちょっと気になったので試してみたけど
function TIVTC24P2(clip clip){
Interp = clip.AssumeTFF().SeparateFields().SelectEven().eedi3(dh=true)
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
}

の方がfps,SSIM,サイズ全ての面でいい結果になったのだけど…

98 :名無しさん@編集中:2012/01/20(金) 02:33:39.87 ID:JJlJ76eq.net
nnedi3とeedi3の違いってなんです?

99 :名無しさん@編集中:2012/01/20(金) 11:41:28.00 ID:8SP6bwvP.net
>>93
TIVTC系の逆テレシネって、放送波だと宣伝とかの流れるテロップで絶対誤爆すると思うんだけど、テロップ位置調べてbob化してるのか?
それともテロップの流れる場所だけマスクかけるとかやってんのかな。

100 :名無しさん@編集中:2012/01/20(金) 13:04:28.63 ID:+6Ivd+4j.net
普通VFRにするだろうと…

101 :93:2012/01/21(土) 13:55:37.51 ID:2XjYVQJk.net
>>97
漏れの環境では>>93の方が良かったわ。
まぁそれぞれの環境でベストな選択をすればいいんじゃね?

>>99
漏れもVFRにしてる

102 :名無しさん@編集中:2012/01/21(土) 15:11:12.08 ID:x+rd/NdR.net
漏れ?

103 :名無しさん@編集中:2012/01/21(土) 15:17:56.21 ID:e1rB1dTQ.net
>>102
ようゆとり

104 :名無しさん@編集中:2012/01/31(火) 18:31:31.13 ID:iaPNZszp.net
function QTGMC24P2(clip clip){
d = clip.Bob(-0.2,0.6).ReduceFlicker(strength=1)
clip = clip.QTGMC(Preset="Fast")
clip = clip.srestore(frate=23.976, dclip=d)
return clip
}


105 :名無しさん@編集中:2012/01/31(火) 18:32:09.86 ID:iaPNZszp.net
function TIVTC24P2_QTGMC(clip clip){
Deinted=clip.QTGMC( Preset="Fast").SelectEven()
clip = clip.TFM(mode=6, PP=7, slow=2, clip2=Deinted)
clip = clip.TDecimate(mode=1)
return clip
}


106 :名無しさん@編集中:2012/03/12(月) 22:12:59.61 ID:BqsO8gx8.net
>>93以降の関数でSD(DVD)OKってありますか?
今は・・・
function TIVTC24P2(clip clip,int "cthresh",int "MI",int "blockx",int "blocky")
{
cthresh=default(cthresh,9)
MI=default(MI,80)
blockx=default(blockx,16)
blocky=default(blocky,16)
clip
Interp = clip.AssumeTFF().SeparateFields().SelectEven().EEDI2(field=1)
Deinted = TDeint(edeint=Interp)
TFM(cthresh=cthresh,MI=MI,blockx=blockx,blocky=blocky,mode=6,PP=7,slow=2,mChroma=true,Clip2=Deinted)
TDecimate(mode=1)
return last
}
で調整しながら行っていますが(上記が正しいかどうかは自身ありません)
誤爆無くすまで数回調整しなくてはいけないのでちょっと億劫になってて・・・。
※一応自力作成ですがどこかで似たものを見たかも?

107 :名無しさん@編集中:2012/03/12(月) 23:09:04.23 ID:0Lm5VGIh.net
blockなんか弄ってもゴミがでるだけ

108 :名無しさん@編集中:2012/04/10(火) 01:20:04.41 ID:/9Ix11fc.net
deletterlをチバテレ用に追加編集してみたけど、

deletterl_param
> \ (tp == "ctc") ? "204.5,0.0,0.0,76.0,61" :

こんな感じで縦横のL幅と時間指定してとりあえず問題ないっぽく動いてる
ぜんぜん素人なので中身の意味はさっぱりわからないんだけど

109 :名無しさん@編集中:2012/05/06(日) 20:51:17.54 ID:Bxd+gwE1.net
function pizzaPotato(clip clip,float"strength",int"quality",string"warpsharp",int"repair"){
function pizzaPotato_(clip a,clip b,float c,int d){
d>0?pizzaPotato_(subtract(a,subtract(blur(a,c),b)),b,c,d-1):a
}
a=default(strength,.5)
b=blur(clip,a)
pizzaPotato_(b,b,a,default(quality,3))
c=default(warpsharp,"ytouv(warpsharp(utoy,blur=1),warpsharp(vtoy,blur=1),warpsharp(blur=1))")
pizzaPotato_(eval(c),b,a,default(repair,1))
}
ピザポテト食ってる時に思いついた解像感が上がる気のするフィルタ

110 :名無しさん@編集中:2012/06/23(土) 17:56:00.92 ID:na2wurhI.net
テロップは60p自動化しなくていいの?

111 :名無しさん@編集中:2012/09/19(水) 10:49:25.08 ID:Xrxizive.net
初心者スレより拡散

誰かLSFmodをDither_removegrain16とDither_repair16を使うように改造してください

ベースとなるLSFmodはここ
http://www1.axfc.net/uploader/Sc/so/335684.zip
Pass: RedAverage

某所にあるavsファイル(MDegrainとLinearResizeとLSFmodとf3kdbが一緒になった奴)が参考になるかもしれません

112 :名無しさん@編集中:2012/09/21(金) 04:57:22.33 ID:0TQupaou.net
シャープ君乙。

113 :名無しさん@編集中:2012/09/21(金) 10:22:57.66 ID:Lqt6GysO.net
シャープ君より毎回シャープ君乙と切り返す屍が遥かに悪座主

114 :名無しさん@編集中:2012/09/21(金) 10:48:51.98 ID:i3DWCuVk.net
あながち間違いでもないと思ってるけど

115 :名無しさん@編集中:2012/09/24(月) 23:37:57.92 ID:Bz+useCA.net
シャープ君ココでもがんばってるのか。

116 :名無しさん@編集中:2012/09/29(土) 08:32:50.96 ID:4RAcVo/+.net
シャープ君程々にな

117 :名無しさん@編集中:2013/07/16(火) NY:AN:NY.AN ID:+zMg1Bfg.net
>16をTDeintに変えたものを保守がてらカキコ
改造元のさらにオリジナルとの差はコマンドを変えやすいことかな

InterlacedYV12ToYUY2_TDeint
function InterlacedYV12ToYUY2_TDeint(clip source)
{
# You might need to change here.
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\TDeint\TDeint.dll")

TD = source.Tdeint(mode=1, type=1, full=false, tryWeave=true).ConvertToYUY2.SeparateFields.SelectEvery(4,0,3).Weave()

source.ConvertToYUY2.MergeChroma(TD)
}

118 :名無しさん@編集中:2013/07/17(水) NY:AN:NY.AN ID:PR7RGWpf.net
わざわざTDeint使わんでも
http://forum.doom9.org/showthread.php?p=1471623#post1471623
でよくね?

119 :名無しさん@編集中:2013/07/17(水) NY:AN:NY.AN ID:uib/sB1W.net
>>118
それは60pを経由しないので、動きの無い部分の品質は良くない。

120 :名無しさん@編集中:2014/07/27(日) 14:04:33.14 ID:PRIBVn5g.net
function resize_720i(clip i, "ord", bool "matchfields")
{
ord=default(ord,-1)
matchfields=default(matchfields,false)
i.BicubicResize(1080,1080, 0,0.5)
\ last.TDeint(mode=1,type=1,order=ord,tryweave=matchfields,full=(matchfields==false))
\ last.BicubicResize(1080,720,0,0.5).AssumeTFF().SeparateFields().SelectEvery(4, 0, 3).Weave()
}

とあるサイトに触発されて横リサイズ後Bob化、縦リサイズ&再インタレ化する関数を作ってみたんですが、これで問題ありませんか?
それとTMMのオン/オフも実装したいのですが、やり方を教えてください。

121 :名無しさん@編集中:2014/07/30(水) 15:14:21.05 ID:zu2Y2YQ8.net
txt60mcHybrid2の縦スクロール版。別途ivtc_txt60mcが必要。
某アニメのために今さら作ってみた。これを使う前に数話、VFRでエンコ済みなので後悔。

"top"がtrueだと左、falseだと右にフィルタが掛かるはず。

function txt60mcHybrid3(clip src,int frame_ref,bool "srcbob",bool "draft",int "txt_area",bool "top",bool "show")
{
w=src.width()
draft=default(draft,false)
srcbob=default(srcbob,false)
show=default(show,false)

top=default(top,false)
txt_area=default((top==false)?w-txt_area:txt_area,1440)
txt_area=(txt_area%2==0)?abs(txt_area):abs(txt_area-1)
crop_c1=(top==false)?0:txt_area
crop_c2=(top==false)?w-txt_area:0
field_ref=(srcbob)?frame_ref:frame_ref*2
field_ref=field_ref%5
invpos=(5-field_ref)%5

c=(srcbob)?src
\:(draft )?src.TDeint(mode=1)
\:src.QTGMC(preset="fast")

c1=c.SelectEvery(5,1-invpos,3-invpos).Trim(invpos/2,0).crop(crop_c1,0,w-txt_area,0)
c2=c.crop(crop_c2,0,txt_area,0).ivtc_txt60mc(field_ref,srcbob=true,draft=draft)
c2=(show==false)?c2:c2.coloryuv(gain_v=32)
return (top==false)?StackHorizontal(c1,c2):StackHorizontal(c2,c1)
}

122 :名無しさん@編集中:2015/01/05(月) 16:00:52.23 ID:L1Rxa1ej.net
プルダウンした時のANIME+ロゴのコーミングを無理やり潰すの作った(適当)
縞以外にはほとんど影響ない(嘘)
http://i.imgur.com/g3eKUxN.jpg

#FilterRangeで使用 例:FilterRange(4022, 4202, "APlogo()")

Function APlogo(clip clip)

{
clip1 = clip
clip1 = clip1.Crop(0, 0, -1220, -780).TDeint(mode=1,full=false,tryweave=true).nnedi3_rpow2(rfactor=2,nsize=6, nns=3, qual=1, etype=0, pscrn=4)
\.AssumeTFF().SeparateFields().SelectEvery(4, 0, 3).Weave().Spline36Resize(700, 300).Crop(4, 4, -4, -4)
return Overlay(clip, clip1, x=4, y=4,mode="blend", opacity=1.0)
}

123 :名無しさん@編集中:2015/01/06(火) 12:11:26.29 ID:JTe1OpXH.net
>>122
二重化とどう違うのかよくわからん

124 :名無しさん@編集中:2015/03/30(月) 00:16:53.36 ID:5BlOBuT/.net
酔った勢いで作る羽目になった動画用に寄せ集めて作った60p化モーション補間。
ブロックノイズっぽいのがいやで作成。
関数化するのはコレでいいのかな?
元はこれ。
QTGMC( Preset="Medium", ForceTR=2, SubPel=2 )
super = MSuper(rfilter = 4,pel=2, levels=1)
MFlowFps(super, QTGMC_bVec1,QTGMC_fVec1, num=60000, den=1001)

関数化。
function MFlowFps_QTGMC(clip clip)
{
clip = clip.QTGMC( Preset="Medium", ForceTR=2, SubPel=2 )
super = clip.MSuper(rfilter = 4,pel=2, levels=1)
clip = clip.MFlowFps(super, QTGMC_bVec1,QTGMC_fVec1, num=60000, den=1001)
return clip
}

125 :名無しさん@編集中:2015/03/30(月) 01:03:29.20 ID:XDV613wF.net
酔いが覚めたら深く、とても深く反省して下さいね。

126 :名無しさん@編集中:2015/04/11(土) 20:27:39.44 ID:s6Wi9Cpd.net
60p化モーション補間のMFlowFps_QTGMCだと、大きくゆっくり動くシーンなど崩れるときもあったのでMBlockFpsも改良。

function MBlockFps_QTGMC(clip clip)
{
clip = clip.QTGMC( Preset="Medium", ForceTR=2, SubPel=2 )
super = clip.MSuper(rfilter = 4,pel=2, levels=1)
clip = clip.MFlowBlur(super,QTGMC_bVec1,QTGMC_fVec1, blur=23)
super= clip.MSuper(rfilter = 4)
backward_1 = MAnalyse(super, chroma=false, isb=true, blksize=32, blksizev=32, searchparam=2, plevel=0, search=3, badrange=(-24))
forward_1 = MAnalyse(super, chroma=false, isb=false, blksize=32, blksizev=32, searchparam=2, plevel=0, search=3, badrange=(-24))
backward_2 = MRecalculate(super, chroma=false, backward_1, blksize=16, blksizev=16, searchparam=2, search=3)
forward_2 = MRecalculate(super, chroma=false, forward_1, blksize=16, blksizev=16, searchparam=2, search=3)
backward_3 = MRecalculate(super, chroma=false, backward_2, blksize=8, blksizev=8, searchparam=1, search=3)
forward_3 = MRecalculate(super, chroma=false, forward_2, blksize=8, blksizev=8, searchparam=1, search=3)
clip = clip.MBlockFps(super, backward_3, forward_3, num=60000, den=1001, mode=0)
return clip
}

clip = clip.MFlowBlur(super,QTGMC_bVec1,QTGMC_fVec1, blur=23)のblurを0にしてブラー無っぽく使用も出来ます。

127 :名無しさん@編集中:2015/10/07(水) 11:41:37.44 ID:S6hnwWgv.net
2passTIVTC等で、フレーム間の違いを書きだしたファイルを利用する人用

global radius = 0
scriptclip(last,"duptempsoften(current_frame,radius)")
ConditionalReader("DTSradius.txt", "radius", false)

function duptempsoften(clip clip, int frame,int radius) {
TF=Clip.Trim(frame,frame)
NF=Clip.Trim(frame+1,frame+1)
NF2=(radius>1)?Clip.Trim(frame+2,frame+2):NF
clip2=NF2++TF++NF
clip2=(radius>1)?clip2.TemporalSoften(1,256,256,50,mode=2):clip2.TemporalSoften(1,128,128,50,mode=2)
SF=Clip2.Trim(1,1)
B=Clip.Trim(0,frame-1)
A=Clip.Trim(frame+1,0)
B++SF++A
return last
}

128 :名無しさん@編集中:2015/11/25(水) 15:51:03.17 ID:wd62HWOj.net
しょぼくてもいいと聞いて。

LoadPlugin("LSMASHSource.dll")
function LSMASHSourceVA(string src, bool "audio")
{
audio = Default(audio, true)
ext = RightStr(src, 3)
isobmff = ((ext=="mp4") || (ext=="mov")) ? true : false
v = isobmff ? LSMASHVideoSource(src) : LWLibavVideoSource(src)
clip = audio ? isobmff ? AudioDub(v,LSMASHAudioSource(src)) : AudioDub(v,LWLibavAudioSource(src)) : v
return clip
}

129 :名無しさん@編集中:2016/01/29(金) 22:18:07.96 ID:OsMRL5qA.net
とりあえずこちらにも。
知り合いに精度が上がるようにと組んでもらった自動24fpsスクリプト。
PPは4にしてあるけど、7などお好みで。


function TIVTC24P6(clip clip){
sclip = clip.nnedi3(field=1)
Interp = clip.AssumeTFF().eedi3(field=1,sclip=sclip)
Deinted = clip.TDeint(order=1,field=1,edeint=Interp)
clip = clip.TFM(mode=6,order=1,PP=4,slow=2,mChroma=true,clip2=Deinted)
clip = clip.TDecimate(mode=1)
return clip
}

130 :名無しさん@編集中:2016/03/01(火) 20:15:48.76 ID:qBr77Mfq.net
TIVTC24P2関数に判定除外設定が組み込まれたもの

function TTNTto24p(clip clip, int "order", int "y0", int "y1")
{
order = default(order, -1)
y0 = default(y0, 0)
y1 = default(y1, 0)
matched = clip.TFM(mode=6, order=order, PP=0, slow=2, y0=y0, y1=y1)
interp = clip.AssumeTFF().SeparateFields().SelectEven().NNEDI3(dh=true)
deinted = matched.TDeint(order=order, full=false, cthresh=5, ap=15, aptype=2, mthreshl=2, expand=10, mtnmode=1, blockx=16, blocky=32, edeint=Interp)
ret = y0 == 0 ? deinted.TDecimate(mode=1) : deinted.cropbottom(deinted.height() - y0).TDecimate(mode=1. clip2=deinted)
return ret
}

私のまったく機能していない関数を叩き直してくれた
Avisynth初心者スレPart7の906氏に感謝

Avisynth 初心者質問スレ Part7
http://echo.2ch.net/test/read.cgi/avi/1407833519/906-909

131 :名無しさん@編集中:2016/05/17(火) 20:46:55.64 ID:Z4oHciE1.net
function TDecimate24P6(clip clip, int "order", bool "plus", bool "PAL25", int "y0", int "y1")
{
order = default(order, -1)
plus = default(plus, false)
PAL25 = default(PAL25, false)
cy = (PAL25==true)? 6 : 5
y0 = default(y0, 720)
y1 = default(y1, 1040)
width = width(clip)
matched = clip.TFM(mode=6, order=order, PP=7, slow=2, y0=y0, y1=y1)
interp = (plus==true)? clip.eedi3(field=order) : clip.nnedi3(field=order)
tfm = (plus==true)? clip : matched
deinted = tfm.TDeint(mode=0, order=order, tryweave=true, full=false, expand=8, edeint=interp)
half = deinted.mt_lut("0", chroma="128", offx=1200, offy=120, w=155, h=850).mt_lut("0", chroma="128", offx=100, offy=118, w=158, h=850).
\ mt_lut("0", chroma="128", offx=270, offy=760, w=910, h=280)
full = deinted.mt_lut("0", chroma="128", offx=1625, offy=120, w=185, h=850).mt_lut("0", chroma="128", offx=100, offy=118, w=168, h=850).
\ mt_lut("0", chroma="128", offx=310, offy=760, w=1300, h=280)
mask2 = (width <= 1440)? half : full
masked = (plus==true)? deinted.mt_lut("0", chroma="128", offx=120, offy=24, w=420, h=230)
\ : mask2
return masked.TDecimate(mode=1, cycle=cy, clip2=deinted)
}

日本語字幕部分を黒くマスクして誤爆しないようにしたもの
初心者スレpart7で改良・助言してくださった方、ありがとうございました

132 :131:2016/06/15(水) 15:20:48.18 ID:HzGwm0nK.net
実写ソースで間引きをミスしてたから
TFMをTIVTC24P2と同じ並びに変更したもの
(aviutlのafsより高画質だろうと思って使っているのに使いこなすのが難しい・・)

function TDecimate24P6(clip clip, int "order", bool "plus", bool "PAL25", int "y0", int "y1")
{
order = default(order, -1)
plus = default(plus, false)
PAL25 = default(PAL25, false)
cy = (PAL25==true)? 6 : 5
y0 = default(y0, 720)
y1 = default(y1, 1040)
width = width(clip)
interp = (plus==true)? clip.eedi3(field=order) : clip.nnedi3(qual=2, field=order)
deinted = clip.TDeint(mode=0, order=order, tryweave=true, full=false, expand=8, edeint=interp)
clip = (plus==true)? clip : clip.TFM(mode=6, order=order, PP=7, slow=2, y0=y0, y1=y1)
half = deinted.mt_lut("0", chroma="128", offx=1200, offy=120, w=165, h=850).mt_lut("0", chroma="128", offx=100, offy=118, w=158, h=850).
\ mt_lut("0", chroma="128", offx=270, offy=760, w=910, h=280)
full = deinted.mt_lut("0", chroma="128", offx=1625, offy=120, w=195, h=850).mt_lut("0", chroma="128", offx=100, offy=118, w=168, h=850).
\ mt_lut("0", chroma="128", offx=280, offy=760, w=1400, h=280)
mask2 = (width <= 1440)? half : full
masked = (plus==true)? deinted.mt_lut("0", chroma="128", offx=120, offy=24, w=420, h=230)
\ : mask2
return masked.TDecimate(mode=1, cycle=cy, clip2=deinted)
}

133 :名無しさん@編集中:2016/06/15(水) 15:37:18.52 ID:4SKaI9ZT.net
高画質とか関係ない話

134 :名無しさん@編集中:2016/11/09(水) 17:41:55.39 ID:uyK6WPYn.net
貼る価値のないようなスクリプトですが・・
ちなみにスクリプトはchikuzen氏のyuy2converter、このスレ>17氏のものです

function ChangeYUY2(clip c)
{
# ttps://github.com/chikuzen/CombMask
# ttps://github.com/chikuzen/YV12To422
return ConditionalFilter(c,
\ c.YV12To422(interlaced=true, yuy2=true, threads=false, avx2=false, b=0.3, c=0.3),
\ c.YV12To422(interlaced=false, yuy2=true, threads=false, avx2=false, b=0.3, c=0.3),
\ "IsCombed(cthresh=5,MI=60, mthresh=6)", "=", "true")
}

function ChangeYUY2a(clip c)
{
# ttps://github.com/chikuzen/CombMask
return ConditionalFilter(c,
\ c.InterlacedYV12ToYUY2_Yadifmod2,
\ c.ConvertToYUY2(interlaced=false),
\ "IsCombed(cthresh=5,MI=60, mthresh=6)", "=", "true")
}


function InterlacedYV12ToYUY2_Yadifmod2(clip source)
{
# ttps://github.com/chikuzen/yadifmod2

YD = source.Yadifmod2(mode=1).ConvertToYUY2.SeparateFields.SelectEvery(4,0,3).Weave

source.ConvertToYUY2.MergeChroma(YD)
}

135 :名無しさん@編集中:2017/01/06(金) 11:03:48.59 ID:k1girSuE.net
結局アニメ用と実写用で分けてシンプルに
インタレ解除プラグインを通すとどうしても絵が崩れたのでCombMergeQで保険的に潰すように

function CombMergeQ(clip clip)
{
video=clip
nne=video.nnedi3(field=-1)

mask_clip=combmask(video,cthresh=40,mthresh=6)
decomb=video.yadifmod2(mode=0, edeint=nne)
MaskedMerge(video, decomb, mask_clip,MI=60)
return last
}

function TDecimate24P7(clip clip, bool "PAL25", int "y0", int "y1")
{
PAL25 = default(PAL25, false)
cy = (PAL25==true)? 6 : 5
y0 = default(y0, 720)
y1 = default(y1, 1040)
width = width(clip)

clip2=clip.TFM(pp=0, order=-1, slow=2,y0=y0,y1=y1, mChroma=true)

half = clip.mt_lut("0", chroma="128", offx=1200, offy=120, w=165, h=850).mt_lut("0", chroma="128", offx=100, offy=118, w=158, h=850).
\ mt_lut("0", chroma="128", offx=270, offy=760, w=910, h=280)
full = clip.mt_lut("0", chroma="128", offx=1625, offy=120, w=195, h=850).mt_lut("0", chroma="128", offx=100, offy=118, w=168, h=850).
\ mt_lut("0", chroma="128", offx=280, offy=760, w=1400, h=280)

masked = (width <= 1440)? half : full
masked.TFM(pp=0, order=-1, slow=2).TDecimate(mode=1, cycle=cy,clip2=clip2)

return last
}

function TDecimate24P7A2(clip clip)
{#Clip1 のTDeintに"full=false"を使うと間引きミスが起きたので削除

clip1=clip.TDeint(mode=0, order=-1, tryweave=true, expand=10)
clip2=clip.TFM(PP=0)
masked = clip1.mt_lut("0", chroma="128", offx=120, offy=24, w=420, h=230)
masked.TDecimate(mode=1, clip2=clip2)

return last
}

総レス数 135
70 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200