1 名前:名無しさん@編集中 mailto:sage [2006/07/21(金) 22:09:52 ID:ven1fJLR] 前スレ お前らのショボイAvisynthスクリプト貼ってください pc8.2ch.net/test/read.cgi/avi/1030537641/ 関連スレ Avisynthを絶讃ιょぅょ Part21 pc8.2ch.net/test/read.cgi/avi/1139403989/ もっと貼れ
2 名前:名無しさん@編集中 mailto:sage [2006/07/21(金) 22:28:59 ID:ven1fJLR] ごめんなさい貼ってください
3 名前:名無しさん@編集中 mailto:sage [2006/07/21(金) 22:50:28 ID:9ej62NjT] 立ったのか次スレ あれだけ遅かったスレが1000近くまで行くとは感無量ですぞ
4 名前:名無しさん@編集中 mailto:sage [2006/07/21(金) 23:35:59 ID:ven1fJLR] 前スレの962さんが指摘してる端数切捨て問題解決してくださいよぉ
5 名前:名無しさん@編集中 mailto:sage [2006/07/22(土) 00:16:36 ID:y6VUOZnw] にーやんのところでは a = src.Trim(0,100).IT(fps=24, ref="TOP") b = src.Trim(101,200).IT(fps=30, ref="TOP") c = src.Trim(201,300).IT(fps=24, ref="TOP") tcpath = "c:\tmp\timecode.txt" all = EasyVFR_Create(src, a, tcpath) all = all.EasyVFR_Append(b, tcpath) all = all.EasyVFR_Append(c, tcpath) all だけど以下のようにすることにした Function mod_FPS(clip clip,string "IVTC"){ sf=clip.framecount clip=Eval("clip."+IVTC) ff=clip.framecount clip=Eval("clip.assumefps("+string(ff*sn)+","+string(sf*sd)+",False)") return clip } a = src.Trim(0,100).mod_FPS("""IT(fps=24, ref="TOP")""") b = src.Trim(101,200).mod_FPS("""IT(fps=30, ref="TOP")""") c = src.Trim(201,300).mod_FPS("""IT(fps=24, ref="TOP")""")
6 名前:1 mailto:sage [2006/07/22(土) 00:17:36 ID:y6VUOZnw] tcpath = "c:\tmp\timecode.txt" all = EasyVFR_Create(src, a, tcpath) all = all.EasyVFR_Append(b, tcpath) all = all.EasyVFR_Append(c, tcpath) all これで解決か?
7 名前:名無しさん@編集中 mailto:sage [2006/07/22(土) 00:18:53 ID:y6VUOZnw] お・・・assumefpsのところEvalいらねぇやw
8 名前:名無しさん@編集中 mailto:sage [2006/07/22(土) 00:23:19 ID:y6VUOZnw] お・・・www 阿呆だ('A`)こっちじゃないと動かんね Function mod_FPS(clip clip,string "IVTC"){ sf=clip.framecount sn=clip.FramerateNumerator sd=clip.FramerateDenominator clip=Eval("clip."+IVTC) ff=clip.framecount clip=Eval("clip.assumefps("+string(ff*sn)+","+string(sf*sd)+",False)") return clip }
9 名前:名無しさん@編集中 mailto:sage [2006/07/22(土) 07:44:56 ID:Tfq4UgGw] なくて寂しかった。>>1 乙 前スレには大いに助けられたなあ
10 名前:名無しさん@編集中 mailto:sage [2006/07/25(火) 19:54:19 ID:h5CHz3K4] AE並みの編集が可能なスクリプト群を暇な時に作ってください
11 名前:名無しさん@編集中 mailto:sage [2006/08/08(火) 10:05:34 ID:ZLPqWeg6] 新スレおめ
12 名前:名無しさん@編集中 mailto:sage [2006/08/08(火) 13:51:27 ID:JWH0oHzQ] EasyVFR作ってくれたヒトアリガトー マジ重宝してまつ
13 名前:名無しさん@編集中 mailto:sage [2006/09/05(火) 19:44:23 ID:t9/4UIef] ffunction KeepAspectResize1(clip clip, int newW, int newH, int "bcolor") { aspect = (float(clip.width) / float(clip.height)) w = int(newH * aspect) b = newW >= w w = b ? w : newW h = b ? newH : int(newW / aspect) h = int(h / 2) * 2 c = clip.Lanczos4Resize(w, h) borderW = newW - w borderH = newH - h c = c.AddBorders(borderW/2, borderH/2, \ borderW-borderW/2, borderH-borderH/2, bcolor) return c }
14 名前:名無しさん@編集中 mailto:sage [2006/09/20(水) 23:39:43 ID:JAZ7dmNq] 。 ο ,.。 ο ο ,. ゚ ο o 。 o ο 。 ゚ ο ,ヘ、 ,.:-一;:、ο人がまるでいない・・・ _,.-';: ミ;;:;,. _,.;:゙ミ '^ー、 ο 。 ,r( ´・ω・) ,.*。\,r'! ο .,。 ツィー=ニ彡' ,.。 _j 〜'l つとノ '" {-' ,.;:;u‐―u' ,.。* ._,.-! -=、,r' ,r='i:,ィ' ,.*。 ,__,.-=':トー' ヘ_,、 /;;::-一' ‐-、`-'iニレ'^'
15 名前:名無しさん@編集中 mailto:sage [2006/10/09(月) 15:29:33 ID:B67vZM4M] EasyVFRでタイムコードだしてtc2cfrに投げると Number of data chunks does not match frame count. とかでて止まる。ナニコレ。誰か助けて。 # timecode format v1 Assume 29.970030 0,4649,23.976025 4650,7341,29.970030 7342,35289,23.976025 タイムコードが↑でaviは29.97fpsでできてる模様。
16 名前:名無しさん@編集中 mailto:sage [2006/10/12(木) 21:13:17 ID:ncqGs7PQ] 前スレのdatキボンヌ
17 名前:名無しさん@編集中 mailto:sage [2006/10/12(木) 21:32:16 ID:cRL49dXh] www.geocities.jp/mirrorhenkan/url.html?u=http://pc8.2ch.net/test/read.cgi/avi/1030537641/
18 名前:名無しさん@編集中 mailto:sage [2006/10/19(木) 01:38:47 ID:c0V6DE1P] に〜やんのところ池
19 名前:sage [2006/10/29(日) 23:24:45 ID:FuQtmUD3] >>15 それ多分、端数問題で引っかかってる。 俺もそのエラー出たけど Function mod_FPS(clip clip,string "IVTC"){ sf=clip.framecount sn=clip.FramerateNumerator sd=clip.FramerateDenominator clip=Eval("clip."+IVTC) ff=clip.framecount clip=Eval("clip.assumefps("+string(ff*sn)+","+string(sf*sd)+",False)") return clip } a = src.Trim(0,100).mod_FPS("""IT(fps=24, ref="TOP")""") b = src.Trim(101,200).mod_FPS("""IT(fps=30, ref="TOP")""") c = src.Trim(201,300).mod_FPS("""IT(fps=24, ref="TOP")""") tcpath = "c:\tmp\timecode.txt" result = EasyVFR_Create(src, a, tcpath) result = all.EasyVFR_Append(b, tcpath) result = all.EasyVFR_Append(c, tcpath) result ってな具合に>>8 のをEasyVFRに加えたら出来た。
20 名前:名無しさん@編集中 mailto:sage [2006/10/29(日) 23:28:25 ID:FuQtmUD3] うぉ・・・・ あまりに久しぶりだったからsageの書く場所間違えてしまった。 スミマセン・・・・。
21 名前:名無しさん@編集中 mailto:sage [2006/10/30(月) 02:05:10 ID:Urc+xqmd] ♪ ∧,_∧ (´・ω・`) )) (( ( つ ヽ、 ♪ 〉 とノ ))) (__ノ^(_)
22 名前:名無しさん@編集中 mailto:sage [2006/11/13(月) 14:31:20 ID:O7l1lOuS] ITで30fpsのインタレ解除って出来ない? 6フレームに1フレームミスるんだけど・・・
23 名前:22 mailto:sage [2006/11/13(月) 14:31:54 ID:O7l1lOuS] ごめん場所間違えた
24 名前:名無しさん@編集中 mailto:sage [2006/11/15(水) 18:32:03 ID:wkPsdoUE] #ASYNTHER QuickTime 30.00fps LoadVFAPIPlugin("C:\Program Files\AviSynth 2.5\plugins\QTReader.vfp","QTReader") [QTReader("%f")] ChangeFPS(30.00) FlipVertical でquicktimeをvirtualdubで読み込めたんですが。 ついでにwavで出力してる音声を読み込むのってどう書きますか?
25 名前:名無しさん@編集中 mailto:sage [2006/11/15(水) 18:48:47 ID:nQ5D0RwA] ここは自慢のスクリプトを貼り付けてそれを肴に語らうところらしいよ。 どこかで聞いた話じゃ2chのAviSynth関連スレは初心者お断りなんだって。
26 名前:名無しさん@編集中 mailto:sage [2006/11/15(水) 18:51:21 ID:kqED7NZk] とゆうかVDスレでも似たようなこともうきいてるじゃんか
27 名前:名無しさん@編集中 mailto:sage [2006/11/15(水) 22:38:15 ID:OF+qTVTn] AudioDub(QTReader(), WaveSource() )
28 名前:名無しさん@編集中 mailto:sage [2006/11/15(水) 22:39:36 ID:OF+qTVTn] WAVSource()
29 名前:名無しさん@編集中 mailto:sage [2006/11/16(木) 00:24:48 ID:6IXOD+ie] >25 勉強する意欲があり、向上心があり、独力でできるところまでやっている事が伝わってくる そんな初心者はとても歓迎されてるよ。 自分では調べもしない、試しもしない、他人を利用することしか頭に無い そんな奴は初心者とは呼べない。synth関連スレに限らずね。 ま、ここはショボスクでも何でもいいからとにかく貼るスレだから、とりあえず貼れ。とっとと貼れ。
30 名前:名無しさん@編集中 mailto:sage [2006/11/16(木) 21:39:56 ID:vTv912wj] >>29 だったら本スレで質問しろってことだ それより早く貼ってくだちい
31 名前:名無しさん@編集中 mailto:sage [2006/11/17(金) 01:51:26 ID:lo5LkW8J] 手動逆テレシネフィルタ function ITC(clip, order){ var a, l; //Declare variables. a = new Array((1+2*order)%10 ,(4+2*order)%10 ,(6+2*order)%10, (8+2*order)%10); l = a.sort() ; AVS.inc=doubleweave(clip);//Sort the array. AVS.inc=selectevery(inc,10,l[0],l[1],l[2],l[3]) ; return AVS.inc; }
32 名前:名無しさん@編集中 mailto:sage [2006/11/17(金) 01:54:29 ID:lo5LkW8J] 要warpsharp もっと簡単なのあったらオシエテ こんな感じでツカウ ITCws = WScript("C:\Program Files\AviSynth 2.5\script\ITC.js", "JScript") source=avisource("test.avi") ITCws.WSInvoke("ITC",source,1)
33 名前:名無しさん@編集中 mailto:sage [2006/11/24(金) 16:50:09 ID:+ASBD2Vz] IVTCの端数調整をした timecode v1 を出力するスクリプト 自分用なのでグローバル変数使いまくりの上,解り難いサンプル付属 意外に長くなったんでアップローダに上げました 直張りじゃないとまずいかな? pass avisynth www.uploda.org/uporg590915.zip.html
34 名前:名無しさん@編集中 mailto:sage [2006/11/24(金) 16:59:03 ID:zPkmPH3s] オレはReena!->tbl->timecodev2->MP4ッス
35 名前:名無しさん@編集中 mailto:sage [2006/11/25(土) 01:42:37 ID:+MzjhZT0] >>33 ここに貼ったら?そのためにあるんだし
36 名前:名無しさん@編集中 mailto:sage [2006/11/25(土) 03:12:23 ID:evKmd4rO] 単に長いことだけが理由なら、ここにも貼ってほしいね。 寂しいスレだし。
37 名前:名無しさん@編集中 mailto:sage [2006/11/25(土) 08:34:28 ID:uiH2xf57] >>33 そこ早すぎ。もう流れてるよ。
38 名前:名無しさん@編集中 mailto:sage [2006/11/25(土) 09:59:52 ID:oQBPEXFf] 問題ないようなんで貼ってみる function inittimecode ( clip c, string "filename" ) { global timecode_filename = default( filename, "default-timecodes.txt" ) global sourceclip = c global prevframe = -1 global tc_implicit = false WriteFileStart( BlankClip(length=0), timecode_filename, """ "# timecode format v1"+chr(10)+"Assume "+string(sourceclip.framerate) """ ) } function tcimplicit ( int a, int b, string "filter", bool "avg" ) { global tc_implicit_filter = default( filter, "noop()" ) global tc_implicit_avg = default( avg, false ) global tc_implicit = true global tc_implicit_st = a global tc_implicit_ed = b } global a24d = """Auto24FPS( drop=false,mode="blend" )""" global it = "IT( diMode=0 )"+a24d global a24 = """Auto24FPS( mode="blend" )""" global a602 = "DoubleWeave().a60224()" global pd = "DoubleWeave().Pulldown( 1,3 )" global td = "TDeint( mode=1 )" global bd = """AutoDeint( "blend" )""" global tf = "TFM().TDecimate()"+a24d global ed = "SeparateFields() EEDI2(field=-2) merge(SelectEven(),SelectOdd())"
39 名前:名無しさん@編集中 mailto:sage [2006/11/25(土) 10:00:15 ID:oQBPEXFf] function tc ( int a, int b, string "filter", bool "avg", bool "ignore" ) { tc_implicit && (a >= tc_implicit_st) && (a <= tc_implicit_ed) && (tc_implicit_st != a) ? \ tc_main( tc_implicit_st,a-1,tc_implicit_filter,tc_implicit_avg ) : nop() global tc_implicit_st = tc_implicit ? b+1 : 0 tc_main( a,b,filter,avg,ignore ) return last } function tc_main ( int a, int b, string "filter", bool "avg", bool "ignore" ) { init = prevframe < 0 ? true : false global prevframe = init ? a-1 : prevframe ignore = default( ignore, false ) avg = default( avg, false ) ignore ? nop() : Assert( prevframe+1 == a, "tc: framenumber no much, "+string(a)+" - "+string(b) ) global prevframe = b filter = default( filter, "noop()" ) orig = sourceclip.trim( a,b ) proc = eval( "orig."+filter ) proc.framecount > 1 && (avg ? false:true) ? \ maketimecode( init ? BlankClip(length=0) : cur, orig, proc ) : \ maketimecode2( init ? BlankClip(length=0) : cur, orig, proc ) global cur = init ? proc.AssumeFPS( sourceclip.framerate ) : cur + proc.AssumeFPS( sourceclip.framerate ) global audiosource = init ? orig : audiosource + orig return sourceclip.HasAudio() ? AudioDubEx( proc,audiosource ) : proc }
40 名前:名無しさん@編集中 mailto:sage [2006/11/25(土) 10:00:36 ID:oQBPEXFf] function tcdraw () { tc_implicit && (tc_implicit_st <= tc_implicit_ed) ? \ tc_main( tc_implicit_st,tc_implicit_ed,tc_implicit_filter,tc_implicit_avg ) \ : nop() global tc_implicit = false return sourceclip.HasAudio() ? AudioDubEx( cur,audiosource ) : cur } function noop ( clip c ) { return c } function maketimecode (clip base, clip orig, clip ivtc) { fps = ivtc.framerate section = base.framecount + ivtc.framecount-2 fraction = fracivtc( orig, ivtc ) tc = string(base.framecount) + "," + string(section) + "," + string(fps) + chr(10) + string(section+1) + "," + string(section+1) + "," + string(1000 / (1000/fps + fraction)) WriteFileStart( orig, timecode_filename, "tc", append=true ) } function fracivtc ( clip orig, clip ivtc ) { originaltime = 1000 / orig.framerate * orig.framecount ivtctime = 1000 / ivtc.framerate * ivtc.framecount return originaltime - ivtctime }
41 名前:名無しさん@編集中 mailto:sage [2006/11/25(土) 10:00:58 ID:oQBPEXFf] function maketimecode2 (clip base, clip orig, clip ivtc) { fps = ivtcfps( orig, ivtc ) tc = string(base.framecount) + "," + string(base.framecount+ivtc.framecount-1) + "," + string(fps) WriteFileStart( orig, timecode_filename, "tc", append=true ) } function ivtcfps ( clip orig, clip ivtc ) { originaltime = 1000 / orig.framerate * orig.framecount return 1000 / (originaltime / ivtc.framecount) } ここまで ユーザ側で使うのは inittimecode, tc, tcimplicit, tcdraw の4つ inittimecode ( clip c, string "filename" ) c ソースクリップ.このクリップが操作対象になる filename 出力されるタイムコードファイル名 tc ( int a, int b, string "filter", bool "avg", bool "ignore" ) a 開始フレーム番号 b 終了フレーム番号 filter 区間(a から b)に掛けるフィルタ.主にIVTC フィルタ後のフレーム数に合わせたタイムコードが出力されるので,ある程度自由にフレーム数を変えられる "DoubleWeave().SelectEvery( 10, 0,5 )" とか,動かない場面なら "trim(0,-1)" でもいい フィルタ後のクリップは勝手に保存される tcdraw () tc() で保存してたクリップを引き出す.とりあえず最後に置く
42 名前:名無しさん@編集中 mailto:sage [2006/11/25(土) 10:01:17 ID:oQBPEXFf] 使用例 -- prefix="foo" episode="1" file=prefix+".d2v" wav = prefix+" T01 48K 16bit 2ch.wav" v = mpeg2source( file ).AssumeTFF() a = WavSource( wav ) AudioDub( v,a ) inittimecode( prefix+episode+"-timecodes.txt" ) tc( 0,432,tf ) tc( 433,976,td ) tc( 977,1324,tf ) tc( 1325,1403,pd ) tc( 1404,1500,tf ) tcdraw() crop( 8,0,-8,0 ) KenKunNRT() return last -- tcimplicit を使うと上のはこう書ける -- inittimecode( prefix+episode+"-timecodes.txt" ) tcimplicit( 0,1500,tf ) tc( 433,976,td ) tc( 1325,1403,pd ) tcdraw() --
43 名前:名無しさん@編集中 mailto:sage [2006/11/25(土) 13:06:04 ID:aR3nnS3S] 長いって言うから100レスくらい使うのかと思ってたのに
44 名前:名無しさん@編集中 [2006/12/08(金) 01:05:46 ID:PxLpWLrv] " " ヾ ; " ; " ; ; ヾ ⊂⊃ "ゞ ; ; ; ;;ヾ;;ヾ;ゞ..。 ゙ /~~\ ⊂⊃ ヾ ; ;";;/" ;;ヾ...;ヾ||〜'i " / /~~\ ; "i "; ;ヾ;.;ヾ;;メヾ.|| .| _________ ii;, メソ ヾ; ;ゞ." ..||茶.| /丶丶丶丶丶丶丶丶.\ |i;, |ソ .|| .|//\丶丶丶丶丶丶丶 ..\ Il;: | ..||店.|/ 田 \丶丶丶丶丶丶丶丶\ !i;: | || .| ̄ ̄ ̄ ̄|  ̄  ̄  ̄ ̄ ̄ ̄ ̄.‖ |!;; | ||〜'i | ̄ ̄ ̄|!| ∧ .∧ . ‖ II;; | || .|!|___|!| .(,,・ω・)<誰もいない・・・ II;; | || .| ...| ̄ ̄ ̄| ..(つ旦). ..‖ 从 ゝ.,..., . l ̄i....|__. . |_ |i ̄i|| ̄∪∪ ̄l| | """"''""" ""''"""'' ''""""""'' ''""" """"''
45 名前:名無しさん@編集中 mailto:sage [2006/12/08(金) 22:15:27 ID:qwumTWsL] " " ヾ ; " ; " ; ; ヾ ⊂⊃ "ゞ ; ; ; ;;ヾ;;ヾ;ゞ..。 ゙ /~~\ ⊂⊃ ヾ ; ;";;/" ;;ヾ...;ヾ||〜'i " / /~~\ ; "i "; ;ヾ;.;ヾ;;メヾ.|| .| _________ ii;, メソ ヾ; ;ゞ." ..||茶.| /丶丶丶丶丶丶丶丶丶\ |i;, |ソ .|| .|//\丶丶丶丶丶丶丶丶 ..\ Il;: | ..||店.|/ 田 \丶丶丶丶丶丶丶丶丶\ !i;: | || .| ̄ ̄ ̄ ̄|  ̄  ̄  ̄ ̄ ̄ ̄ ̄ ̄‖ |!;; | ||〜'i | ̄ ̄ ̄|!| ∧ .∧ ‖ II;; | || .|!|___|!| (,,・ω・) (´ー`)<いないねー II;; | || .| ...| ̄ ̄ ̄(つ旦) (つ旦) ‖ 从 ゝ.,..., . l ̄i....|__. . |_ |i ̄i||∪∪ ̄∪∪l| | """"''""" ""''"""'' ''""""""'' ''""" """"'' """''
46 名前:名無しさん@編集中 mailto:sage [2006/12/09(土) 10:05:02 ID:AYb83NR1] " " ヾ ; " ; " ; ; ヾ ⊂⊃ "ゞ ; ; ; ;;ヾ;;ヾ;ゞ..。 ゙ /~~\ ⊂⊃ ヾ ; ;";;/" ;;ヾ...;ヾ||〜'i " / /~~\ ; "i "; ;ヾ;.;ヾ;;メヾ.|| .| _________ ii;, メソ ヾ; ;ゞ." ..||茶.| /丶丶丶丶丶丶丶丶.\ |i;, |ソ .|| .|//\丶丶丶丶丶丶丶 ..\ Il;: | ..||店.|/ 田 \丶丶丶丶丶丶丶丶\ !i;: | || .| ̄ ̄ ̄ ̄|  ̄  ̄  ̄ ̄ ̄ ̄ ̄.‖ |!;; | ||〜'i | ̄ ̄ ̄|!| ‖ II;; | || .|!|___|!|| ‖ II;; | || .| ...| ̄ ̄ ̄| ‖ 从 ゝ.,..., . l ̄i....|__. . |_ |i ̄i|| ̄ ̄ ̄ ̄l| | """"''""" ""''"""'' ''""""""'' ''""" """"''
47 名前:名無しさん@編集中 mailto:sage [2006/12/09(土) 10:56:00 ID:X3D6jCD4] いるお
48 名前:名無しさん@編集中 mailto:sage [2006/12/23(土) 03:25:02 ID:RI79Kt7w] ファイル読み込み関数。 一回作ればあとは楽出来るかな、と。 function LoadFile(string filename) { _len = Findstr(RevStr(filename), ".") - 1 _ext = RightStr(filename, _len) clip = \ ((_ext == "avi") \ ? LoadAvi(filename) \ :(_ext == "d2v") \ ? LoadD2v(filename) \ :(_ext == "mpeg" || _ext == "mpg" || _ext == "vob") \ ? LoadMpeg(filename) \ :(_ext == "aup") \ ? LoadAup(filename) \ :(_ext == "tpr") \ ? LoadTpr(filename) \ :(_ext == "mov" || _ext == "3gp" || _ext == "3gp2") \ ? LoadQt(filename) \ :(_ext == "wav") \ ? LoadWav(filename) \ :(_ext == "mpa" || _ext == "mp3") \ ? LoadMpa(filename) \ : LoadDs(filename) \ ) return clip }
49 名前:名無しさん@編集中 mailto:sage [2006/12/23(土) 03:25:52 ID:RI79Kt7w] function LoadDs(string filename) { return DirectShowSource(filename) } function LoadAvi(string filename) { LoadAviUtlInputPlugin(dir + "ds_input.aui", "DSInput") return DSInput(filename) } function LoadD2v(string filename) { LoadPlugin(dir + "DGDecode.dll") return MPEG2Source(filename) } function LoadMpeg(string filename) { LoadAviUtlInputPlugin(dir + "m2v.vfp", "MPEGInput") return MPEGInput(filename) }
50 名前:名無しさん@編集中 mailto:sage [2006/12/23(土) 03:28:32 ID:RI79Kt7w] function LoadAup(string filename) { LoadVFAPIPlugin(dir + "aviutl.vfp", "AUPInput") return AUPInput(filename) } function LoadTpr(string filename) { LoadVFAPIPlugin(dir + "TMPGEnc.vfp", "TPRInput") return TPRInput(filename) } function LoadQt(string filename) { return QTInput(filename, audio = true) } function LoadWav(string filename) { return WavSource(filename) } function LoadMpa(string filename) { LoadPlugin(dir + "NicAudio.dll") return NicMPASource(filename) }
51 名前:名無しさん@編集中 mailto:sage [2006/12/23(土) 04:36:03 ID:AFfnCPQo] LoadAviでDSInput使う意味は?AVISourceじゃだめなん?
52 名前:48 mailto:sage [2006/12/23(土) 20:00:56 ID:RI79Kt7w] LoadFile作ったのが半年ぐらい前で、 LoadAviは更にその半年前ぐらいに作ったでしょうか。 もう作った当時の思考が思い出せません。 擬似VFRでおかしかったか音ズレが起きたか、とかだったと思い、 由来をちょっと探してみました。 推測するに、携帯動画変換君Wikiの、 “可変フレームレートや120fpsのWMVファイルを読み込む”項を参考に作ってそのまま、 でしょうか。 下記の様に変えて様子みてみます。 function LoadDs(string filename) { LoadAviUtlInputPlugin(dir + "ds_input.aui", "DSInput") return DSInput(filename) } function LoadAvi(string filename) { return AVISource(filename) }
53 名前:名無しさん@編集中 mailto:sage [2007/01/06(土) 21:38:42 ID:fyypBQ9Y] もう一つのFilterRange function FilterRange2(clip clip,int "start",int "end",string "filter"){ global start=start global end=end clip=conditionalfilter(clip,Eval("clip."+filter),clip,"current_frame>=start&¤t_frame<=end","=","true",false) return clip }
54 名前:名無しさん@編集中 mailto:sage [2007/01/21(日) 02:40:26 ID:Yk4jAhSw] #for…繰り返し処理を行う # start 値の初期値 # end 値の終了値 # step 刻み値 # filter 繰り返し分適応させるフィルタ(省略すると何もしません、“""”でも省略扱いです。) # 繰り返しの値は“i”もしくは“crnt”で取得出来ます # merge クリップ結合関数(省略すると最後に作成したクリップを返します、“""”でも省略扱いです。) # 繰り返し途中に作成したクリップは早めに生成されたクリップが“c1”、 # 遅めに生成されたクリップが“c2”になります # この2つのクリップを1つのクリップに結合します。 function for(clip clip, int start, int end, int step, string "filter", string "merge") { filter = default(filter, "") merge = default(merge, "") merge = (("" != merge)? merge: "c2") i = start crnt = start next = crnt + step c1 = clip c2 = (("" != filter)? Eval("clip." + filter): clip) c2 = ((next < end) ? c2.for(next, end, step, merge, filter): c2) return ((next < end)? Eval(merge): c2) }
55 名前:名無しさん@編集中 mailto:sage [2007/01/21(日) 02:41:12 ID:Yk4jAhSw] #OffsetFrame…現在のフレームとは違うフレームの画像を表示する # ofst 表示するフレームの位置(+1なら次のフレーム、-1なら前のフレーム) function OffsetFrame(clip clip, int ofst) { return ((0 < ofst) \ ? clip.Trim(ofst+1,0) \ :(ofst < 0) \ ? clip.Loop((-ofst)+1, 0, 0) \ : clip \ ) } #MovieThumbnail…サムネイルを作成する # size_x 1画面の横サイズ # size_y 1画面の縦サイズ # rpt_x 横に敷き詰める個数 # rpt_y 縦に敷き詰める個数(0なら動画が終わるまで) # itvl 表示する時間間隔(フレーム) function MovieThumbnail(clip clip, int size_x, int size_y, int rpt_x, int rpt_y, int itvl) { itvl = ((0 < itvl)? itvl: 30) size_x = ((0 < size_x)? size_x: 40) size_y = ((0 < size_y)? size_y: 30) rpt_x = ((0 < rpt_x)? rpt_x: 4) rpt_y = ((0 <= rpt_y)? rpt_y: 4) rpt_y = ((0 != rpt_y)? rpt_y: clip.FrameCount() / (itvl * rpt_x)) clip = clip.LanczosResize(size_x, size_y) return clip.for(0, rpt_y, 1, "StackVertical(c1, c2)" \ , "OffsetFrame(" + String(rpt_x * itvl) + ")") \ .for(0, rpt_x, 1, "StackHorizontal(c1, c2)" \ , "OffsetFrame(" + String(itvl) + ")") }
56 名前:名無しさん@編集中 mailto:sage [2007/01/21(日) 02:44:58 ID:Yk4jAhSw] リアルタイム再生はまず無理ですね。 MovieThumbnail(80, 45, 6, 0, Int(1 * Framerate())) ttp://kasamatusan.sakura.ne.jp/cgi-bin2/src/ichi70983.jpg.html
57 名前:名無しさん@編集中 mailto:sage [2007/01/21(日) 16:13:03 ID:rXgc3GFG] >>54 あまり考えずにレスするけど、Loopじゃダメなん?
58 名前:名無しさん@編集中 mailto:sage [2007/01/21(日) 16:39:30 ID:hz2fdV50] 関数名がforってのは若干違和感が
59 名前:名無しさん@編集中 mailto:sage [2007/01/21(日) 17:45:04 ID:y+OVAsZB] flvやasfとかの音ズレ対策にフレームレート設定にAssumeFPS使うのだけ 覚えて関数とかはいまいちわからんけどとりあえず保存しときたい汚いファイル があんまりないからアニメのOPやCM(実写)ぐらいにしか使っていないのがむなしい
60 名前:名無しさん@編集中 mailto:sage [2007/02/18(日) 06:31:37 ID:oBuNzTjy] # 使用例: EEDI2Bob(type=3, mthreshL=8, mthreshC=6, mthresh=0, lthresh=0, vthresh=0, estr=0, dstr=0, maxd=24, nt=76, pp=1, ColorMatrix="Rec.709->Rec.601") function EEDI2Bob(clip i, int "type", int "cthresh", int "MI", int "blockx", int "blocky", int "mthreshL", int "mthreshC", \ int "mthresh", int "lthresh", int "vthresh", int "estr", int "dstr", int "maxd", int "nt", int "pp", string "ColorMatrix") { TYPE = default(type, 0) CTHRESH = default(cthresh, 6) MI = default(MI, 64) BLOCKX = default(blockx, 16) BLOCKY = default(blocky, 16) MTHRESHL = default(mthreshL, 6) MTHRESHC = default(mthreshC, 6) MTHRESH = default(mthresh, 10) LTHRESH = default(lthresh, 20) VTHRESH = default(vthresh, 20) ESTR = default(estr, 2) DSTR = default(dstr, 4) MAXD = default(maxd, 24) NT = default(nt, 50) PP = default(pp, 1)
61 名前:名無しさん@編集中 mailto:sage [2007/02/18(日) 06:32:36 ID:oBuNzTjy] #CM = default(ColorMatrix, string("Rec.709->Rec.601")) CM = default(ColorMatrix, string("")) TDeint_Bob_Ovrfile = "TDeint_bob_OvrFile.txt" i Exist("TDeint_bob_OvrFile.txt") == false ? WriteFileStart(TDeint_Bob_Ovrfile, """ "#TDeint v1.1 by tritical" """, append=false) : nop() AssumeFrameBased() GetParity(i) ? AssumeTFF() : nop() interp = SeparateFields(i).EEDI2(field=-2, mthresh=MTHRESH, lthresh=LTHRESH, vthresh=VTHRESH, estr=ESTR, dstr=DSTR, maxd=MAXD, nt=NT, pp=PP) TDeint(mode=1, order=-1, type=TYPE, cthresh=CTHRESH, MI=MI, \ blockx=BLOCKX, blocky=BLOCKY, mthreshL=MTHRESHL, mthreshC=MTHRESHC, edeint=interp, ovr="TDeint_bob_OvrFile.txt") vinverse() (CM != "") ? ColorMatrix(mode=CM) : nop() return last }
62 名前:名無しさん@編集中 mailto:sage [2007/02/18(日) 07:16:33 ID:oBuNzTjy] × interp = SeparateFields(i) ○ interp = SeparateFields()
63 名前:名無しさん@編集中 mailto:sage [2007/02/19(月) 04:56:19 ID:HfRiMN2Q] Repairのうまい使い方、何かないでしょうか
64 名前:名無しさん@編集中 mailto:sage [2007/03/16(金) 07:39:29 ID:mwglPUom] | \ __ / _ (m) _ピコーン |ミ| / `´ \ ∧ ∧ (・∀ ・) ノ( )ヽ < > \ / _ `゙`・;`' _バチュ--ン `゙`・;` / `´ \ ∧ ∧ (・∀ ・) ノ( )ヽ < > ∧ ∧ (・∀ ・) <何だっけ ノ( )ヽ < >
65 名前:名無しさん@編集中 mailto:sage [2007/03/28(水) 17:57:09 ID:N7GC8pwl] | \ __ / _ (m) _ピコーン |ミ| / `´ \ ('A`) ノヽノヽ くく | \ __ / _ (m) _ |ミ| / `´ \ `゙`・;`' `゙`・;` バチュ--ン `´ __ (m) |ミ| `´
66 名前:名無しさん@編集中 [2007/04/22(日) 07:08:24 ID:7JqcyONa] /::.::.::/:// .::.::.::.::.::.:./ ! .::.::.::.::.::.::.::.::.::.:|::.::.::.::.::.::.::.::. \ ゝ‐<::./::./ .::.::.::.::\/ | .::.::.::.::.::.:: /::.::.:|::.::.::.::.::.::.::.::: \ 〃 / _ ヽ:/::.::.::.::.::.:/\ |::.::.::.::.::.:: /::.::.:: |::.::.::.::.::.ヽ::.:: {{ / / __ ヽ ',.::/::./ `ー |::.::.::.::.:: / |::.::.:/|_::.::.::.::.:l::.:: . ── | ! /r ) } |イ斤テ左≡ォz /::.::.::.::/ 斗七 !::.::.::.::.::.::.|::.:: . ∧ ヽヽ _/ /::! レヘ :::::::::/ /::.::. / j / | .::.::.::.::.:: |::.:: . , -―ヘ `ー /.::.| rー'゚:::::::/ /::.:/ テ左≠=ヵ::.::.::.::.::. |::.:: ____/ { /.::.::.| ゞ辷zン // う。::::::7 /イ .::. |::.::.::.|::.:: 彡_/ ヽ イ ::.::. | /ヘ:::::::/ |.::.::.:|::.::.:∧::. 〃 V ヽ ヽ.::.: | ヾ辷:ン /:l::.::./!::.:/ l { ∨ }__.::.|\ <! ・ /::.l::|::./│/ DADADADADA!! ヽ ヽ {  ̄ ̄ ̄`ヽ _ イ::.: l::|:/ j/ 、 \ \ } ) / ̄ ̄ ̄l7::.:|::.::.j::l′ /
67 名前:名無しさん@編集中 mailto:sage [2007/04/25(水) 21:22:16 ID:PwHuyyEg] ここはAAじゃなくてAvisynthのスクリプトを貼るスレだと思うんだw
68 名前:名無しさん@編集中 mailto:sage [2007/04/25(水) 21:33:46 ID:8I3cmeoA] エエ アア
69 名前:名無しさん@編集中 mailto:sage [2007/04/26(木) 00:25:35 ID:oR/mgUAw] | \ __ / _ (m) _ピコーン |ミ| / `´ \ ('A`) ノヽノヽ くく \ / _ `゙`・;`' _バチュ--ン `゙`・;` / `´ \ ('A`) ノヽノヽ くく `゙`・;`' `゙`・;` バチュ--ン `´
70 名前:名無しさん@編集中 [2007/04/29(日) 09:35:43 ID:ig/9U22n] __ / -―‐- 、:丶 〃´ \:ヽ {{ __ }.::} _, - ―‐‐┤ \ー‐――'< /.::_/.::.::.::.::|.::.::.::.::.::.::.::.::.::.::.::\ ______//_/____::/|.::{.::.::.::.::.::.::.::.::.ヽ::.::ヽ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ~|lll|'.::|.::|.::.::.:|.::.::.::.::.::.::.l.::.::. ', _ |lll「.::j.::l::.::.::l\⌒.::.::.::|.::.::.::l │ |lll|::ハ.l:.::.:: | ヽ.::.::.: |.::.::.::| │ |lll| ',.::.::.│ \.::.|.::.::. | │ |lll|三 ヽ ::.:|三三7:ヽ|.::.::.`ヽ │ |lll|" \| ""・l.::.::|⌒l:ド、l │ |lll|、 ‘ー'ー' j.::.::|-イ.:| │ |lll|:l>ー‐rーt< リ .::|.: l :| │ |lll|:|_j;斗<_,>/.:: /! ::.: | │ |lll|:| >、 __/.:: / ヽ.::. | ├‐tュ‐‐┬‐tュ――|lll|:| / /.:: / i.::.| │ ‖ ‖ ll |lll|:V ,'.::.:/ .|.::.| │ ‖ ‖ |!____ |lll|.::ヽ i/.:/l |.::.| _j ̄|! ̄`|! ̄|! /  ̄ l\{ W / |.::.|
71 名前:名無しさん@編集中 [2007/05/19(土) 18:30:33 ID:VgCuQEq9] 保守
72 名前:名無しさん@編集中 mailto:sage [2007/06/11(月) 20:59:10 ID:OWCJwgNR] HOSYU
73 名前:名無しさん@編集中 [2007/06/15(金) 23:03:39 ID:5b6j2Ot3] ho
74 名前:名無しさん@編集中 mailto:sage [2007/06/15(金) 23:46:06 ID:yxu6x7yq] | | | |∧_∧ | |´・ω・`) | | o保守o | |―u' """""""""""""""""" | | | |∧_∧ | |´・ω・`) | | o ヽコト | |―u' 保守 """""""""""""""""" | | | | | | | |ミサッ | | 保守 """"""""""""""""""
75 名前:名無しさん@編集中 mailto:sage [2007/06/19(火) 00:31:47 ID:xONiwqyF] function residue(int "a", int "b") { return ( a -(floor(a/b) * b) ) } # 剰余 r = a - q * b function quotient(int "a", int "b") { return floor(a/b) } # 商 function lcm(int "a", int "b") { return ( (a * b) / gcm(a,b) ) } # 最小公倍数 a * b = gcm(a, b) * lcm(a, b) # 最大公約数 gcm(a, b) = gcm(b, r) function gcm(int "a", int "b", int "to") { to = default(to, 30) _a = (a > b) ? a : b _b = (a > b) ? b : a r = residue(_a, _b) return (r == 0) || (to == 0) ? b : gcm2(_b, r, to) } function gcm2(int "a", int "b", int "to") { to = to - 1 r = residue(a, b) a = (r != 0) ? b : a b = (r != 0) ? r : b return gcm(a, b, to) }
76 名前:名無しさん@編集中 mailto:sage [2007/06/19(火) 00:33:36 ID:xONiwqyF] function PARCrop(clip clip, int "mode", int "sar", string "crop_opt", string "dar", int "n", int "offset", \ bool "interlaced", int "PAR_width",int "PAR_height", int "DAR_width", int "DAR_height", bool "show") { mode = default(mode, 1) sar = default(sar, 14) crop_opt = default(crop_opt, "0,0,0,0") dar = default(dar, "16:9") n = default(n, 2) offset = default(offset, 0) interlaced = default(interlaced, false) show = default(show, true) w = ( (sar == 3) || (sar == 5) ) && ( (dar == "4:3") || (dar == "16:9") ) ? 22 * n : 1 h = ( (sar == 3) || (sar == 5) ) && ( (dar == "4:3") || (dar == "16:9") ) ? 15 * n : 1 w = (sar == 14) && (dar == "16:9") ? 4 * n : w h = (sar == 14) && (dar == "16:9") ? 3 * n : h w = (sar == 14) && (dar == "4:3") ? 1 * n : w h = (sar == 14) && (dar == "4:3") ? 1 * n : h w = (sar == 1) && (dar == "16:9") ? 16 * n : w h = (sar == 1) && (dar == "16:9") ? 9 * n : h w = (sar == 1) && (dar == "4:3") ? 4 * n : w h = (sar == 1) && (dar == "4:3") ? 3 * n : h w = (sar == 11) && (dar == "16:9") ? 176 * n : w h = (sar == 11) && (dar == "16:9") ? 135 * n : h w = (sar == 11) && (dar == "4:3") ? 44 * n : w h = (sar == 11) && (dar == "4:3") ? 15 * n : h w = (sar == 17) && (dar == "16:9") ? 704 * n : w h = (sar == 17) && (dar == "16:9") ? 405 * n : h w = (sar == 17) && (dar == "4:3") ? 176 * n : w h = (sar == 17) && (dar == "4:3") ? 135 * n : h
77 名前:名無しさん@編集中 mailto:sage [2007/06/19(火) 00:39:10 ID:xONiwqyF] w = ( defined(PAR_width) == true) ? n * ( (DAR_width * PAR_height) \ / gcm(DAR_width * PAR_height, DAR_height * PAR_width) ) : w h = ( defined(PAR_width) == true) ? n * ( (DAR_height * PAR_width) \ / gcm(DAR_width * PAR_height, DAR_height * PAR_width) ) : h Clip = (clip.isYV12 == true) && (interlaced == true) && (n == 1) \ ? clip.ConverttoRGB24(interlaced=true) \ : (n == 1) ? clip.ConverttoRGB24 \ : clip clip = Eval( "clip.Crop(" + string(crop_opt) + ")" ) x = (mode == 1) ? clip.width : clip.height z = (mode == 1) ? w : h q = quotient(x, z) r = residue (x, z) x = x - r # new_x xが wの倍数になるよう修正 x_q = quotient(r, 2) x_r = residue (r, 2) # 1 or 0 y = (mode == 1) ? h * q : w * q # new_y _y = (mode == 1) ? clip.height - y : clip.width - y y_q = quotient(_y, 2) y_r = residue (_y, 2)
78 名前:名無しさん@編集中 mailto:sage [2007/06/19(火) 00:41:14 ID:xONiwqyF] clip = (mode == 1) ? clip.Crop( x_q + x_r, y_q + y_r - offset, -x_q, -(y_q + offset) ) \ : clip.Crop( y_q + y_r -offset, x_q + x_r, -(y_q + offset), -x_q ) clip2 = clip.Subtitle("DAR_width x PAR_height " + string(w) + " / " + string(h) + " DAR_height x PAR_width", align=2) (mode == 1) ? Clip2.Subtitle( string(x) + " x " + string(y) + ": Crop(" + string(int(x_q + x_r)) +", " \ + string(int(y_q + y_r - offset)) + ", -" + string(x_q) + ", -" + string(y_q + offset) + ")", align=5) \ : clip2.Subtitle( string(y) + " * " + string(x) + ": Crop(" + string(int(y_q + y_r -offset)) +", " \ + string(int(x_q + x_r)) + ", -" + string(y_q + offset) + ", -" + string(x_q) + ")", align=5) return (show == false) ? clip : last } Cropで整数解を求めるための関数。
79 名前:名無しさん@編集中 mailto:sage [2007/06/19(火) 18:44:18 ID:xONiwqyF] w = ( (sar == 3) || (sar == 5) ) && ( (dar == "4:3") || (dar == "16:9") ) ? 22 * n : 1 h = ( (sar == 3) || (sar == 5) ) && ( (dar == "4:3") || (dar == "16:9") ) ? 15 * n : 1 この2行を消して下と交換 (計算間違いしてなければ正しいはず。PAR,DARを直接指定すれば常に正しい。) w = (sar == 3) && (dar == "4:3") ? 22 * n : 1 h = (sar == 3) && (dar == "4:3") ? 15 * n : 1 w = (sar == 3) && (dar == "16:9") ? 88 * n : w h = (sar == 3) && (dar == "16:9") ? 45 * n : h w = (sar == 5) && (dar == "16:9") ? 22 * n : w h = (sar == 5) && (dar == "16:9") ? 15 * n : h w = (sar == 5) && (dar == "4:3") ? 11 * n : w h = (sar == 5) && (dar == "4:3") ? 10 * n : h w = (sar == 19) && (dar == "16:9") ? 3 * n : w h = (sar == 19) && (dar == "16:9") ? 2 * n : h w = (sar == 18) && (dar == "4:3") ? 9 * n : w h = (sar == 18) && (dar == "4:3") ? 8 * n : h
80 名前:名無しさん@編集中 mailto:sage [2007/06/19(火) 18:46:45 ID:xONiwqyF] 720*480 PAR 40:33を縦の解像度を保持して横を削って、PAR 40/33にしたとき DAR 4/3にする。(16/9の額縁 4/3) これを640*480にresizeすればDAR 4/3 PARCrop(mode=2, sar=5, crop_opt="0,0,0,0", dar="4:3", n=2, show=true) 1440*1080 PAR 4:3 額縁 16/9 横のCropだけ指定すると、一番近い整数解で縦も自動でcropする PARCrop(mode=1, sar=14, crop_opt="186,0,-190,0", dar="16:9", n=2, show=true) または、直接指定。このとき、modeとsarは書式に書かない。 PARCrop(mode=1, crop_opt="186,0,-190,0", PAR_width=4, PAR_height=3, DAR_width=16, DAR_height=9, n=1, offset=0, show=true) mode 1 横はそのまま縦をCrop, mode 2: 縦はそのまま横をCrop sar ソースのPARを指定 H.264のレファレンスで決められてるもの。 17,18,19は空き番号。 下のものだけ指定できる。 1: PAR 1/1 1920*1080, 3: PAR 10/11 720(704)*480 5 PAR 40/33 T720(704)*480, 11: PAR 15/11 1440*1080 14: PAR 4/3 1440*1080, 17: PAR 45/44 1920*1080 18 PAR 8/9 BT878A 720*480 19 PAR 32/27 BT878A 720*480 dar "16:9" or "4:3" 目標とするDAR crop_opt Cropのオプションを入力。縦横をどちらかCropする。それに併せて、のこりのCropする量を決める。 n: 1, 2, 4, 8, 16 ,32 ... 縦横がどの倍数になるか指定。 n=1 のときはConverttoRGB24するので注意。 resizeするなら 1か2, インタレエンコなら 16(xvid)か32(x264)(cropのあとresizeはしない) そのままの大きさでエンコするなら 8 か 16。 show 情報を表示するかしないか。 true or false
81 名前:名無しさん@編集中 mailto:sage [2007/06/19(火) 21:30:34 ID:xONiwqyF] 使いにくかったので変更。 デフォルトでCropせずに情報だけ表示。 , bool "show" のあとに , bool "debug") show = default(show, true)を show = default(show, false) debug = default(debug, true) show = (debug == true) ? true : show _clip = clip clip2 = clip.Subtitle("DAR_width x PAR_height " を clip = (debug == true) ? _clip : clip clip2 = clip.Subtitle("DAR_width x PAR_height " + string(w) + " / " + string(h) + " DAR_height x PAR_width", align=5, y=clip.height/2+16) ttp://www.uploda.net/cgi/uploader4/index.php?file_id=0000015101.txt
82 名前:名無しさん@編集中 mailto:sage [2007/06/20(水) 18:55:12 ID:oigiMAG9] >>75 > return (r == 0) || (to == 0) ? b : gcm2(_b, r, to) } _b にしないと a < b かつ gcm(a, b) = a の場合に結果を誤るかと 最大公約数を求めるならそんなに複雑に書かなくても これだけで十分じゃないかな function gcm (int a, int b) { c = a % b return c == 0 ? b : gcm(b, c) }
83 名前:名無しさん@編集中 mailto:sage [2007/06/20(水) 19:46:01 ID:wZUVC6r7] >>82 ありがとう。_bは打ち間違えた。 そして、Avisynthでmodが使えることを今知った。ちょっと感動。 よく見とけばよかった。 ttp://avisynth.org/mediawiki/Operators
84 名前:名無しさん@編集中 mailto:sage [2007/06/20(水) 19:50:35 ID:N1+TPgqA] 何言ってるかまったくわからんぜ
85 名前:名無しさん@編集中 mailto:sage [2007/06/20(水) 20:02:47 ID:5Eh+cIQm] >>84 (・∀・)人(・∀・)
86 名前:名無しさん@編集中 mailto:sage [2007/06/20(水) 22:05:59 ID:gasrkGbR] (・∀・)人(・∀・)人(・∀・)
87 名前:名無しさん@編集中 mailto:sage [2007/06/21(木) 05:15:57 ID:7+ymaJOL] (・∀・)人(・∀・)人(・∀・)人(・∀・)
88 名前:名無しさん@編集中 mailto:sage [2007/06/27(水) 23:02:29 ID:C06STsI0] #24FPSと30FPSが混合された動画を60FPS化する LoadPlugin("Decomb521VFR1.3_P4-Athlon.dll") #ここで動画を読み込む #DirectShowSource以外でもいいが↓の逆テレシネで支障が出ないようにpixel_typeをYV12にしておくこと DirectShowSource("*******.***",pixel_type="YV12") AssumeTFF DoubleWeave Top=SelectEven Bottom=SelectOdd #とりあえず逆テレシネ pixel_typeをYV12以外にするとゴミが出る Interleave(Top.Telecide(order=1,guide=0,post=0,show=false),Bottom.Telecide(order=0,guide=0,post=0,show=false))
89 名前:名無しさん@編集中 mailto:sage [2007/06/30(土) 21:13:06 ID:97Pp0O3z] ## {{{ PARCrop2 function PARCrop2(clip clip, int "mode", string "crop_opt", int "PAR_width",int "PAR_height", int "DAR_width", int "DAR_height", int "n", \ int "offset", int "r_mode", int "resize_n", int "resize_m", bool "r_int", string "r_method", \ string "dvd", int "border", bool "blank", bool "show", bool "debug") { mode = default(mode, 1) crop_opt = default(crop_opt, "0,0,0,0") PAR_width = default(PAR_width, 1) PAR_height = default(PAR_height, 1) DAR_width = default(DAR_width, 16) DAR_height = default(DAR_height, 9) n = default(n, 1) resize_n = (clip.width <= 720) ? default(resize_n, 8) \ : default(resize_n, 16) resize_m = default(resize_m, 0) offset = default(offset, 0) r_mode = default(r_mode, 0) show = default(show, false) debug = default(debug, true) r_mode = (debug == true) ? 0 : r_mode show = (debug == true) ? true : show show = (r_mode > 0) ? false : show r_int = default(r_int, true) dvd = default(dvd, "non") r_method = (dvd == "non") && ( (r_mode == 1) || (resize_m > 0) ) \ ? default(r_method, "Lanczos4Resize") : default(r_method, "LanczosResize") border = (dvd == "16/9") && ( ((DAR_width == 4) && (DAR_height == 3)) || ((DAR_width == 15) && (DAR_height == 11)) ) \ ? default(border, 1) : default(border, 0) blank = default(blank, true) _clip = clip
90 名前:名無しさん@編集中 mailto:sage [2007/06/30(土) 21:14:14 ID:97Pp0O3z] # {{{ crop w = (DAR_width * PAR_height) / gcm(DAR_width * PAR_height, DAR_height * PAR_width) h = (DAR_height * PAR_width) / gcm(DAR_width * PAR_height, DAR_height * PAR_width) _n = 32 / gcm(h, 32) n = (clip.isYV12 == true) && (n == 1) ? 2 : n n = (clip.isYUY2 == true) && (n == 1) && (w%2 != 0) ? 2 : n n = (n == -32) && (_n != 32) ? _n * (16 / _n) : abs(n) # H.264 MBAFF w = n * w h = n * h clip = Eval( "clip.Crop(" + string(crop_opt) + ")" ) x = (mode == 1) ? clip.width : clip.height z = (mode == 1) ? w : h q = quotient(x, z) r = residue (x, z) x = x - r # new_x xが wの倍数になるよう修正 x_q = quotient(r, 2) x_r = residue (r, 2) # 1 or 0 y = (mode == 1) ? h * q : w * q # new_y _y = (mode == 1) ? clip.height - y : clip.width - y y_q = quotient(_y, 2) y_r = residue (_y, 2) xx = (mode == 1) ? x : y yy = (mode == 1) ? y : x # }}}
91 名前:名無しさん@編集中 mailto:sage [2007/06/30(土) 21:15:16 ID:97Pp0O3z] # {{{ DVD dvd_DAR_width = (dvd == "4/3") ? 4 \ : (dvd == "16/9") ? 16 : DAR_width dvd_DAR_height = (dvd == "4/3") ? 3 \ : (dvd == "16/9") ? 9 : DAR_height dvd_DAR_width = (dvd == "4/3") && (DAR_width == 15) && (DAR_height == 11) ? 15 \ : (dvd == "16/9") && (DAR_width == 20) && (DAR_height == 11) ? 20 : dvd_DAR_width dvd_DAR_height = (dvd == "4/3") && (DAR_width == 15) && (DAR_height == 11) ? 11 \ : (dvd == "16/9") && (DAR_width == 20) && (DAR_height == 11) ? 11 : dvd_DAR_height dvd_w = (dvd_DAR_width * PAR_height) / gcm(dvd_DAR_width * PAR_height, dvd_DAR_height * PAR_width) dvd_h = (dvd_DAR_height * PAR_width) / gcm(dvd_DAR_width * PAR_height, dvd_DAR_height * PAR_width) _dvd_width = (border == 0) ? xx : float(yy * dvd_w) / dvd_h _dvd_height = (border == 0) ? float(xx * dvd_h) / dvd_w : yy dvd_width = int(_dvd_width) dvd_height = int(_dvd_height) dvd_width_border = (border == 0) ? 0 : abs(dvd_width - xx) dvd_height_border = (border == 0) ? abs(dvd_height - yy) : 0 dvd_width_border = dvd_width_border / 2 dvd_height_border = dvd_height_border / 2 # }}}
92 名前:名無しさん@編集中 mailto:sage [2007/06/30(土) 21:16:34 ID:97Pp0O3z] # {{{ resize resized_y = yy - residue( yy, lcm(DAR_height, resize_n) ) + ( lcm(DAR_height, resize_n) * resize_m ) resized_y = (r_int == false) ? yy - residue(yy, resize_n) + (resize_n * resize_m) : resized_y resized_x2 = xx - residue( xx, lcm(DAR_width, resize_n) ) + ( lcm(DAR_width, resize_n) * resize_m ) resized_x2 = (r_int == false) ? xx - residue(xx, resize_n) + (resize_n * resize_m) : resized_x2 resized_y = (resize_n == -32) ? yy - residue( yy, lcm(DAR_height, 32) ) + ( lcm(DAR_height, 32) * resize_m ) : resized_y resized_y = (r_int == false) && (resize_n == -32) ? yy - residue(yy, 32) + (32 * resize_m) : resized_y resized_x2 = (resize_n == -32) ? xx - residue( xx, lcm(DAR_width, 16) ) + ( lcm(DAR_width, 16) * resize_m ) : resized_x2 resized_x2 = (r_int == false) && (resize_n == -32) ? xx - residue(xx, 16) + (16 * resize_m) : resized_x2 #_new_PAR_W = resized_y / DAR_height #_new_PAR_H = resized_x2 / DAR_width _new_PAR_W = resized_y * DAR_width _new_PAR_H = resized_x2 * DAR_height new_PAR_W = _new_PAR_W / gcm(_new_PAR_W, _new_PAR_H) new_PAR_H = _new_PAR_H / gcm(_new_PAR_W, _new_PAR_H) resized_x1 = (r_int == false) ? float(resized_y * DAR_width) / float(DAR_height) : (resized_y * DAR_width) / DAR_height _resized_x3 = float(resized_y * w) / h resized_x3 = int(_resized_x3) resized_x = (r_mode == 2) ? resized_x2 \ : (r_mode == 3) ? resized_x3 \ : resized_x1 # }}}
93 名前:名無しさん@編集中 mailto:sage [2007/06/30(土) 21:17:47 ID:97Pp0O3z] clip = (mode == 1) ? clip.Crop( x_q + x_r, y_q + y_r - offset, -x_q, -(y_q + offset) ) \ : clip.Crop( y_q + y_r - offset, x_q + x_r, -(y_q + offset), -x_q ) AddBorders_opt = (border == 0) ? "0, " + string(dvd_height_border) + ", 0, " + string(dvd_height_border) \ : string(dvd_width_border) + ", 0, " + string(dvd_width_border) + ", 0" clip = (dvd == "4/3") || (dvd == "16/9") ? Eval( "clip.AddBorders(" + string(AddBorders_opt) + ")" ) : clip dvd_x = ( (DAR_width == 15) && (DAR_height == 11) ) || ( (DAR_width == 20) && (DAR_height == 11) ) ? 720 : 704 AddBorder = ( (DAR_width == 15) && (DAR_height == 11) ) || ( (DAR_width == 20) && (DAR_height == 11) ) ? 0 : 8 AddBorder = (blank == false) ? 0 : AddBorder dvd_clip = clip clip = (debug == true) ? _clip : clip clip = (dvd == "4/3") || (dvd == "16/9") ? Eval( "clip." + r_method + "(dvd_x, 480).AddBorders(AddBorder, 0, AddBorder, 0)" ) \ : (r_mode > 0) ? Eval( "clip." + r_method + "(resized_x, resized_y)" ) : clip
94 名前:名無しさん@編集中 mailto:sage [2007/06/30(土) 21:22:12 ID:97Pp0O3z] clip2 = clip.Subtitle("DAR_width x PAR_height " + string(w) + " / " \ + string(h) + " DAR_height x PAR_width", align=5, y=clip.height/2+16) clip2 = (n != -32) ? clip2.Subtitle("Resize mode 1 " + string(resized_x1) +" x " + string(resized_y) \ + " PAR 1:1", align=5, y=clip.height/2+48) : clip2 clip2 = (n != -32) ? clip2.Subtitle("Resize mode 2 " + string(resized_x2) +" x " + string(resized_y) \ + " PAR " + string(new_PAR_W) + ":" + string(new_PAR_H), align=5, y=clip.height/2+64) : clip2 clip2 = (n != -32) ? clip2.Subtitle("Resize mode 3 " + string(_resized_x3) +" x " + string(resized_y) \ + " PAR " + string(PAR_width) + ":" + string(PAR_height), align=5, y=clip.height/2+80) : clip2
95 名前:名無しさん@編集中 mailto:sage [2007/06/30(土) 21:22:55 ID:97Pp0O3z] (mode == 1) ? Clip2.Subtitle( string(x) + " x " + string(y) + " : Crop(" + string(int(x_q + x_r)) +", " \ + string(int(y_q + y_r - offset)) + ", -" + string(x_q) + ", -" + string(y_q + offset) + ")", align=5) \ : clip2.Subtitle( string(y) + " * " + string(x) + " : Crop(" + string(int(y_q + y_r - offset)) +", " \ + string(int(x_q + x_r)) + ", -" + string(y_q + offset) + ", -" + string(x_q) + ")", align=5) (dvd == "4/3") || (dvd == "16/9") ? dvd_clip.Subtitle( string(x) + " x " + string(y) + " : Crop(" + string(int(x_q + x_r)) +", " \ + string(int(y_q + y_r - offset)) + ", -" + string(x_q) + ", -" + string(y_q + offset) + ")", align=5 ) \ .Subtitle( "AddBorders(" + AddBorders_opt + ")", align=5, y=dvd_clip.height/2+16 ) \ .Subtitle( " DVD " + string(dvd), align=5, y=dvd_clip.height/2+32 ) \ .Subtitle( "x PAR " + string(dvd_w) + ":" + string(dvd_h), align=5, y=dvd_clip.height/2+48 ) \ .Subtitle( string(_dvd_width) + " x " + string(_dvd_height), align=5, y=dvd_clip.height/2+64 ) : last return (show == false) ? clip : last } ## }}} ### }}} ttp://www.uploda.net/cgi/uploader4/index.php?file_id=0000015685.txt
96 名前:名無しさん@編集中 mailto:sage [2007/06/30(土) 22:57:02 ID:21nVVjVv] ぜんぜんショボくないぞ、このスレどうしちゃったんだ?
97 名前:名無しさん@編集中 mailto:sage [2007/06/30(土) 23:09:15 ID:sDrxlz0v] AVIRead(C:\おれおれ.avi)
98 名前:名無しさん@編集中 mailto:sage [2007/07/01(日) 00:51:50 ID:R+u2GNMU] ('A`)
99 名前:名無しさん@編集中 mailto:sage [2007/07/01(日) 04:49:44 ID:ptd8ZnxD] LoadAviUtlInputPlugin("C:\Program Files\EARTH SOFT\PV3 3.x\AviUtl\EARTH SOFT DV.aui", "EARTHSOFTDV") EARTHSOFTDV(F:\動画.dv) Auto24FPS(true,24,200,"",false) Lanczos4Resize(704,396,190,144,-190,-144) return last 超適当
100 名前:名無しさん@編集中 mailto:sage [2007/07/01(日) 04:51:22 ID:V7aPxUMm] ぜんぜんショボイな、このスレどうしちゃったんだ?
101 名前:名無しさん@編集中 mailto:sage [2007/07/01(日) 05:39:31 ID:X2+xlFy6] MPEG2Source(d2v="__vid__",idct=5) ColorMatrix(scaling=2,interlaced=false,d2v="__vid__") IT(fps = 24,ref="TOP",diMode=3) FrameCache(6).FFT3DFilter(sigma=1.5,plane=4,bw=48,bh=48,bt=3,ow=24,oh=24,svr=0,sharpen=0,interlaced=false,wintype=1) FrameCache(6)._2DCleanYUY2(interlaced=0,thresholdY=6,thresholdU=2,thresholdV=2,radiusX=2,radiusY=2,dmode=0) FrameCache(6).hqdn3d(2) 俺様愛用
102 名前:名無しさん@編集中 mailto:sage [2007/07/14(土) 22:05:21 ID:+g7vyJL5] #24,30FPSの分割が面倒な時用。全部60FPS化で片づける。 function VD_SmartSmoothHiQ(clip, int "diameter", int "threshold", int "amount", string "mode", \ bool "grayscale", bool "weighted_difference", int "maintain_diffweight") { LoadVirtualdubPlugin("D:\data\AVI\Virturaldub\plugins\SmoothHiQ.vdf", "_VD_SmartSmoothHiQ") mode = default(mode, "weighted") mode = (mode=="average") ? 0 : (mode=="weighted") ? 1 : -1 Assert(mode>=0, """VD_SmartSmoothHiQ: "mode" parameter must be "average" or "weighted"""") return clip._VD_SmartSmoothHiQ(default(diameter,5), default(threshold,50), 0, default(amount,254), \ mode, default(grayscale,false)?1:0, default(weighted_difference,true)?1:0, default(maintain_diffweight,0)) } LoadPlugin("MSharpen.dll") LoadPlugin("BruteIVTC.dll") #読むのはMPEG2だよね DirectShowSource("**********", fps=29.97,audio=false,convertfps=true,pixel_type="YV12") AssumeTFF DoubleWeave #とりあえず逆テレシネ BruteIVTC() #ブロックノイズ取り 非常に重い ConvertToRGB() VD_SmartSmoothHiQ(5,50,254,"weighted") ConvertToYV12() #シャープネスフィルタ MSharpen(25,50,true,false,false)
103 名前:名無しさん@編集中 mailto:sage [2007/07/28(土) 20:51:18 ID:iiYDjgNl] #ChangePlaySpeed…再生速度を変更する # speed 再生する速度(倍速指定、“1.0”なら変化無し) # fps 速度変更後のFPS設定(省略・負数なら変化無し) # “0”ならspeedで変化した分だけFPSも変化する # 正数ならその値になる # pitch 音程を変化させるか(省略・偽なら変化なし、trueなら変化する) function ChangePlaySpeed(clip clip, float speed, float "fps", bool "pitch") { fps = default(fps, -1.0) pitch = default(pitch, false) clip = \ ((pitch) \ ? clip.TimeStretch(rate=100.0*speed) \ : clip.TimeStretch(tempo=100.0*speed) \ ) rate = clip.Framerate() clip = \ ((0.0 == fps) \ ? clip.AssumeFPS(rate*speed) \ :(fps < 0.0) \ ? clip.AssumeFPS(rate*speed).ChangeFPS(rate) \ : clip.AssumeFPS(rate*speed).ChangeFPS(fps) \ ) return clip }
104 名前:名無しさん@編集中 mailto:sage [2007/07/28(土) 20:51:57 ID:iiYDjgNl] 絶讃の方でちょうど再生速度が話題になってたので、依然作った関数をUP。 clip_29970fps_60m00s = ColorBars() clip_29970fps_30m00s = clip_29970fps_60m00s.ChangePlaySpeed(2.0) clip_59940fps_30m00s = clip_29970fps_60m00s.ChangePlaySpeed(2.0, fps=0) clip_23976fps_30m00s = clip_29970fps_60m00s.ChangePlaySpeed(2.0, fps=24000.0/1001.0)
105 名前:名無しさん@編集中 [2007/07/30(月) 08:11:25 ID:koRkCv2W] 期待age
106 名前:名無しさん@編集中 mailto:sage [2007/08/01(水) 18:05:14 ID:a1XCC8zN] Import("aufilters.avs") LoadAviUtlInputPlugin("C:\EARTH SOFT DV.aui","EARTHSOFTDV") EARTHSOFTDV("%V") %t #SwapUV() #トップフィールド指定 AssumeFrameBased().ComplementParity() ConvertYUY2ToAviUtlYC() AU_afs(16,16,32,32,0,192,128,24,128,256,3,2,true,true,true,false,false,false,false,true,false,false,true,false) ConvertAviUtlYCToYUY2() Lanczos4Resize(1280,720) ConvertToYV12() #crop( 0, 0, 0, 0) fft3dGPU(mode=1,precision=2) x264afs用
107 名前:名無しさん@編集中 mailto:sage [2007/08/07(火) 23:28:15 ID:XwFE/xCO] >>102 一ヶ月近くも前にレスするのも何だが 全部60fps化するくらいならインタレ保持でよくない?
108 名前:名無しさん@編集中 mailto:sage [2007/08/15(水) 10:05:41 ID:ruyCAS/3] よーし張っちゃうぞー、EasyVFR汎用avs_export用 Filename = "%V" Import("C:\Program Files\AviSynth 2.5\easyvfr.avs") LoadAviUtlInputPlugin("C:\Program Files\AviSynth 2.5\plugins\m2v.aui" ,"Marumo") src = Marumo(Filename) SETMTMODE(2,2) src = src.AssumeTFF().crop(8,0,-8,-0) #a =src.trim(0 , ).IT(fps = 30, ref = "TOP", diMode = 1) #a =src.trim(0 , ).IT(fps = 24, ref = "TOP", diMode = 1) #a =src.trim(0 , ).Doubleweave().Autodeint() a = a.Converttoyv12() #b =src.trim(,).IT(fps = 30, ref = "TOP", diMode = 1) #b =src.trim(,).IT(fps = 24, ref = "TOP", diMode = 1) #b =src.trim(,).Doubleweave().Autodeint() b = b.Converttoyv12() #c =src.trim(,).IT(fps = 30, ref = "TOP", diMode = 1) #c =src.trim(,).IT(fps = 24, ref = "TOP", diMode = 1) #c =src.trim(,).Doubleweave().Autodeint() c = c.Converttoyv12() tcpath = "%u.txt" result = EasyVFR_Create(src, a, tcpath) result = result.EasyVFR_Append(b, tcpath) result = result.EasyVFR_Append(c, tcpath) result return last これだとavsのあるフォルダに同ファイル名でタイムコードが吐き出されて便利
109 名前:名無しさん@編集中 mailto:sage [2007/08/31(金) 19:57:19 ID:/obMkNm5] ('A`) LoadPlugin("Decomb521VFR1.3_P4-Athlon.dll") LoadPlugin("BruteIVTC.dll") AssumeTFF DoubleWeave Top=SelectEven Top=Top.AssumeTFF Top=Top.Telecide(order=1,post=0) Top=Top.BruteIVTC() Bottom=SelectOdd Bottom=Bottom.AssumeBFF Bottom=Bottom.Telecide(order=0,post=0) Bottom=Bottom.BruteIVTC() Interleave(Top,Bottom)
110 名前:名無しさん@編集中 mailto:sage [2007/09/03(月) 16:21:22 ID:o3DYiV3A] 実用性はともかく、そこそこ綺麗な希ガス function upconvByEedi2(clip c){ c function upconvByEedi2_temp(clip c){ c eedi2(field=0) stackvertical(last,flipvertical) try{ spline64resize(width,height/2,0,0.5,0,0.5-height/2) } catch(err_msg){ spline36resize(width,height/2,0,0.5,0,0.5-height/2) } } upconvByEedi2_temp turnright upconvByEedi2_temp turnleft }
111 名前:名無しさん@編集中 mailto:sage [2007/09/03(月) 20:29:18 ID:o3DYiV3A] 二倍程度なら普通のリサイズで十分綺麗な気がしたんで作り直し、使う気は無いけど綺麗だと思うよ。 function eedi2upconv(clip clip,int "target_width",int "target_height",string "eedi2_arguments",string "resizer",string "resizer_arguments"){ clip i0=default(target_width,width*4) i1=default(target_height,round(height*33/40)*4) s0=default(eedi2_arguments,",mthresh=0,lthresh=0,vthresh=0,estr=0,dstr=255,maxd=29,pp=3") s1=default(resizer,"lanczosresize") s2=default(resizer_arguments,",taps=17") eval("eedi2(field=0"+s0+")") turnright eval("eedi2(field=0"+s0+")") turnleft function eedi2upconv_temp(clip c,int "i0",int "i1",string "s"){ c eval("eedi2(field=1"+s+")") turnright eval("eedi2(field=1"+s+")") turnleft return (width<i0)||(height<i1)?eedi2upconv_temp(i0,i1,s):last } (width<i0)||(height<i1)?eedi2upconv_temp(i0,i1,s0):last stackvertical(last,flipvertical) eval(s1+"(width,height/2,0,0.5,0,0.5-height/2"+s2+")") turnright stackvertical(last,flipvertical) eval(s1+"(width,height/2,0,0.5,0,0.5-height/2"+s2+")") turnleft eval(s1+"("+string(i0)+","+string(i1)+s2+")") return last }
112 名前:名無しさん@編集中 mailto:sage [2007/09/04(火) 00:58:22 ID:lJ3C3e5W] eedi2を使って拡大するのか。なるほど。 鼻血が出るほど遅いが、綺麗と云えば綺麗だ。 アイディアは、気に入った。(;´Д`)ハァハァ
113 名前:名無しさん@編集中 mailto:sage [2007/09/04(火) 06:50:03 ID:Bqnm6APc] doomで紹介されてるeedi2のサンプル映像見て吹いた すごいなこのフィルタ。漏れも弄ってみるわ。(;´Д`)ハァハァ
114 名前:名無しさん@編集中 mailto:sage [2007/09/04(火) 18:31:55 ID:YWyMK6kt] >>113 おいおい、そこまで言っておいてURL貼らないのかよ。 生殺しじゃねえか。俺にも(;´Д`)ハァハァさせろ。
115 名前:名無しさん@編集中 mailto:sage [2007/09/04(火) 18:39:29 ID:rarS0dXf] >>113 漏れもずっと探してたんだが見つからない(;´Д`) URLplz
116 名前:名無しさん@編集中 mailto:sage [2007/09/04(火) 20:47:55 ID:YmAPmeD2] >>114-115 >>113 じゃないけど、たぶんこれかな? forum.doom9.org/showthread.php?p=744308#post744308
117 名前:名無しさん@編集中 mailto:sage [2007/09/05(水) 20:34:16 ID:f1ztFbCm] >>116 THX! ん〜・・・、なんか微妙じゃない? そこまで綺麗じゃないきがする。
118 名前:名無しさん@編集中 mailto:sage [2007/09/06(木) 00:09:43 ID:xll7yOhQ] 綺麗にアプコンできるスクリプトorフィルタ随時募集中
119 名前:名無しさん@編集中 mailto:sage [2007/09/06(木) 16:31:53 ID:AC2H2yAr] なんとなく修正 function eedi2upconv(clip clip,int "target_width",int "target_height",string "eedi2_arguments",string "resizer",string "resizer_arguments"){ clip i0=default(target_width,width*2) i1=default(target_height,height*2) s0=default(eedi2_arguments,"") s1=default(resizer,"spline16resize") s2=default(resizer_arguments,"") eval("eedi2(field=0"+s0+")") turnright eval("eedi2(field=0"+s0+")") turnleft function eedi2upconv_temp(clip c,int "i0",int "i1",string "s"){ c eval("eedi2(field=1"+s+")") turnright eval("eedi2(field=1"+s+")") turnleft (width<i0)||(height<i1)?eedi2upconv_temp(i0,i1,s):last } (width<i0)||(height<i1)?eedi2upconv_temp(i0,i1,s0):last stackhorizontal(last,fliphorizontal) stackvertical(last,flipvertical) eval(s1+"("+string(i0)+","+string(i1)+",0.5,0.5,0.5-width/2,0.5-height/2"+s2+")") } 使用例 eedi2upconv(1920*2,1088*2,",mthresh=0,lthresh=0,vthresh=0,estr=0,dstr=0,maxd=29,nt=256,pp=3","lanczosresize",",taps=100") アーティファクトなんて気にしないで補間重視+最強の縮小lanczos100、0.1fpsくらいは出るといいなぁww >>118 EDIUpsizerとかって糞重いフィルタがあるよ、けっこう綺麗な感じ ただ、素直にps3にやってもらった方がいいとは思うけどね
120 名前:名無しさん@編集中 mailto:sage [2007/09/06(木) 21:44:31 ID:xll7yOhQ] ps3にやってもらうって選択肢はあまり素直ではないと思うw
121 名前:名無しさん@編集中 mailto:sage [2007/09/07(金) 03:56:45 ID:PrghOHrm] ttp://forum.doom9.org/showthread.php?p=953820
122 名前:名無しさん@編集中 mailto:sage [2007/09/07(金) 13:13:37 ID:4qAJvCDs] >>121 超既出だったんだねw spline64resize(width,height,width/2,0,width,height) ↑みたいな事できるって知らなかった、教えてくれてアリガト また誰もが思いつきそうなの張ってみる function eedi2blend_sharp(clip c){ c subtract(last,subtract(eedi2blend,last)) eedi2blend } function eedi2blend(clip c){ c getparity==true?assumetff:assumebff separatefields eedi2(field=-2) merge(selecteven,selectodd) } subtract(last,subtract(foo,last)) foo ↑二重化みたいな必ず成果の出る処理に使うと良い感じ、重さは二倍だけどね。
123 名前:名無しさん@編集中 mailto:sage [2007/09/08(土) 22:47:14 ID:DDZ1iCx8] ふむ
124 名前:名無しさん@編集中 mailto:sage [2007/09/24(月) 19:16:40 ID:3nx8T2E9] avis [error]: unsupported input format (DIB ) ('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)('A`)
125 名前:名無しさん@編集中 mailto:sage [2007/10/01(月) 08:33:09 ID:YkC43dtF] これで最終版としてみるか。 #とりあえず逆テレシネ DoubleWeave Top=SelectEven Top=Top.AssumeTFF Top=Top.Telecide(Order=1,Guide=0,Post=0) Top=Top.BruteIVTC Bottom=SelectOdd Bottom=Bottom.AssumeBFF Bottom=Bottom.Telecide(Order=0,Guide=0,Post=0) Bottom=Bottom.BruteIVTC Interleave(Top,Bottom) BruteIVTC #60i部分がなければ省略 Deinterlaced=Interleave(Top.TomsMoComp(1,5,0),Bottom.TomsMoComp(0,5,0)) ConditionalFilter(Telecided,Deinterlaced,Telecided,"IsCombed(40)","equals","true")
126 名前:名無しさん@編集中 [2007/10/06(土) 20:18:19 ID:g9yBKZs6] 超初心者です # プラグインは C:\Program Files\AviSynth 2.5\plugins へ # ソースの読み込み # DVD2AVI 1.76 MPEG2Source("D:\AviSynth\test.d2v") # インタレース解除 TomsMoComp(1, 5, 0) # ノイズ除去 Convolution3D(preset="movieHQ") LanczosResize(640, 480, 0, 8, 704, 480) #Crop(8,0,-8,0) #Lanczos3Resize(640,480) ここまでできたけど・・・ これから、どう発展すればいいの? ちなみにエロDVDをx264でエンコードするつもりです
127 名前:名無しさん@編集中 mailto:sage [2007/10/06(土) 21:09:34 ID:wtmGkTwr] 自分がやりたいように発展させればいいの
128 名前:名無しさん@編集中 mailto:sage [2007/10/06(土) 21:15:14 ID:SsamG/ji] スレ死骸
129 名前:名無しさん@編集中 mailto:sage [2007/10/06(土) 21:18:19 ID:uJWV4LnV] >>126 pc11.2ch.net/test/read.cgi/avi/1176745366/l50 こっちでやる方がいい。 とりあえず # インタレース解除 AssumeTFF DoubleWeave Top=SelectEven Bottom=SelectOdd Interleave(Top.TomsMoComp(1,5,0),Bottom.TomsMoComp(0,5,0)) これをおすすめしてみる。 60FPSになって動きがなめらかになる。
130 名前:名無しさん@編集中 mailto:sage [2007/10/06(土) 21:30:15 ID:g9yBKZs6] >>129 アドバイス、ありがとうございます > 60FPSになって動きがなめらかになる。 サイズが増えると困るんだけど・・・ とりあえずスレを移動します
131 名前:名無しさん@編集中 mailto:sage [2007/10/13(土) 17:18:33 ID:fae6ukTN] 本スレでMCbobを知りめちゃ良かったけど、重くて挫折。0.75fps orz MVbob1をちょこっち改造。 function MVbob2(clip c) { order=(c.getparity==true)? 1:0 bobd=c.leakkernelbob(order=order).verticalreduceby2() fields=c.separatefields() mvf=bobd.mvanalyse(blksize=4,pel=1,isb=false) mvb=bobd.mvanalyse(blksize=4,pel=1,isb=true) even1=c.separatefields().selecteven() odd1a=fields.mvcompensate(mvf,mode=1,thscd1=300).selecteven() odd1b=fields.mvcompensate(mvb,mode=1,thscd1=300).selecteven() odd1=mergeluma(odd1a,odd1b,0.5).mergechroma(odd1b,0.5) even2=c.separatefields().selectodd() odd2a=fields.mvcompensate(mvf,mode=1,thscd1=300).selectodd() odd2b=fields.mvcompensate(mvb,mode=1,thscd1=300).selectodd() odd2=mergeluma(odd2a,odd2b,0.5).mergechroma(odd1b,0.5) even=interleave(even1,odd1).weave() odd=interleave(even2,odd2).weave() interleave(even,odd) } AutoDeintよりはジャギとか消えたけど、格子模様とかはやっぱAutoDeintがいいかも。 4.00fpsに上がった。
132 名前:名無しさん@編集中 mailto:sage [2007/10/15(月) 20:08:22 ID:Q9DGJv/m] ボケないデハロを目指してmasktoolsいじってたら、なぜかアニメ向け2DNRができましたww function SevenFourThreeNR(clip c,int "i0",int "i1",int "i2",string "s",bool "b0",bool "b1"){ i0=default(i0,8)chr(13)i1=default(i1,1)chr(13)i2=default(i2,8)chr(13)s=default(s," 4 3 / ^")chr(13)b0=default(b0,true)chr(13)b1=default(b1,true) function SevenFourThreeNR_f0(clip c,int "i0",int "i1"){mt_average(SevenFourThreeNR_f2(SevenFourThreeNR_f1(c,i1),i1),SevenFourThreeNR_f1(SevenFourThreeNR_f2(c,i1),i1),u=3,v=3)chr(13)1<i0?SevenFourThreeNR_f0(i0-1,i1):last} function SevenFourThreeNR_f1(clip c,int "i"){mt_expand(c,u=3,v=3)chr(13)1<i?SevenFourThreeNR_f1(i-1):last} function SevenFourThreeNR_f2(clip c,int "i"){mt_inpand(c,u=3,v=3)chr(13)1<i?SevenFourThreeNR_f2(i-1):last} function SevenFourThreeNR_f3(clip c0,clip "c1",int "i",string "s"){mt_merge(c0,c1,mt_lutxy(c0,c1,"x y - abs"+s,u=3,v=3),u=3,v=3)chr(13)1<i?SevenFourThreeNR_f3(c1,i-1,s):last} b0?mt_adddiff(mt_makediff(c,SevenFourThreeNR_f3(SevenFourThreeNR_f0(c,i0,i1),c,i2,s),u=3,v=3),c,u=3,v=3):c SevenFourThreeNR_f3(SevenFourThreeNR_f0(last,i0,i1),last,i2,s) b1?SevenFourThreeNR_f3(last,c,i2,s):last } デフォでの動作を簡単に説明するとFrFunっぽい リンギングは結構取れます、弱いエッジしか消えないのでボケてる感じはあまりしません てゆーか、シャープになったりしますww ワープシャープ的に引き締めたりもします 肝心のヘイローには殆ど効いてないみたいだけど、結構面白い関数だと思います
133 名前:名無しさん@編集中 mailto:sage [2007/10/17(水) 14:25:12 ID:wWZOhauC] itvfrで120fのやりかた教えて
134 名前:名無しさん@編集中 [2007/10/26(金) 11:25:58 ID:9jv9MmMl] すまん、初心者的な質問で申し訳ないが、 ユーザ定義関数を作るとき、 一番最初のパラメータclipの名前は引用符なし、 その次のパラメータの名前からは引用符必要ということでいい?
135 名前:名無しさん@編集中 mailto:sage [2007/10/30(火) 21:48:58 ID:kyAX7L9h] >>132 リンギングの取れ具合はすごくいいけど重くて常用はムリww
136 名前:名無しさん@編集中 mailto:sage [2007/11/01(木) 03:54:40 ID:r/DJURjR] リンギングといや、3DNR・2DNRの前にアンシャープマスク掛けるのが好き ボケないしリンギング増加も少ない
137 名前:名無しさん@編集中 mailto:sage [2007/11/02(金) 14:16:03 ID:36XM6NYq] >>132 使うと若干色変わる希ガス
138 名前:名無しさん@編集中 mailto:sage [2007/11/03(土) 04:53:53 ID:jAWR3vCQ] >>132 > リンギングは結構取れます > 肝心のヘイローには殆ど効いてないみたい すみません、ringing と haloing の違い教えてください。 同じ物の単に違う呼び名だと思ってました。 昨晩放送された2001年宇宙の旅の最後のタイムスリップ後シーンとか 結構 haloing がひどいので使ってみましたが確かにあまり効いてないみたいです。
139 名前:名無しさん@編集中 mailto:sage [2007/11/03(土) 15:30:17 ID:1bTpiF2G] >>138 ttp://forum.doom9.org/showthread.php?t=99795
140 名前:名無しさん@編集中 mailto:sage [2007/11/08(木) 11:37:44 ID:ZtXxTKPP] 本スレドコー!?
141 名前:名無しさん@編集中 mailto:sage [2007/11/08(木) 13:05:30 ID:3r41SkE9] 本スレDAT落ちしてた・・・
142 名前:名無しさん@編集中 mailto:sage [2007/11/08(木) 17:43:40 ID:3nEhuLf1] またかよ!
143 名前:名無しさん@編集中 mailto:sage [2007/11/08(木) 17:56:00 ID:3nEhuLf1] スレ立てようかと思うんだけど、何かテンプレに加えたい情報とか直したいこととかある?
144 名前:名無しさん@編集中 mailto:sage [2007/11/08(木) 17:57:30 ID:yzzCvuLH] スレタイをAvisynth総合スレッドへ変更
145 名前:名無しさん@編集中 mailto:sage [2007/11/08(木) 20:54:33 ID:2TD6BldN] 何も足さない 何も引かない
146 名前:名無しさん@編集中 mailto:sage [2007/11/10(土) 16:49:57 ID:VdBqE9fT] このスレ、要らないだろ...
147 名前:名無しさん@編集中 mailto:sage [2007/11/10(土) 17:53:37 ID:fxCD51xA] このスレの方が適切(というか元々前スレのだけど)だと思う KenKunNR2が本スレに貼られてるからね。 俺もたまに作るけど、ショボすぎて人に見せられない。
148 名前:名無しさん@編集中 mailto:sage [2007/11/10(土) 22:51:06 ID:ya9MpQxM] このスレは自作関数を張るスレとして機能している
149 名前:名無しさん@編集中 mailto:sage [2007/11/12(月) 03:42:17 ID:h1VJOAKs] GPU25
150 名前:名無しさん@編集中 mailto:sage [2007/11/12(月) 18:16:13 ID:ArqytBGE] 1080i -> 720pはとにかくプログレにしてリサイズ、だよね?
151 名前:名無しさん@編集中 mailto:sage [2007/11/12(月) 19:13:56 ID:j020roWY] プログレって言うかデインタレね
152 名前:名無しさん@編集中 mailto:sage [2007/11/12(月) 19:56:23 ID:dd4SilXy] いやその言い換えは全く必要ないというかどちらかと言えば逆というかw
153 名前:名無しさん@編集中 mailto:sage [2007/11/12(月) 22:10:55 ID:jqnQi4tB] プログレ:60p デインタレ:30p 俺の認識
154 名前:名無しさん@編集中 mailto:sage [2007/11/13(火) 02:09:58 ID:natu9T7E] p はプログレの p i はインタレースの i 俺の認識
155 名前:名無しさん@編集中 mailto:sage [2007/11/13(火) 10:51:20 ID:6yLAz53/] インタレの話はしていない
156 名前:名無しさん@編集中 mailto:sage [2007/11/18(日) 09:10:51 ID:njisWXGL] #GetPixelType…現在の色空間を取得する function GetPixelType(clip clip) { return \ ((clip.IsYUY2()) \ ? "YUY2" \ :(clip.IsYV12()) \ ? "YV12" \ :(clip.IsRGB32()) \ ? "RGB32" \ :(clip.IsRGB24()) \ ? "RGB24" \ :(clip.IsYUV()) \ ? "YUV" \ :(clip.IsRGB()) \ ? "RGB" \ : "UNKNOWN" \ ) }
157 名前:名無しさん@編集中 mailto:sage [2007/11/18(日) 09:11:50 ID:njisWXGL] #GetPixelType…色空間を設定する # type 色空間 function SetPixelType(clip clip, string type) { return \ ((type == "YUY2") \ ? clip.ConvertToYUY2() \ :(type == "YV12") \ ? clip.ConvertToYV12() \ :(type == "RGB32") \ ? clip.ConvertToRGB32() \ :(type == "RGB24") \ ? clip.ConvertToRGB24() \ :(type == "YUV") \ ? clip.ConvertToYUY() \ :(type == "RGB") \ ? clip.ConvertToRGB() \ : clip \ ) }
158 名前:名無しさん@編集中 mailto:sage [2007/11/18(日) 09:12:49 ID:njisWXGL] #ColorMaskFilter…指定の色にフィルターを掛ける # filter 作用させるフィルタ # color 作用させる色 # tolerance 作用させる色範囲(省略なら0) # 負数なら色範囲外に作用させる # filter_lv フィルタのレベル(省略なら255) function ColorMaskFilter(clip clip, string filter, int color, int "tolerance", int "filter_lv") { tolerance = default(tolerance,0) filter_lv = default(filter_lv,255) width = clip.Width() height = clip.Height() type = clip.GetPixelType() fclip = Eval("clip." + filter) clip = clip.ConvertToRGB32() fclip = fclip.ConvertToRGB32() mask = clip.ColorKeyMask(color, Abs(tolerance)) mask = ((0 <= tolerance)? mask.Invert("A"): mask) fclip = MergeARGB(mask, fclip, fclip, fclip) clip = clip.Layer(fclip, "add", filter_lv) return clip.SetPixelType(type) }
159 名前:名無しさん@編集中 mailto:sage [2007/11/18(日) 09:18:31 ID:njisWXGL] #ReplaceColor…色の置き換え # src_color 置き換え対象の色 # dst_color 置き換え後の色 # tolerance 作用させる色範囲(省略なら0) # 負数なら色範囲外に作用させる function ReplaceColor(clip clip, int src_color, int dst_color, int "tolerance") { tolerance = default(tolerance,0) return clip.ColorMaskFilter("BlankClip(color=" + string(dst_color) + ")", src_color, tolerance) } YUV2 や YV12 でも通りますが、精度は知りません。 RGB:808080 を RGB:00FF00 に置き換える ReplaceColor($808080, $00FF00, 0) >>134 引用符が付いているパラメータは省略出来る 引用符が無いパラメータは使用時に絶対に指定しなければならない (先頭のclipだけ、もう少しややこしいけど省略)
160 名前:134 [2007/11/19(月) 02:27:16 ID:q2R0Hp90] >>159 ありがとう。 WikiのAviSynth入門のスクリプトがうまく動かなかったので どういうことだろうと思っていました。
161 名前:名無しさん@編集中 mailto:sage [2007/12/01(土) 18:04:28 ID:zVMq7PtH] function SevenFourThreeNRv2(clip c,bool "b0",bool "b1",int "i0",string "s0",int "i1",int "i2",\ string "s1",string "s2",int "i3",bool "b2",string "s3"){ function SevenFourThreeNR_0(clip c,bool b1,int i0,string s0,int i1,int i2,string s1,string s2,int\ i3,bool b2,string s3){ function SevenFourThreeNR_0_0(clip c,int i0,string s0,int i1,int i2){ function SevenFourThreeNR_0_0_0(clip c,int i0,string s0,int i1){ i0==0?mt_expand(c,mode=s0):i0==1?mt_logic(c,mt_logic(duplicateframe(deleteframe(c,framecount(c)-1),\ 0),deleteframe(duplicateframe(c,framecount(c)-1),0),"max"),"max"):mt_logic(mt_expand(c,mode=s0),\ mt_logic(duplicateframe(deleteframe(c,framecount(c)-1),0),deleteframe(duplicateframe(c,framecount(c\ )-1),0),"max"),"max") 1<i1?SevenFourThreeNR_0_0_0(i0,s0,i1-1):last } function SevenFourThreeNR_0_0_1(clip c,int i0,string s0,int i1){ i0==0?mt_inpand(c,mode=s0):i0==1?mt_logic(c,mt_logic(duplicateframe(deleteframe(c,framecount(c)-1),\ 0),deleteframe(duplicateframe(c,framecount(c)-1),0),"min"),"min"):mt_logic(mt_inpand(c,mode=s0),\ mt_logic(duplicateframe(deleteframe(c,framecount(c)-1),0),deleteframe(duplicateframe(c,framecount(c\ )-1),0),"min"),"min") 1<i1?SevenFourThreeNR_0_0_1(i0,s0,i1-1):last } mt_average(SevenFourThreeNR_0_0_1(SevenFourThreeNR_0_0_0(c,i0,s0,i1),i0,s0,i1),\ SevenFourThreeNR_0_0_0(SevenFourThreeNR_0_0_1(c,i0,s0,i1),i0,s0,i1)) 1<i2?SevenFourThreeNR_0_0(i0,s0,i1,i2-1):last } function SevenFourThreeNR_0_1(clip c0,clip c1,string s1,string s2,int i3){ mt_lutxy(c0,c1,"x y - abs"+s1+" "+s2+" < x y - abs"+s1+" x * "+s2+" x y - abs"+s1+" - y * + "+s2+\ " / x ?")
162 名前:名無しさん@編集中 mailto:sage [2007/12/01(土) 18:04:55 ID:zVMq7PtH] 1<i3?SevenFourThreeNR_0_1(c0,last,s1,s2,i3-1):last } b3=isyv12(c) c0=b3?c:converttoyv12(c) b1?mt_adddiff(mt_makediff(c0,SevenFourThreeNR_0_1(c0,SevenFourThreeNR_0_0(c0,i0,s0,i1,i2),s1,s2,i3)\ ),c0):c0 SevenFourThreeNR_0_1(SevenFourThreeNR_0_0(i0,s0,i1,i2),s1,s2,i3) b1?SevenFourThreeNR_0_1(c0,last,s1,s2,i3):last b2?mt_clamp(last,mt_expand(c0,mode=s3),mt_inpand(c0,mode=s3)):last b3?last:converttoyuy2 } b0=default(b0,true) b1=default(b1,true) i0=default(i0,0) s0=default(s0,"square") i1=default(i1,1) i2=default(i2,8) s1=default(s1," 4 3 / ^") s2=default(s2,"256") i3=default(i3,8) b2=default(b2,false) s3=default(s3,"square") i4=b0?8:4 i5=isyv12(c)&&b0?8:4 i6=ceil(width(c)/i4)*i4 i7=ceil(height(c)/i5)*i5 pointresize(c,i6,i7,0,0,i6,i7) b0?ytouv(SevenFourThreeNR_0(utoy,b1,i0,s0,i1,i2,s1,s2,i3,b2,s3),SevenFourThreeNR_0(vtoy,b1,i0,s0,i1\ ,i2,s1,s2,i3,b2,s3),SevenFourThreeNR_0(b1,i0,s0,i1,i2,s1,s2,i3,b2,s3)):mergeluma(SevenFourThreeNR_0\ (b1,i0,s0,i1,i2,s1,s2,i3,b2,s3)) crop(0,0,width(c),height(c)) }
163 名前:名無しさん@編集中 mailto:sage [2007/12/01(土) 18:32:53 ID:Do9BIsOR] なんすかこれ
164 名前:名無しさん@編集中 mailto:sage [2007/12/01(土) 18:57:33 ID:zVMq7PtH] 久しぶりにとある板のとあるスレを見たらSevenFourThreeNR使ってる人がいたので、何となくヴァージョンあっぷ 変更点 YUY2に対応、Yのみを可能に、時間軸追加etc. 引数について b0 UVをどうするか、trueでYUV、falseでYのみ b1 foo(subtract(last,subtract(foo,last)))的な事をするかどうか、trueでやる i0 ぼかし方、0で2D、1で時間軸、それ以外3D・・なのかなぁ?、2D以外はてきとーだから無駄が多い s0 ぼかす時のmt_expandとmt_inpandのモード i1 ぼかす範囲、大きくすると糞重い、1〜3程度で i2 ぼかす回数、良く解らんけど8〜9回ぐらいで変化しなくなる、少ないと軽い、2〜4ぐらいで十分な気もする s1 元に戻す強さに影響、s2,i3と一緒に弄る s2 元に戻す強さに影響 i3 元に戻す回数、少ないと軽い b2 時間軸用の制限の有無、trueで制限あり、2Dでは意味無し s3 時間軸用の制限のmt_expandとmt_inpandのモード 使用例 SevenFourThreeNRv2#前の奴のデフォとほぼ同じ SevenFourThreeNRv2(i1=2)#より強く SevenFourThreeNRv2(s0=mt_square(2))#上と同じ、でもこっちの方が重い SevenFourThreeNRv2(b1=false,s0="both",s1=" 1 2 / ^",s2="255 1 2 / ^",i3=10)#デハロ? SevenFourThreeNRv2(b1=false,i0=1,s1=" 3 4 / ^",s2="255 3 4 / ^",i3=10,b2=true,s3="both")#ドット妨害クロスカラー除去?、メモリ食いすぎwwwSDで700Mとかwwwww SevenFourThreeNRv2(b1=false,i0=743,s0="both",s1=" 3 4 / ^",s2="255 3 4 / ^",i3=10,b2=true,s3="both")#ほんとに3Dなの?、↑よりさらにメモリ食う ノシ
165 名前:名無しさん@編集中 mailto:sage [2007/12/01(土) 21:53:52 ID:zVMq7PtH] なんか知らんけど、一番最後の crop(0,0,width(c),height(c)) がうまく機能してなさそうなんで pointresize(width(c),height(c),0,0,width(c),height(c)) これに差し替えで・・・ >>163 >132をチョコッと弄ったデリンギングな関数のつもり、実際は良く解らん
166 名前:名無しさん@編集中 mailto:sage [2007/12/04(火) 13:49:36 ID:Ns7x44F8] Vinverseもどき mt_adddiff(last,mt_lutxy(mt_makediff(mt_convolution("1","1 2 1",u=3,v=3),last,u=3,v=3),mt_makediff(mt_convolution("1",\ "-1 1 4 1 -1",u=3,v=3),last,u=3,v=3),"x 128 - y 128 - * 0 > x 128 - abs y 128 - abs < x y ? 128 ?",u=3,v=3),u=3,v=3)
167 名前:名無しさん@編集中 mailto:sage [2007/12/11(火) 20:05:46 ID:DLfn2Ofv] ほしゅ
168 名前:名無しさん@編集中 mailto:sage [2007/12/12(水) 23:01:50 ID:ZNfNyDle] x264 カスタムマトリクス調整 & ノイズ調整 スクリプト 第3版 ttp://www.uploda.net/cgi/uploader4/index.php?file_id=0000023520.zip lumimaskにint型指定できるSSIM.dllが必要。 SSIM / Lumimask For Measuring Codec Quality ttp://forum.doom9.org/showthread.php?t=92532 source ttp://forum.doom9.org/showthread.php?p=862104#post862104 binary ttp://forum.doom9.org/showthread.php?p=698521#post698521
169 名前:名無しさん@編集中 mailto:sage [2007/12/14(金) 02:11:44 ID:vuXQXNV+] 色空間変換・Layer を使わずに指定範囲・指定エリアにフィルタをかける関数 ttp://www.uploda.net/cgi/uploader4/index.php?file_id=0000023573.zip
170 名前:名無しさん@編集中 mailto:sage [2007/12/14(金) 18:16:13 ID:QDdKu/SO] 皆さん、こんにちは〜 結構良い感じのドット妨害除去ができたんでうpってみます。 ttp://kininaruweb.sakura.ne.jp/uploader/src1/happa3796.rar 名前は「NR」、・・・そのまんまです たぶんYV12でしか動かない 引数がclip1つだけなんで、使い方はNR() とか nr とか Nr とか nR(last) とかそんな感じで 実際の処理は function NR_uf(clip c){ c c0=duplicateframe(deleteframe(framecount-1),0) c1=deleteframe(duplicateframe(framecount-1),0) merge(\ mt_logic(mt_logic(mt_inpand(mode="horizontal",u=3,v=3),mt_inpand(mode="vertical",u=3,v=3),"max",u=3,v=3),mt_logic(last,mt_logic(c0,c1,"min",u=3,v=3),"min",u=3,v=3),"max",u=3,v=3),\ mt_logic(mt_logic(mt_expand(mode="horizontal",u=3,v=3),mt_expand(mode="vertical",u=3,v=3),"min",u=3,v=3),mt_logic(last,mt_logic(c0,c1,"max",u=3,v=3),"max",u=3,v=3),"min",u=3,v=3)\ ) } こんなの、てか結果はまるっきり一緒 縦横時間でそれぞれ最大最小を求めて、最大の中の最小と、最小の中の最大の平均を返す・・みたいな? コンパイラにSSEとSSE2使う様に頼んどいたんで、両方使える環境じゃないとまずい思う c++触ったの初めてなんで動いたとか動かないとか教えてもらえるとうれしいです。 ノシ
171 名前:名無しさん@編集中 mailto:sage [2007/12/14(金) 23:29:01 ID:m+fmtO/5] 君らは来るスレを微妙に間違えてる気がしなくも無い
172 名前:名無しさん@編集中 mailto:sage [2007/12/20(木) 11:55:17 ID:Ze2ZKlCQ] nürüpo守
173 名前:名無しさん@編集中 mailto:sage [2007/12/20(木) 11:56:43 ID:LpNJZ0sg] ガッ (・∀・)
174 名前:名無しさん@編集中 mailto:sage [2007/12/21(金) 16:17:29 ID:JHSDTI/N] NicAC3Source(***) #音声の長さ分の映像を足す function addvideo(clip c) { blankclip(length = int(100.0 * AudioLengthF(c) / float(audiorate(c))), fps=100) return audiodub(last,c) } addvideo() #AudioDubEx(BlankClip(length=Int(120*AudioLengthF(last)/Audiorate(last)), width=32, height=32, pixel_type="RGB24", fps=120), last) Soundout(output="cmd", filename="ぱす\audio.mp4", type=0, autoclose=true, executable="ぱす\neroaacenc.exe", prefilename="-ignorelength -q 0.5 -if - -of") #SoundOut(output="WAV",filename="output.wav", autoclose = true, showprogress=true, overwritefile="Yes") #AC3 6ch用 #Soundout(output="cmd", filename="ぱす\audio.mp4", type=0, autoclose=true, executable="ぱす\neroaacenc.exe", prefilename="-ignorelength -br 256000 -if - -of") AvsPの拡張子別テンプレートに登録しておけば空白のタブにD&D後 プレビュー窓をだした瞬間エンコが始まります。
175 名前:名無しさん@編集中 mailto:sage [2007/12/28(金) 05:13:27 ID:5UN9eizQ] >>89 これはどうやって使えばいいんだ?
176 名前:名無しさん@編集中 mailto:sage [2008/01/01(火) 00:17:12 ID:UGGsjhoK] 元日保守
177 名前:名無しさん@編集中 mailto:sage [2008/01/01(火) 01:25:48 ID:5Qbvz5i3] 元日保守
178 名前:名無しさん@編集中 mailto:sage [2008/01/01(火) 14:40:44 ID:/o0090QP] function seven43upconv(clip c,int target_width,int target_height,float "src_left",float "src_top",float "src_width",float "src_height"){ src_left=default(src_left,0.) src_top=default(src_top,0.) src_width=default(src_width,width(c)*1.) src_width=src_width<=0?width(c)-src_left+src_width:src_width src_height=default(src_height,height(c)*1.) src_height=src_height<=0?height(c)-src_top+src_height:src_height rf="spline64resize" try{ eval(rf+"(c,width(c),height(c))") } catch(err_msg){ rf="lanczosresize" } eval("bicubicresize(c,"+string(target_width*3)+","+string(target_height*3)+",1.,0.,"+string(src_left)+","+string(src_top)+","+string(src_width)+","+string(src_height)+")") eval(rf+"(width(c),height(c),"+string(src_left*width/src_width*-1)+","+string(src_top*height/src_height*-1)+","+string(width(c)*width/src_width)+","+string(height(c)*height/src_height)+")") mt_adddiff(c,mt_makediff(c,last,u=3,v=3),u=3,v=3) eval("bicubicresize("+string(target_width*3)+","+string(target_height*3)+",1.,0.,"+string(src_left)+","+string(src_top)+","+string(src_width)+","+string(src_height)+")") mt_adddiff(last,mt_makediff(last,mt_convolution("1 1 1","1 1 1",u=3,v=3),u=3,v=3),u=3,v=3) mt_adddiff(last,mt_lutxy(mt_makediff(mt_expand(u=3,v=3),last,u=3,v=3),mt_makediff(mt_inpand(u=3,v=3),last,u=3,v=3),"x 128 - 128 y - < x x 128 - 128 y - > y 128 ? ?",u=3,v=3),u=3,v=3) eval(rf+"(target_width,target_height)") } ボケるけどジャギら無いバイキュービックb=1.,c=0.の拡大にアンシャープマスク、ssxsharpenをあわせてみたら。。。。糞重い
179 名前:名無しさん@編集中 mailto:sage [2008/01/01(火) 14:45:29 ID:xZtbbjdB] >>178 肝心の効果はどうなん?
180 名前:名無しさん@編集中 mailto:sage [2008/01/01(火) 15:10:20 ID:/o0090QP] >>179 そこそこww nnedi(0,true).turnleft.nnedi(0,true).turnright には負ける(ssxsharpenのせいで>178の方が不自然)けど lanczosresize(nnedi(0,true).turnright.nnedi(0,true).turnleft,width*2,height*2,.5,.5,width*2,height*2) になら勝ってる(半ピクセルずらすとかなりへぼくなる)と思う。
181 名前:名無しさん@編集中 mailto:sage [2008/01/01(火) 17:08:39 ID:/o0090QP] function seven43upconv(clip c,int target_width,int target_height,float "src_left",float "src_top",float "src_width",float "src_height",int "taps"){ src_left=default(src_left,0.) src_top=default(src_top,0.) src_width=default(src_width,width(c)*1.) src_width=src_width<=0?width(c)-src_left+src_width:src_width src_height=default(src_height,height(c)*1.) src_height=src_height<=0?height(c)-src_top+src_height:src_height taps=default(taps,3) eval("bicubicresize(c,"+string(target_width*4)+","+string(target_height*4)+",1.,0.,"+string(src_left)+","+string(src_top)+","+string(src_width)+","+string(src_height)+")") eval("lanczosresize(width(c),height(c),"+string(src_left*width/src_width*-1)+","+string(src_top*height/src_height*-1)+","+string(width(c)*width/src_width)+","+string(height(c)*height/src_height)+","+string(taps)+")") mt_adddiff(c,mt_makediff(c,last,u=3,v=3),u=3,v=3) eval("bicubicresize("+string(target_width*4)+","+string(target_height*4)+",1.,0.,"+string(src_left)+","+string(src_top)+","+string(src_width)+","+string(src_height)+")") mt_adddiff(last,mt_lutxy(mt_makediff(mt_expand(u=3,v=3),last,u=3,v=3),mt_makediff(mt_inpand(u=3,v=3),last,u=3,v=3),"x 128 - 128 y - < x x 128 - 128 y - > y 128 ? ?",u=3,v=3),u=3,v=3) mt_adddiff(last,mt_makediff(last,mt_convolution(u=3,v=3),u=3,v=3),u=3,v=3) eval("lanczosresize(target_width,target_height,taps="+string(taps)+")") } とりあえず>178は無かったことに・・・ なんか二回目のアンシャープマスクが逆効果だったみたいだから順番入れ替え ダウンサンプリングをspline64からlanczosに変更 結局eedi2にもnnediにも勝てそうに無いwwwww プラグイン化したら速度でなら勝てそうだけどMitchellNetravaliとかウザイ
182 名前:名無しさん@編集中 mailto:sage [2008/01/01(火) 18:43:45 ID:/o0090QP] 何度もサーセン 予定とはかなり違うけど seven43upconv(width,height) こんな感じで使えばかなり良い感じのだったので報告 bicubic(b=1,c=0)+lanczosでssxsharpenすると適当にNR、dehaloがかかってアニメ的に綺麗なのは知ってたけど それとは違ってLimitedSharpenみたいな方向に良い感じ、もちろん糞重いけど あと、 mt_adddiff(last,mt_lutxy(mt_makediff(mt_expand(u=3,v=3),last,u=3,v=3),mt_makediff(mt_inpand(u=3,v=3),last,u=3,v=3),"x 128 - 128 y - < x x 128 - 128 y - > y 128 ? ?",u=3,v=3),u=3,v=3) mt_adddiff(last,mt_makediff(last,mt_convolution(u=3,v=3),u=3,v=3),u=3,v=3) ↑をプラグイン化してみたけど焼け石にm(ryなかんじでしたOT2 てか俺のIDかっこよくね?
183 名前:名無しさん@編集中 [2008/01/02(水) 13:30:06 ID:dT/7RLw8] 一晩でAvisynth使えるようになった俺すげー SourceDir = "D:\bs\" SourceName = "1" RangeName = "1" MPEG2Source("D:\bs\1.d2v") AC3source("D:\bs\1.ac3") AssumeTFF() #フィールドオーダー指定(トップ先行) FrameCache(9).AutoDeint("") Crop(8, 0, 704, 480) Convolution3D(preset="movieHQ") LanczosResize(640,480) return last #おわり
184 名前:名無しさん@編集中 mailto:sage [2008/01/04(金) 21:28:48 ID:XJEnjgg3] AviSynthが使えるっていうのは 3項演算子と再帰呼び出しでループする関数が作れるレベルじゃねの?
185 名前:名無しさん@編集中 [2008/01/05(土) 16:07:16 ID:+PGupEZ0] avisynth使い始めて、7,8年になるが、年々フィルターが減って、 今では、 video = mpeg2source("〜") audio = wavSource("〜") AudioDub(video, audio) trim(1,100) これだけ・・・
186 名前:名無しさん@編集中 mailto:sage [2008/01/05(土) 16:17:04 ID:gIh2Q5cD] どんだけ〜
187 名前:名無しさん@編集中 mailto:sage [2008/01/05(土) 16:25:48 ID:ih6R9AbJ] HDキャプでインターレース保持なら短いかも。
188 名前:名無しさん@編集中 mailto:sage [2008/01/05(土) 18:05:02 ID:uirNb8/z] だよね、フィルタかけなくても奇麗だし
189 名前:名無しさん@編集中 mailto:sage [2008/01/05(土) 18:19:24 ID:2bk43Qb0] >>188 眼科池
190 名前:名無しさん@編集中 mailto:sage [2008/01/05(土) 20:41:22 ID:ih6R9AbJ] >>189 デコーダーの進化に興味はないのか?
191 名前:名無しさん@編集中 mailto:sage [2008/01/05(土) 21:05:38 ID:/j7rleaz] 画質は糞目だから何とも言わないが アナログD3キャプチャだとfft3dgpu掛けると結構縮むよ。
192 名前:名無しさん@編集中 mailto:sage [2008/01/05(土) 21:48:28 ID:XF0s/U/h] 顔に見えるネ ("〜")
193 名前:名無しさん@編集中 mailto:sage [2008/01/07(月) 15:33:49 ID:Dvrk4O3t] ↓から function nnediresize(clip c,int target_width,int target_height,float "src_left",float "src_top",\ float "src_width",float "src_height",int "taps",bool "merge_turn180",bool "merge_invert"){ src_left=default(src_left,0.) src_top=default(src_top,0.) src_width=default(src_width,float(width(c))) src_height=default(src_height,float(height(c))) src_width=src_width<=0.?float(width(c))-src_left+src_width:src_width src_height=src_height<=0.?float(height(c))-src_top+src_height:src_height taps=default(taps,3) merge_turn180=default(merge_turn180,false) merge_invert=default(merge_invert,false) function nnediresize_resample(clip c,float subrange_left,float subrange_top,float subrange_width,\ float subrange_height,int target_width,int target_height,int taps){ subrange_width<float(target_width)||subrange_height<float(target_height)?subrange_height*float(\ target_width)<subrange_width*float(target_height)?nnediresize_resample(nnedi(c,0,true),\ subrange_left,subrange_top*2.+.5,subrange_width,subrange_height*2.,target_width,target_height,taps\ ):nnediresize_resample(turnleft(nnedi(turnright(c),0,true)),subrange_left*2.+.5,subrange_top,\ subrange_width*2.,subrange_height,target_width,target_height,taps):lanczosresize(c,target_width,\ target_height,subrange_left,subrange_top,subrange_width,subrange_height,taps) } nnediresize_resample(c,src_left,src_top,src_width,src_height,target_width,target_height,taps) merge_turn180?merge(last,turn180(nnediresize_resample(turn180(c),float(width(c))-src_left-\ src_width,float(height(c))-src_top-src_height,src_width,src_height,target_width,target_height,taps\ ))):last merge_invert?merge_turn180?merge(last,invert(merge(nnediresize_resample(invert(c),src_left,src_top\ ,src_width,src_height,target_width,target_height,taps),turn180(nnediresize_resample(turn180(invert\
194 名前:名無しさん@編集中 mailto:sage [2008/01/07(月) 15:34:06 ID:Dvrk4O3t] (c)),float(width(c))-src_left-src_width,float(height(c))-src_top-src_height,src_width,src_height,\ target_width,target_height,taps))))):merge(last,invert(nnediresize_resample(invert(c),src_left,\ src_top,src_width,src_height,target_width,target_height,taps))):last } ↑まで >184の言う"3項演算子と再帰呼び出しでループする関数"ってこんな感じで良いの? もしかして俺ってAviSynth使えてる?
195 名前:名無しさん@編集中 mailto:sage [2008/01/13(日) 05:31:59 ID:sImB7R5t] #MTp…MTiの擬似プログレッシブ対応 # filter 実行するフィルタ # # 既知の不具合 # 時間軸系フィルタは上手く動作しません # YV12では上手く動作しません # MTiで使用出来ないフィルタは使用出来ません function MTp(clip clip, string filter) { tff = clip.GetParity() clip = clip.AssumeTFF() clip = Interleave(clip.SelectEvery(2, 0), clip.SelectEvery(2, 1)) clip = clip.AssumeFieldBased() clip = clip.Weave() clip = clip.AssumeFrameBased() clip = clip.MTi(filter) clip = clip.SeparateFields() clip = clip.AssumeFrameBased() clip = ((tff)? clip.AssumeTFF(): clip.AssumeBFF()) return clip } MTp("""subtitle("保守")""")
196 名前:名無しさん@編集中 mailto:sage [2008/01/14(月) 15:05:52 ID:pPBfz4B1] DVDアプコンをEDIUpsizer使ってやろうとしたら、死ぬほど重たいですね。 シングルスレッドでしか動かないので、クアッドコアとか持ち腐れ気味。 誰か、適度に使えるアプコンスクリプトplz
197 名前:名無しさん@編集中 mailto:sage [2008/01/15(火) 22:55:44 ID:7Mxa1bv4] >>196 つPS3
198 名前:名無しさん@編集中 mailto:sage [2008/01/15(火) 23:17:02 ID:KtRfAcqU] PS3のアプコンはDRCの劣化版ゴミ
199 名前:名無しさん@編集中 mailto:sage [2008/01/15(火) 23:31:02 ID:vhrCFnTl] そのゴミの画質になかなか追いつけないし、画質的に追いつけても時間が・・・・ リアルタイム処理であれだけの画質をあれだけの値段の機器でやってしまうのは あらためてすごいと思う今日この頃。
200 名前:名無しさん@編集中 mailto:sage [2008/01/15(火) 23:33:46 ID:Wzuhq1ws] 相手にするな
201 名前:名無しさん@編集中 mailto:sage [2008/01/16(水) 09:11:04 ID:iGFrIdKa] 1 名前:名無しさん@編集中[] 投稿日:2008/01/14(月) 18:46:44 ID:pPBfz4B1 アプコンに関する専門スレを立ててみた。 Avisynth等を用いて、PS3アプコンを越える画質を作る方法を 研究するスレ。語って下さい。
202 名前:名無しさん@編集中 mailto:sage [2008/01/16(水) 09:15:56 ID:4S3cgOY/] >>201 [Avisnth]アプコン技術総合[PS3] pc11.2ch.net/test/read.cgi/avi/1200304004/ snthwwwwwwwwwwwww
203 名前:名無しさん@編集中 mailto:sage [2008/01/16(水) 09:44:01 ID:7OiAWSUR] 糞スレ立てるなよw
204 名前:名無しさん@編集中 mailto:sage [2008/01/16(水) 16:02:32 ID:aRaMhix6] ↓から function nnediresize(clip,int target_width,int target_height,float "src_left",float "src_top",float "src_width",float "src_height",int "taps",bool "merge_turn180",bool "merge_invert"){a=clip b=target_width chr(13)c=target_height chr(13)d=default(src_left,0.)chr(13)d=isfloat(d)?d:float(d)chr(13)e=default(src_top,0.)chr(13)e=isfloat(e)?e:float(e)chr(13)f=float(width(a)) g=default(src_width,f)chr(13)g=isfloat(g)?g:float(g)chr(13)g=g<=0.?f-d+g:g chr(13)h=float(height(a))chr(13)i=default(src_height,h)chr(13)i=isfloat(i)?i:float(i)chr(13)i=i<=0.?h-e+i:i j=default(taps,3)chr(13)k=default(merge_turn180,false)chr(13)l=k?f-d-g:0.chr(13)m=k?h-e-i:0.chr(13)n=default(merge_invert,false) function nnediresize_(a,float b,float c,float d,float e,int f,int g,int h){i=float(f)chr(13)j=float(g) d<i||e<j?e*i<d*j?nnediresize_(nnedi(a,0,true),b,c*2.+.5,d,e*2.,f,g,h):nnediresize_(turnleft(nnedi(turnright(a),0,true)),b*2.+.5,c,d*2.,e,f,g,h):lanczosresize(a,f,g,b,c,d,e,h)} nnediresize_(a,d,e,g,i,b,c,j)chr(13)k?merge(last,turn180(nnediresize_(turn180(a),l,m,g,i,b,c,j))):last n?k?merge(last,invert(merge(nnediresize_(invert(a),d,e,g,i,b,c,j),turn180(nnediresize_(turn180(invert(a)),l,m,g,i,b,c,j))))):merge(last,invert(nnediresize_(invert(a),d,e,g,i,b,c,j))):last} ↑まで >193-194からの変更点 1 src_leftとかがint型も受け取るみたいだったのでfloat型にキャストを追加 2 同じ計算を何度もしてたのを変数に入れるようにした 3 変数の名前をシンプルにしてみた 4 改行位置を変えた 3と4はホントどーでも良いことで nnediが重過ぎるから2もそれほど重要じゃないはずだし 割り算してないから1も実は無意味だったりします てかfloat指定の引数にintが入るとかあるんだね、勝手にキャストしてくれると思ってたよ int/floatのつもりが実はint/intだったりとか怖いなぁ
205 名前:名無しさん@編集中 mailto:sage [2008/01/18(金) 00:14:56 ID:Iixs4I8W] >>55 の修正・拡張 #OffsetFrame…現在のフレームとは違うフレームの画像を表示する # ofst 表示するフレームの位置(+1なら次のフレーム、-1なら前のフレーム) # audio オーディオの同期(省略なら同期、偽なら非同期) function OffsetFrame(clip clip, int ofst, bool "audio") { audio = default(audio, true) clip = ((0 < ofst) \ ? clip.Trim(ofst,0) \ :(ofst < 0) \ ? clip.Loop((-ofst)+1, 0, 0) \ : clip \ ) clip = ((clip.HasAudio() && !audio) \ ? clip.DelayAudio(Float(ofst) / clip.Framerate()) \ : clip \ ) return clip }
206 名前:名無しさん@編集中 mailto:sage [2008/01/18(金) 00:15:23 ID:Iixs4I8W] >>54 の修正・拡張 #for…繰り返し処理を行う # start 値の初期値 # end 値の終了値 # step 刻み値 # filter 繰り返し分適応させるフィルタ(省略すると何もしません、“""”でも省略扱いです。) # 繰り返しの値は“i”もしくは“crnt”で取得出来ます # merge クリップ結合関数(省略すると最後に作成したクリップを返します、“""”でも省略扱いです。) # 繰り返し途中に作成したクリップは早めに生成されたクリップが“c1”、 # 遅めに生成されたクリップが“c2”になります # この2つのクリップを1つのクリップに結合します。 function for(clip clip, int start, int end, int step, string "filter", string "merge") { filter = default(filter, "") merge = default(merge, "") merge = (("" != merge)? merge: "c1") i = start crnt = start next = crnt + step c1 = clip c2 = (("" != filter)? Eval("clip." + filter): clip) c2 = ((next < end) ? c2.for(next, end, step, filter, merge): c2) return ((next < end)? Eval(merge): c1) }
207 名前:名無しさん@編集中 mailto:sage [2008/01/18(金) 00:16:25 ID:Iixs4I8W] #FrameToStack…複数のフレームを1フレームに統合する # num 統合数 # horizontal 横に並べる(省略・偽なら縦並べ、真なら横並べ) function FrameToStack(clip clip, int num, bool "horizontal") { horizontal = default(horizontal, false) clip = clip.for(0, num, 1, "OffsetFrame(1)" \ , ((horizontal)? "StackHorizontal": "StackVertical") + "(c1, c2)") clip = clip.SelectEvery(num, 0) return clip }
208 名前:名無しさん@編集中 mailto:sage [2008/01/18(金) 00:20:24 ID:Iixs4I8W] #StackToFrame…1フレームに統合されたフレームを複数フレームに分離する # num 統合数 # horizontal 横に並べられている(省略・偽なら縦並べ、真なら横並べ) function StackToFrame(clip clip, int num, bool "horizontal") { horizontal = default(horizontal, false) width = ((!horizontal)? clip.Width(): clip.Width() / num) height = ((horizontal)? clip.Height(): clip.Height() / num) shiftx = ((horizontal)? width: 0) shifty = ((!horizontal)? height: 0) clip = clip.ChangeFPS(clip.FramerateNumerator() * num, clip.FramerateDenominator()) clip = clip.OffsetFrame(-num / 2) clip = clip.ScriptClip("offset = current_frame%"+string(num)+chr(13)+ \ "crop("+string(shiftx)+"*offset, "+string(shifty)+"*offset, "+string(width)+", "+string(height)+")"+chr(13)+ \ "AddBorders(0, 0, "+string(shiftx*(num-1))+", "+string(shifty*(num-1))+")") clip = clip.crop(0, 0, width, height) return clip }
209 名前:名無しさん@編集中 mailto:sage [2008/01/18(金) 00:20:54 ID:Iixs4I8W] #MTv…MTを用いたフレーム別マルチスレッドフィルタ適応 # filter 実行するフィルタ # threads スレッド数(省略なら2) # splitvertical 縦に分割する(省略・偽なら横分割、真なら縦分割) # # 既知の不具合 # 時間軸系フィルタは上手く動作しません # MTで使用出来ないフィルタは使用出来ません function MTv(clip clip, string filter, int "threads", bool "splitvertical") { threads = default(threads, 2) splitvertical = default(splitvertical, false) frame = clip.FrameCount() clip = clip.FrameToStack(threads, splitvertical) clip = clip.MT(filter, threads, 0, splitvertical) clip = clip.StackToFrame(threads, splitvertical) clip = clip.Trim(0, frame - 1) return clip }
210 名前:名無しさん@編集中 mailto:sage [2008/01/18(金) 00:25:28 ID:Iixs4I8W] #NoResizeEDIUpsizer…画面サイズを変更しないEDIUpsizer # 引数はEDIUpsizer準拠 function NoResizeEDIUpsizer(clip clip, int method, int window, float threshold4, float threshold8, float threshold16, int constraint, bool chroma, int cubic, int mvar) { clip = clip.Crop(0, 0, clip.Width() / 2, clip.Height() / 2) clip = clip.EDIUpsizer(method, window, threshold4, threshold8, threshold16, constraint, chroma, cubic, mvar) return clip }
211 名前:名無しさん@編集中 mailto:sage [2008/01/18(金) 00:27:03 ID:Iixs4I8W] #EDIUpsizerMt…EDIUpsizerのマルチスレッド対応 # 引数はEDIUpsizer準拠 # 以下追加引数 # threads スレッド数(省略なら2) function EDIUpsizerMt(clip clip, int "method", int "window", float "threshold4", float "threshold8", float "threshold16", int "constraint", bool "chroma", int "cubic", int "mvar", int "threads") { method = default(method, 7) window = default(window, 0) threshold4 = default(threshold4, 1000.0) threshold8 = default(threshold8, 2000.0) threshold16 = default(threshold16, 4000.0) constraint = default(constraint, 2) chroma = default(chroma, false) cubic = default(cubic, 2) mvar = default(mvar, 8) threads = default(threads, 2) clip = clip.AddBorders(0, 0, clip.Width(), clip.Height()) clip = clip.MTv("NoResizeEDIUpsizer("+string(method)+","+string(window)+","+ \ string(threshold4)+","+string(threshold8)+","+string(threshold16)+","+ \ string(constraint)+","+string(chroma)+","+string(cubic)+","+string(mvar)+")", threads) return clip }
212 名前:名無しさん@編集中 mailto:sage [2008/01/18(金) 00:34:12 ID:Iixs4I8W] EDIUpsizer() → EDIUpsizerMt(threads=4) EDIUpsizer(9, 0) → EDIUpsizerMt(9, 0, threads=4) 時間軸に依存しないフィルタなら殆どマルチスレッド対応出来そうな気がする。 まぁ、使わない訳だが…。
213 名前:名無しさん@編集中 mailto:sage [2008/01/18(金) 02:08:47 ID:RKNPVJi6] おお、早速使わせてもらいます
214 名前:名無しさん@編集中 mailto:sage [2008/01/18(金) 10:18:38 ID:B3GQWsjd] 神ktkr!
215 名前:名無しさん@編集中 mailto:sage [2008/01/18(金) 23:09:54 ID:9w3YdqN2] ゴミばっかだな
216 名前:名無しさん@編集中 mailto:sage [2008/01/18(金) 23:43:37 ID:B3GQWsjd] と思ったらうは重いなぁ。メモリ釈迦食うね
217 名前:名無しさん@編集中 mailto:sage [2008/01/19(土) 00:02:04 ID:FgMPX7tq] メモリって・・・(・з・)
218 名前:名無しさん@編集中 mailto:sage [2008/01/28(月) 18:15:29 ID:Iwy4cFh2] SetMTMode(2)で動いたりしないかなー試してみよ
219 名前:名無しさん@編集中 mailto:sage [2008/01/30(水) 17:59:21 ID:qZmXxuAG] てst
220 名前:名無しさん@編集中 mailto:sage [2008/02/07(木) 15:43:35 ID:NL8NsDwc] 暇だったんで指定サイズ以内でPAR1:1にリサイズする為の関数を作ってみた ↓ここから function getResizeArguments(clip clip,int limit_width,int limit_height,int"par_width",int"par_height",int"align"){ function getResizeArguments_g(int i,int j){ j==0?i:getResizeArguments_g(j,i%j) } function getResizeArguments_w(int sw,int lw,int dw,int dh,int a){ th=(lw*dh+dw*a-1)/(dw*a)*a ln=(th*dw-lw*dh)*sw ld=2*th*dw g=getResizeArguments_g(ln,ld) ln=ln/g ld=ld/g sl="float("+string(ln)+")/float("+string(ld)+")" wn=sw*ld-2*ln g=getResizeArguments_g(wn,ld) sw="float("+string(wn/g)+")/float("+string(ld/g)+")" a=string(lw)+","+string(th) ln!=0?a+",src_left="+sl+",src_width="+sw:a } function getResizeArguments_h(int sh,int lh,int dw,int dh,int a){ tw=(lh*dw+dh*a-1)/(dh*a)*a tn=(tw*dh-lh*dw)*sh td=2*tw*dh g=getResizeArguments_g(tn,td) tn=tn/g td=td/g st="float("+string(tn)+")/float("+string(td)+")" hn=sh*td-2*tn g=getResizeArguments_g(hn,td) sh="float("+string(hn/g)+")/float("+string(td/g)+")" a=string(tw)+","+string(lh)
221 名前:名無しさん@編集中 mailto:sage [2008/02/07(木) 15:44:08 ID:NL8NsDwc] tn!=0?a+",src_top="+st+",src_height="+sh:a } sw=width(clip) sh=height(clip) pw=default(par_width,1) ph=default(par_height,1) a=default(align,16) lw=limit_width/a*a lh=limit_height/a*a dw=pw*sw dh=ph*sh g=getResizeArguments_g(dw,dh) dw=dw/g dh=dh/g lw*dh>lh*dw?getResizeArguments_h(sh,lh,dw,dh,a):getResizeArguments_w(sw,lw,dw,dh,a) } ↑ここまで 引数について clip このクリップの横と縦をリサイズするつもりで計算します limit_width,limit_height 横と縦の限界、limit_widthxlimit_height以内になるように計算します par_width,par_height clipのPARを指定できます(省略時1:1) align alignの倍数になる様に計算します(省略時16) 使い方 Eval("LanczosResize("+getResizeArguments(width,height,10,11)+")") PAR10:11のクリップを16の倍数でPAR1:1になるように縮小、↓みたいな感じ ttp://nagamochi.info/src/up0814.png
222 名前:名無しさん@編集中 mailto:sage [2008/02/07(木) 15:44:26 ID:NL8NsDwc] Eval("BicubicResize("+getResizeArguments(1920,1200,10,11)+",b=1,c=0)") PAR10:11のクリップを1920x1200以内の16の倍数でPAR1:1になるように拡大、↓みたいな感じ ttp://nagamochi.info/src/up0815.png
223 名前:名無しさん@編集中 mailto:sage [2008/02/07(木) 15:57:02 ID:NL8NsDwc] 拡大に使うつもりで作ったんで縮小には向きません。
224 名前:名無しさん@編集中 mailto:sage [2008/02/07(木) 22:36:56 ID:FcbomYRA] いただき
225 名前:名無しさん@編集中 mailto:sage [2008/02/11(月) 23:38:18 ID:VD/F6OOg] # 縦横を1倍から2倍までの間にアップサンプリングする関数。 # ニアレストネイバー法で縦横をそれぞれ4倍し離散コサイン変換したものを縮小。 # 要 AviSynth 2.57 YV12, プログレッシブ専用 # overlapped dct, proof of concept frequency lowpass and interpolator function # ttp://forum.doom9.org/showthread.php?t=121939 # アップサンプリングはこのスレからの引用。 # ratio: 0以上の整数。0 で target_width, target_height の値に拡大。デフォルト 0 # 1 で縦横をそれぞれ2倍に拡大。2 を指定するとアップサンプリングされたものを元の大きさに縮小。 # 3 以上のとき、 n を ratio の値としたとき、src_clip.width*2 * n-1/n, src_clip.height*2 * n-1/n が # mod の倍数になるような値で自動で見つける。ピクセル比は保たれたままになる。 # 縦横を16の倍数にするとき、704*480 n=4, 720*480 n=3, 5, 6, 10, 15, 30 が 解。 # 720 x 480 のソースでの使用例: # Crop(8, 0, -8, 0).DCTus2(1280, 720, sharpness=1.875, u64dct=false, warp=1.5, rx=1.2, ry=1.2, ratio=0) 正方ピクセル。 # DCTus2(sharpness=1.875, u64dct=false, warp=1.5, rx=1.2, ry=1.2, mod=16, ratio=5) ピクセル比は保たれたまま。 # いるもの。 # Import( PluginDir + "DeHalo_alpha.avs" ) # ttp://forum.doom9.org/showthread.php?p=777956#post777956 # LoadPlugin( PluginDir + "Average.dll" ) # ttp://forum.doom9.org/showthread.php?p=902012#post902012 # LoadPlugin( PluginDir + "aWarpSharp(Pruned).dll" ) # LoadPlugin( PluginDir + "DctFilter_test.dll" ) # LoadPlugin( PluginDir + "mt_masktools.dll" ) # LoadPlugin( PluginDir + "RepairSSE3.dll" ) # DctFilter_test.dll, dctlimit() # ttp://forum.doom9.org/showthread.php?p=953353#post953353
226 名前:名無しさん@編集中 mailto:sage [2008/02/11(月) 23:40:20 ID:VD/F6OOg] function DCTus2(clip clip, int "target_width", int "target_height", float "sharpness", bool "u64dct", float "warp", bool "rep", float "rx", \ float "ry", float "sharpness2", int "ratio", int "mod", float "shift_left", float "shift_top", bool "show") { target_width = default( target_width, clip.width*2 ) target_height = default( target_height, clip.height*2 ) u64dct = default( u64dct, false ) warp = default( warp, 1.5 ) rep = default( rep, true ) sharpness = default( sharpness, 1.875 ) sharpness2 = default( sharpness2, 1.126 ) rx = default( rx, 1.4 ) ry = default( ry, 1.4 ) ratio = default( ratio, 0 ) mod = default( mod, 16 ) shift_left = default( shift_left, 0.0 ) shift_top = default( shift_top, 0.0 ) show = default( show, false ) dx = int(round(clip.width / 16.0) * 16) - clip.width dy = int(round(clip.height / 16.0) * 16) - clip.height #clip.EDIUpsizer(method=0, chroma=false).EDIUpsizer(method=0, chroma=false) clip.PointResize(clip.width*4, clip.height*4) (dx + dy >= 1) ? AddBorders(dx*4, dy*4, 0, 0) : last dctlimit(dct2=sharpness, dct3=0, dct4=0, dct5=0, use64dct=u64dct, use8dct=true) PointResize(last.width/2, last.height/2) DeHalo_alpha(rx=rx, ry=ry, lowsens=0.0, highsens=0.0, ss=1.0) (rep == true) ? dctlimit(use64dct=u64dct, dct2=1+(sharpness/11.6), dct3=1+(sharpness/8.1), dct4=sharpness, \ dct5=sharpness2/8.1, dct6=sharpness2/11.6, dct7=sharpness2/16.1, dct8=sharpness2/23.1) \ : last (rep == true) ? DeHalo_alpha(rx=2.0, ry=2.0, lowsens=0.0, highsens=0.0, ss=1.0) : last
227 名前:名無しさん@編集中 mailto:sage [2008/02/11(月) 23:47:44 ID:VD/F6OOg] awarpsharp(depth=warp, cm=0, blurlevel=1) awarpsharp(depth=warp, cm=0, blurlevel=1) awarpsharp(depth=warp, cm=0, blurlevel=1) awarpsharp(depth=warp, cm=0, blurlevel=1) (dx >= 1) ? Crop(dx*4, 0, 0, 0) : last (dy >= 1) ? Crop(0, dy*4, 0, 0) : last Spline36Resize(last.width, last.height, shift_left, shift_top, last.width, last.height) MergeChroma(last, clip.Lanczos4Resize(clip.width*2, clip.height*2), 1) ratio = abs(ratio) ratio = (ratio > 0) ? abs( last.getRatio(-ratio, mod, mod) ) : ratio num = (ratio == 1) ? 1 : ratio - 1 (show == true) && (ratio != 0) ? Subtitle(string(num) + "/" + string(ratio) + " " + string(width*num/ratio) \ + " x " + string(height*num/ratio), x=32, y=64, size=32) : last return (ratio < 1) ? Spline36Resize(target_width, target_height) \ : Spline36Resize( clip.width*2 * num / ratio, clip.height*2 * num / ratio ) }
228 名前:名無しさん@編集中 mailto:sage [2008/02/11(月) 23:49:45 ID:VD/F6OOg] function getRatio(clip clip, int "ratio", int "mod_x", int "mod_y", int "t") { ratio = default( ratio, 2 ) mod_x = default( mod_x, 16 ) mod_y = default( mod_y, 16 ) t = default( t, Min(clip.width, clip.height) ) t = t - 1 num = (ratio > 0) ? ratio : abs(ratio) - 1 den = (ratio > 0) ? ratio - 1 : abs(ratio) W = clip.width * num H = clip.height * num rep = (W % den == 0) && (H % den == 0) && (W/den % mod_x == 0) && (H/den % mod_y == 0) \ ? ratio \ : ( (ratio > 0) ? ratio + 1 : ratio - 1 ) return (abs(ratio) < 2) || (t == 0) ? 1 \ : (rep != ratio) ? getRatio(clip, rep, mod_x, mod_y, t) : ratio } # AviSynth 2.58 Added Min()/Max() script functions. function Max(a, b){ return (a > b) ? a : b } function Min(a, b){ return (a < b) ? a : b }
229 名前:名無しさん@編集中 mailto:sage [2008/02/13(水) 20:22:49 ID:mDcgCeWJ] >>226 間違っています。 以上。 はい次の方。
230 名前:名無しさん@編集中 mailto:sage [2008/02/13(水) 23:19:10 ID:SwGa3dgi] >>227 (dx >= 1) ? Crop(dx*4, 0, 0, 0) : last (dy >= 1) ? Crop(0, dy*4, 0, 0) : last を (dx >= 1) ? Crop(dx*2, 0, 0, 0) : last (dy >= 1) ? Crop(0, dy*2, 0, 0) : last に変更
231 名前:名無しさん@編集中 mailto:sage [2008/02/23(土) 13:17:26 ID:ZNz580UE] SevenFourThreeNR普通に実写でも使えるな もしかしてこれ最強のNRじゃね
232 名前:名無しさん@編集中 mailto:sage [2008/03/02(日) 14:33:41 ID:Tvog8BKf] SevenFourThreeNR使ってみたいけど素人な俺にはよくわかんないんだぜ ↓書式はこれでいいの? SevenFourThreeNRv2(clip c,bool "b0",bool "b1",int "i0",string "s0",int "i1",int "i2",\ string "s1",string "s2",int "i3",bool "b2",string "s3") んでデフォはこれ↓? b0=default(b0,true) b1=default(b1,true) i0=default(i0,0) s0=default(s0,"square") i1=default(i1,1) i2=default(i2,8) s1=default(s1," 4 3 / ^") s2=default(s2,"256") i3=default(i3,8) b2=default(b2,false) s3=default(s3,"square") だとしたらi2、i3とかデフォですごい強くかかってるんだね stringはどんなものがあるのかもわからんし デフォで超重いから軽いSevenFourThreeNRのほう使おうかとか思ったけどそっちはv2以上に説明無くてわけわからん 俺みたいな素人向けの、フィルタに入ってるreadmeみたいなの誰か作ってくれ
233 名前:名無しさん@編集中 mailto:sage [2008/03/03(月) 12:26:05 ID:IWQNXfjv] >>232 >161-162って>132と比べてそんなに重かったっけ?あんまり変わらなかったと思うけど・・ >132の方の引数についてちょっと書いてみる、>164とあわせて見て欲しいな i0がv2のi2、i1がv2のi1、i2がv2のi3 sは元に戻す強さ"mt_merge(c0,c1,mt_lutxy(c0,c1,"x y - abs"+s,u=3,v=3),u=3,v=3)"c0がボケたクリップでc1は元のクリップ デフォならmt_merge(c0,c1,mt_lutxy(c0,c1,"x y - abs 4 3 / ^",u=3,v=3),u=3,v=3)つまり(x*((x<y?y-x:x-y)^(4/3)>255?255:(x<y?y-x:x-y)^(4/3))+y*(256-((x<y?y-x:x-y)^(4/3)>255?255:(x<y?y-x:x-y)^(4/3))))/256 書いてて何のことか分からなくなったwww ボケたクリップと元のクリップの差を元にどの程度復元するかの係数みたいなもの、v2ではmt_mergeやめてmt_lutxyだけでやってる b0はアンシャープマスクの有無、v2のb1に近い b1はb0がfalseならあまりい必要ない作業に関しての分岐 ぼかして戻して強調したクリップをぼかしてから強調したクリップの方に戻して、最後に大本のクリップの方に戻すかどうか、v2ではb1にまとめてたと思う 効果としてはSevenFourThreeNR(2,1,2," 8 5 / ^",true,false)ぐらいで十分だった気がする ついでだから>162の訂正 i6=ceil(width(c)/i4)*i4 i7=ceil(height(c)/i5)*i5 ↓ i6=(width(c)+i4-1)/i4*i4 i7=(height(c)+i5-1)/i5*i5 これ作ってた頃はjavascriptの所為でintとfloatがごっちゃになってました、多分>165もcropで拡大しようとした所為なんだろうなぁ 無知ってこわいね。
234 名前:名無しさん@編集中 mailto:sage [2008/03/05(水) 17:57:38 ID:TZT0J0vL] function ccSakura(clip clip,int target_width,int target_height,float"src_left",float"src_top",float"src_width",float"src_height",int"taps",bool"fast"){ function ccSakura_u(clip clip,int target_width,int target_height,float src_left,float src_top,float src_width,float src_height,int taps,bool fast){ bicubicresize(clip,target_width,target_height,1.,0.,src_left,src_top,src_width,src_height) lanczosresize(width(clip),height(clip),-src_left*float(target_width)/src_width,-src_top*float(target_height)/src_height,float(width(clip)*target_width)/src_width,float(height(clip)*target_height)/src_height,taps=taps) subtract(clip) subtract(clip,last) bicubicresize(target_width,target_height,1.,0.,src_left,src_top,src_width,src_height) align=isyuy2?2:isyv12?4:1 tmp_width=ceil(float(target_width*target_width)/src_width) tmp_width=isyuy2?(tmp_width+1)/2*2:tmp_width tmp_width=isyv12?(tmp_width+3)/4*4:tmp_width tmp_height=ceil(float(target_height*target_height)/src_height) tmp_height=isyv12?(tmp_height+1)/2*2:tmp_height fast?last:subtract(subtract(lanczosresize(bicubicresize(tmp_width,tmp_height,1.,0.),width,height,taps=taps),last)) } function ccSakura_h(clip clip,int target_width,float src_left,float src_width,int taps,bool fast){ float(target_width)>src_width?ccSakura_u(clip,target_width,height(clip),src_left,0.,src_width,float(height(clip)),taps,fast):lanczosresize(clip,target_width,height(clip),src_left,src_width=src_width,taps=taps) } function ccSakura_v(clip clip,int target_height,float src_top,float src_height,int taps,bool fast){ float(target_height)>src_height?ccSakura_u(clip,width(clip),target_height,0.,src_top,float(width(clip)),src_height,taps,fast):lanczosresize(clip,width(clip),target_height,src_top=src_top,src_height=src_height,taps=taps) } src_left=default(src_left,0.)
235 名前:名無しさん@編集中 mailto:sage [2008/03/05(水) 17:58:34 ID:TZT0J0vL] src_left=isfloat(src_left)?src_left:float(src_left) src_top=default(src_top,0.) src_top=isfloat(src_top)?src_top:float(src_top) src_width=default(src_width,float(width(clip))) src_width=isfloat(src_width)?src_width:float(src_width) src_width=src_width<=0.?float(width(clip))-src_left+src_width:src_width src_height=default(src_height,float(height(clip))) src_height=isfloat(src_height)?src_height:float(src_height) src_height=src_height<=0.?float(height(clip))-src_top+src_height:src_height taps=default(taps,3) fast=default(fast,false) vf=float(target_width)*src_height<float(target_height)*src_width vf?ccSakura_v(clip,target_height,src_top,src_height,taps,fast):ccSakura_h(clip,target_width,src_left,src_width,taps,fast) vf?ccSakura_h(target_width,src_left,src_width,taps,fast):ccSakura_v(target_height,src_top,src_height,taps,fast) } synthの内蔵フィルタだけのシンプルなアプコンスクリプト 縮小はただのlanczosresizeで、拡大はbicubicとlanczosのコンボ 要約すると bicubicresize(subtract(subtract(lanczosresize(bicubicresize(2*width,2*height,1,0),width,height),last)),2*width,2*height,1,0) subtract(subtract(lanczosresize(bicubicresize(2*width,2*height,1,0),width,height),last))#fast=trueで省略 とりあえずサンプル ソース ttp://nagamochi.info/src/up1845.png ccSakura(1600,1200) ttp://nagamochi.info/src/up1846.png nnedi+lanczos3 ttp://nagamochi.info/src/up1847.png eedi2+lanczos3 ttp://nagamochi.info/src/up1848.png まぁ、軽いだけで一番汚いです
236 名前:名無しさん@編集中 mailto:sage [2008/03/05(水) 19:13:35 ID:TZT0J0vL] 訂正です eedi2+lanczos3 ttp://nagamochi.info/src/up1847.png nnedi+lanczos3 ttp://nagamochi.info/src/up1848.png あと、align=isyuy2?2:isyv12?4:1これ消し忘れ
237 名前:名無しさん@編集中 mailto:sage [2008/03/05(水) 20:17:37 ID:mIkahBUx] >>233 両方デフォでかけたavs2種類をVDMで読み込むと、v2のほうは固まったかと思うくらいロード時間長かったからこっちの方はテラオモスなのかなーと 半分以上ワケワカランですけど参考にしてガンガリマス、サンクス
238 名前:名無しさん@編集中 mailto:sage [2008/03/06(木) 21:30:43 ID:1WZbGJvh] # frameを、frame, source_frame1, source_frame2 の3frameをMergeしたものと入れ替える。 # weight, weight2, weight3 がそれぞれを混ぜる割合。weight + weight1 + weight2 = 1.0 と必ずならなければいけない。 # source_frame2 がないときは weight1 は必要なく weightのみ設定する。このときの weightの値はframe に対する frame1 の値。 # MergeFrame(43275, 3274, weight=0.0) # 43275 のみが表示。逆にweight=1.0 とすると 3274のみが表示、FreezeFrame(43275, 43275, 3274) と同じ動作。 # MergeFrame(10, 100, 1000, 0.0, 0.5, 0.5) frame 10を、100 と 1000 をMergeしたものと入れ替える。 # 要 Average.dll, forum.doom9.org/showthread.php?p=902012#post902012 function MergeFrame(clip clp, int frame, int source_frame1, int "source_frame2", float "weight", \ float "weight2", float "weight3", int "field", int "source_field", string "pre", string "post") { field = default( field, 3 ) source_field = default( source_field, 3 ) pre = default( pre, "nul" ) post = default( post, "nul" ) source_frame2 = default( source_frame2, frame ) weight = default( weight, (source_frame2 == frame) ? 0.5 : 0.0 ) weight2 = default( weight2, (source_frame2 == frame) ? 1.0 - weight : 0.5 ) weight3 = default( weight3, (source_frame2 == frame) ? 0.0 : 0.5 ) (source_frame2 != frame) ? Assert(weight + weight2 + weight3 == 1.0, "weight + weight2 + weight3 should be equal to 1.0") : NOP
239 名前:名無しさん@編集中 mailto:sage [2008/03/06(木) 23:42:32 ID:CHSXb3Wx] c0 = Eval("clp." + pre) c1 = (frame != 1) ? clp.Trim(0, frame - 1) : clp.Trim(0, -1) c2 = Merge(c0.Trim(frame, (frame != 0) ? frame : -1)._SelectField(field, weight2), \ c0.Trim(source_frame1, (source_frame1 != 0) ? source_frame1 : -1)._SelectField(source_field, weight3), weight) c2 = (source_frame2 == frame) ? c2 \ : Average(clp.Trim(frame, (frame != 0) ? frame : -1), weight, \ clp.Trim(source_frame1, (source_frame1 != 0) ? source_frame1 : -1), weight2, \ clp.Trim(source_frame2, (source_frame2 != 0) ? source_frame2 : -1), weight3, \ clp.Trim(0, -1), 0.0) c2 = Eval("c2." + post) c = (frame != 0) ? c1 + c2 : c2 (frame == clp.Framecount - 1) ? c : c + clp.Trim(frame + 1, 0) return clp.HasAudio ? AudioDubEx(last, clp.KillVideo) : last }
240 名前:名無しさん@編集中 mailto:sage [2008/03/06(木) 23:44:40 ID:CHSXb3Wx] # frameを、そのframeのEven,Odd fieldの高さを2倍にしてMergeしたものと入れ替える。 function MergeField(clip clp, int "frame", float "weight", string "pre", string "post") { frame = default( frame, clp.Framecount - 1 ) weight = default( weight, 0.5 ) pre = default( pre, "nul" ) post = default( post, "nul" ) return clp.MergeFrame(frame, frame, weight=0.0, field=2, source_field=3, pre=pre, post=post, weight2=weight) } # frameを、そのframeの片fieldの高さを2倍にしたものと入れ替える。 # field: 0 Odd, 1 Even function SelectField(clip clp, int "frame", int "field", string "pre", string "post") { frame = default( frame, clp.Framecount - 1 ) field = default( field, 0) pre = default( pre, "nul" ) post = default( post, "nul" ) return clp.MergeFrame(frame, frame, weight=0.0, field=field, source_field=3, pre=pre, post=post) }
241 名前:名無しさん@編集中 mailto:sage [2008/03/06(木) 23:46:33 ID:CHSXb3Wx] # source_field の値によって frame を source_frame と入れ替える。 # 0: Odd field, 1: Even field, 2: Odd と EvenをMerge, 3: source_frame デフォルト 3 function FreezeField(clip clp, int frame, int source_frame, int "source_field", float "weight", string "pre", string "post") { source_field = default( source_field, 3 ) weight = default( weight, 0.5 ) pre = default( pre, "nul" ) post = default( post, "nul" ) return clp.MergeFrame(frame, source_frame, weight=1.0, field=3, source_field=source_field, pre=pre, post=post, weight3=weight) } function eediMerge(clip clp, float "weight") { weight = default( weight, 0.5 ) clp.SeparateFields.EEDI2(field=-2) #, mthresh=0, lthresh=0, vthresh=0, estr=0, dstr=0, maxd=24, pp=3) Merge(SelectEven, SelectOdd, weight) #LimitedSharpenFaster(Smode=3, strength=40) }
242 名前:名無しさん@編集中 mailto:sage [2008/03/06(木) 23:47:50 ID:CHSXb3Wx] function _SelectField(clip clp, int "field", float "weight") { field = default( field, 0 ) weight = default( weight, 0.5 ) c = clp.SeparateFields.EEDI2(field=-2) # ここは好きなように変更する。 (field == 1) ? c.SelectEven : c.SelectOdd #LimitedSharpenFaster(Smode=3, strength=20) clp.GetParity ? AssumeTFF : NOP return (field == 3) ? clp \ : (field == 2) ? Merge(c.SelectEven, c.SelectOdd, weight) \ : clp.GetParity ? AssumeTFF \ : last } function nul(clip c) { return c }
243 名前:名無しさん@編集中 mailto:sage [2008/03/07(金) 00:06:53 ID:fd0rVI1T] >>242 の clp.GetParity ? AssumeTFF : NOP はいらない。
244 名前:名無しさん@編集中 mailto:sage [2008/03/10(月) 18:32:01 ID:+purmfXZ] ImageSource("Clipboard%02d.png", 1, 4, 29.97).ForLoop function ForLoop(clip clip, int "i", clip "outclip"){ i=default(i, 0) clip.trim(i, -1).loop(300) i>0 ? outclip++last : last i<clip.framecount-1 ? ForLoop(clip, i+1, last) : last } 0.1fps等は支障がある場合があるようなので、 png1枚に付き約10秒の動画を作るスクリプトを書いたのですが、 もう少しすっきり出来ないかと思うのですが、 (i>0 ? outclip : NUL)++clip.trim(i, -1).loop(300)みたいに書けるNULクリップみたいなものは存在しないでしょうか?
245 名前:名無しさん@編集中 mailto:sage [2008/03/11(火) 12:46:32 ID:sY4zBva9] ImageSource("Clipboard%02d.png", 0, 299) #last++ImageSource(〜 AssumeFPS(30,1) 素直にこんな感じじゃだめなの?
246 名前:名無しさん@編集中 mailto:sage [2008/03/12(水) 21:37:46 ID:+x0QGohj] ttp://ja.doukaku.org/165/ これ、やってみた。 # DF ドロップフレーム(1分間に2フレーム、カウントをとばす。ただし、10分間に一回は行わない) # Current_Frame ≡ 0 (mod 1800) # Current_Frame ≡ 1 (mod 1800) # のときはフレームのカウントをとばす。 # 1,2, 3,4... --> 1,2, 5,6... # ただし、 # Current_Frame ≡ 0 (mod 18000) # Current_Frame ≡ 1 (mod 18000) # のときはフレームをカウントをとばさない。 # 10分間のフレーム数 # 1800 + 1798 * 9 = 17982 # フレームレート # 30 * 17982 / 18000 = 30 * 999 / 1000 = 2997 / 100 = 29.97 # 24 * 17982 / 18000 = 24 * 999 / 1000 = 2997 / 125 = 23.976 # これは放送用の編集ために用いるドロップフレームタイムコードから計算上出た # 結果であってNTSC color(30000/1001)のフレームレートではない。
247 名前:名無しさん@編集中 mailto:sage [2008/03/12(水) 21:38:47 ID:+x0QGohj] function ShowDropFrame(clip clp, bool "drop", float "fps", int "x", int "y") { global ShowDropFrame_drop = default( drop, true ) global ShowDropFrame_fps = default( fps, 30.0 ) global ShowDropFrame_x = default( x, 0 ) global ShowDropFrame_y = default( y, 0 ) return clp.ScriptClip("_ShowDropFrame(Current_Frame, ShowDropFrame_drop, \ ShowDropFrame_fps, ShowDropFrame_x, ShowDropFrame_y)") } function _ShowDropFrame(clip clp, int n, bool drop, float fps, int x, int y) { Current_Frame = n n = (drop == true) ? n + n / 1800 * 2 - n / 18000 * 2 : Current_Frame time = (drop == true) ? n / float(fps) \ : float(Current_Frame * clp.FramerateDenominator) / float(clp.FramerateNumerator) time_h = int(time) / 3600 time_m = ( int(time) - (time_h * 3600) ) / 60 time_s = int(time) - (time_h * 3600) - (time_m * 60) time_ms = Round( Frac(time) * 1000 ) hh = (time_h < 10) ? "0" + string(time_h) : string(time_h) mm = (time_m < 10) ? "0" + string(time_m) : string(time_m) ss = (time_s < 10) ? "0" + string(time_s) : string(time_s) ms = (time_ms < 10) ? "00" + string(time_ms) \ : (time_ms < 100) ? "0" + string(time_ms) : string(time_ms) return clp.Subtitle(hh + ":" + mm + ":" + ss + "." + ms + ";" + string(n % 30) \ + " " + string(n), x=ShowDropFrame_x, y=ShowDropFrame_y) # \ .Subtitle(string(Current_Frame) + " diff " + string(n / 1800 * 2 - n / 18000 * 2), x=x, y=y+16) }
248 名前:名無しさん@編集中 mailto:sage [2008/03/13(木) 00:22:17 ID:5mYjS9tx] >>245 pngを大量にコピーするのは避けたいので
249 名前:名無しさん@編集中 mailto:sage [2008/03/13(木) 21:13:43 ID:EGDcQ9L3] <<247を01frameだけをフレームカウントスキップするように修正。 function _ShowDropFrame(clip clp, int n, bool drop, float fps, int x, int y) { Current_Frame = n n0 = (drop == true) ? n + n / 1800 * 2 - n / 18000 * 2 : n n1 = (drop == true) ? n + n0 / 1800 * 2 - n0 / 18000 * 2 : n0 time = (drop == true) ? n1 / float(fps) : n / float(clp.Framerate) time_h = int(time) / 3600 time_m = (int(time) - (time_h * 3600)) / 60 time_s = int(time) - (time_h * 3600) - (time_m * 60) time_ms = round(frac(time) * 1000) hh = (time_h < 10) ? "0" + string(time_h) : string(time_h) mm = (time_m < 10) ? "0" + string(time_m) : string(time_m) ss = (time_s < 10) ? "0" + string(time_s) : string(time_s) ms = (time_ms < 10) ? "00" + string(time_ms) \ : (time_ms < 100) ? "0" + string(time_ms) : string(time_ms) return clp.Subtitle(hh + ":" + mm + ":" + ss + "." + ms + ";" + string(n1 % round(fps)) \ + " " + string(n1), x=ShowDropFrame_x, y=ShowDropFrame_y) # \ .Subtitle(string(Current_Frame) + " diff " + string(n1 - Current_Frame), x=x, y=y+16) }
250 名前:名無しさん@編集中 mailto:sage [2008/03/14(金) 03:14:22 ID:8AYA49Rt] 単純なループ関数で、>>54 を簡易化したもの n:ループ回数 filter:ループさせるフィルタ start:ループさせるためだけの引数。変更してはいけない function LoopFilter(clip clip, int "n", string "filter", int "start"){ n = default(n, 1) filter = default(filter, "") start = default(start, 0) next = start+1 c = ((next <= n)? Eval("clip." + filter):clip) return ((next >= n)? c: LoopFilter(c,n,filter,next)) }
251 名前:名無しさん@編集中 mailto:sage [2008/03/14(金) 03:17:35 ID:8AYA49Rt] 書いてから気づいたけど、>>54 の修正版があったのか… まぁいいや
252 名前:名無しさん@編集中 mailto:sage [2008/03/14(金) 18:23:35 ID:IOEJq7o6] >>250 簡易と言う割には無駄が多過ぐる件 function LoopFilter(clip clip, int n, string filter){return n>0 ? LoopFilter(Eval("clip." + filter), n-1, filter) : clip} 使用例: LoopFilter(3, """Layer(clip.ReduceBy2, "add", 255, clip.width/2)""")
253 名前:名無しさん@編集中 mailto:sage [2008/03/19(水) 18:08:44 ID:3KvBoAnM] WikiのShowTimeCodeを見ていてミリ秒等の算出が気になったので、 frametime=current_frame/FrameRate #秒単位の入力値(元:mod_time) ms_digit=3 #秒未満の桁数 ms=string(round(frametime*pow(10,ms_digit))%int(pow(10,ms_digit)), "%0"+string(ms_digit)+".0f") 元: # Calculate mili-seconds and convert to string. ms = RightStr(String(mod_time), 6) ms1 = Int(Value(LeftStr(ms, ms_digit))) ms2 = MidStr(ms, ms_digit+1, 1) ms2 = Round(Value(ms2)/10) ms = ms1 + ms2 ms = ((ms_digit==3)&&(ms<10)) ? "00" + String(ms) : \ (((ms_digit==3)&&(ms<100))||((ms_digit==2)&&(ms<10))) ? "0" + String(ms) : \ String(ms) それから、ms_digit=1、current_frame=29、FrameRate=29.97の場合等に、00:00:00:10と桁が狂うので、 int_time = round(frametime-value(ms)/pow(10,ms_digit))
254 名前:名無しさん@編集中 mailto:sage [2008/03/20(木) 22:19:41 ID:OSD7JxDK] << 246 の訂正。 30fps以外 (奇数 * 1000) frame をスキップ Current_Frame' ≡ 0, 1 (mod 1000) のときはフレームのカウントをとばす。 Current_Frame' ≡ 0, 1 (mod 2000) のときはフレームのカウントをとばさない。 10000 frameのフレーム数 5000 + 998 * 5 = 9990 フレームレート 24 * 9990 / 10000 = 24 * 999 / 1000 = 2997 / 125 = 23.976 d1 = (round(fps) == 30) ? 1800 : 1000 d2 = (round(fps) == 30) ? 18000 : 2000 n0 = (drop == true) && (real == false) ? n + n / d1 * 2 - n / d2 * 2 : n n1 = (drop == true) && (real == false) ? n + n0 / d1 * 2 - n0 / d2 * 2 : n0
255 名前:名無しさん@編集中 mailto:sage [2008/03/20(木) 22:23:19 ID:OSD7JxDK] 4コマ撮りを除く3:2 プルダウンの値を見るスクリプト。要 TIVTC.dll, VirtualDub 3:2 プルダウンの4コマ撮りは30p制作の5コマ撮りと同値。すべてのフレームで縞なしとなる。 オプション: int "display" ShowCombedTIVTCのdisplayと同じ。5 にすると、ShowCombedTIVTCの表示無し。 使い方: VirtualDubでスクリプトを読み込んで、周期を調べたいフレーム上で F2 key で VirtualDubを 更新。文字が水色に変わり そこを FrameNumber 0 として周期を見ることが出来る。 尚、マイナス方向に count を進めても SelectEvery の値を得る。 その場合、F2で更新した Frameから5の倍数で区切ったときの値。 SelectEvery(n, a,b,c...) は frame1 ≡ a (mod n), frame2 ≡ b (mod n), ... と定義することが出来る。 n, n+1 に縞 FrameNumber ≡ n (mod 5) SelectEvery( 5, 2n + 3, 2n + 1 ) SelectEvery( 5, 2n + 1, 2n + 4 ) SelectEvery( 5, 2n - 2, 2n - 4 ) SelectEvery( 5, 2n - 4, 2n - 1 ) 3:2 プルダウンされたもののframeを 5周期ずつ見たときのまとめ a1,a2,...an は 10進数でのFrameNumber, nは そのFrameNumberの mod 5 での値。 (34 xor 40) or (34 and 40, |a3-a0|>2) or 2コマずつ同じ絵で4のみに縞 or すべてのframeが縞無しで5コマずつ同じ絵で1,2が互いに違う絵 DoubleWeave.SelectEvery(5, 2,4) (40 xor 01) or (40 and 01, |a4-a1|>2) or 2コマずつ同じ絵で0のみに縞 or すべてのframeが縞無しで5コマずつ同じ絵で2,3が互いに違う絵 DoubleWeave.SelectEvery(5, 1,4) (01 xor 12) or (01 and 12, |a0-a2|>2) or 2コマずつ同じ絵で1のみに縞 or すべてのframeが縞無しで5コマずつ同じ絵で3,4が互いに違う絵 DoubleWeave.SelectEvery(5, 1,3) (12 xor 23) or (12 and 23, |a1-a3|>2) or 2コマずつ同じ絵で2のみに縞 or すべてのframeが縞無しで5コマずつ同じ絵で4,0が互いに違う絵 DoubleWeave.SelectEvery(5, 0,3) (23 xor 34) or (23 and 34, |a2-a4|>2) or 2コマずつ同じ絵で3のみに縞 or すべてのframeが縞無しで5コマずつ同じ絵で0,1が互いに違う絵 DoubleWeave.SelectEvery(5, 0,2) 2コマ撮りは3つ選べるうちの中心のみ記載。2コマずつ同じ絵で2のみに縞 だと、(5, 1,3) (5, 0,3) (5, 0,2)
256 名前:名無しさん@編集中 mailto:sage [2008/03/20(木) 22:25:34 ID:OSD7JxDK] function ShowPulldown(clip clp, int "display") { global ShowPulldown_Start = -1 global ShowPulldown_Comb = -1 global ShowPulldown_koma = -1 global ShowPulldown_count = -1 global ShowPulldown_60i = -1 global ShowPulldown_display = default( display, 2 ) return clp.ScriptClip("_ShowPulldown(Current_Frame, ShowPulldown_display)") } function _ShowPulldown(clip clp, int n, int display) { Current_Frame = n global ShowPulldown_Start = (ShowPulldown_Start == -1) ? n : ShowPulldown_Start comb = clp.IsCombedTIVTC(cthresh=13, chroma=false, MI=128, blockx=32, blocky=32) function toMOD5(n) { return (n >= 0) ? n % 5 : ( (n % 5) + 5 ) % 5 } m = n - ShowPulldown_Start i = toMOD5(m) a = (comb == true) ? toMOD5( 2 * i + 1 ) : ShowPulldown_Comb b = toMOD5( a + 3 ) global ShowPulldown_Comb = a koma = (comb == true) && (ShowPulldown_count == 0) ? 1 \ : (comb == true) && (ShowPulldown_count == 4) ? 2 \ : (comb == true) && (ShowPulldown_count == 10) ? 3 \ : (comb == true) && (ShowPulldown_count == 14) ? 6 \ : ShowPulldown_koma
257 名前:名無しさん@編集中 mailto:sage [2008/03/20(木) 22:27:48 ID:OSD7JxDK] global ShowPulldown_koma = koma global ShowPulldown_count = (comb == false) ? ShowPulldown_count + 1 : 0 global ShowPulldown_60i = (comb == true) ? ShowPulldown_60i + 1 : 0 function _Max(a, b){ (a > b) ? a : b } function _Min(a, b){ (a < b) ? a : b } function n2s(n){ return (n == -1) ? "--" : string(n) } pd = (a != -1) ? string(_Min(a, b)) + "," + string(_Max(a, b)) : "2, 0" pd = (pd != "2, 0") ? "5, " + pd : pd pd = string(ShowPulldown_Start) + " - " + string(n) + " " + string(m) \ + " ≡ " + string(i) + " " + "SelectEvery(" + pd + ")" \ + " " + ( (ShowPulldown_60i > 2) ? " 60i " : (ShowPulldown_count > 15) \ ? " 30p " : " " + n2s(koma) + "コマ撮り " ) + string(ShowPulldown_count) y = (display < 5) ? 80 : 0 (display < 5) ? clp.ShowCombedTIVTC(cthresh=13, chroma=false, MI=128, blockx=32, blocky=32, display=display) : clp return Subtitle(pd, x=0, y=y, text_color=(m==0)?$00FFFF:$E0FFFF, font="MS_Gothic") }
258 名前:名無しさん@編集中 mailto:sage [2008/03/20(木) 23:14:15 ID:WaT1khHI] そろそろこのスレのまとめみたいの作ったほうがいいんじゃね もしくはAvisynth wikiのユーザー定義関数の項目に記述
259 名前:にーやん mailto:sage [2008/03/22(土) 01:14:17 ID:Hzyg/olQ] もしAviSynth Wikiのユーザー定義関数のページに追加されるのであれば、雛型として「ユーザー定義関数投稿用テンプレート」を利用してください。 ユーザー定義関数のページに使用手順を書いておきました。 多少はページ作成の助けになるかと思います。 あるいは、具体的にどれを追加するのかを指定していただけたら、私の方でページを作成してもかまいません。 新しくまとめサイトを作られるのなら、そちらにおまかせします。 >>253 修正ありがとうございます。 253さんの修正を取り込んだものを、さきほどAviSynth Wikiのユーザー定義関数に追加しました。
260 名前:名無しさん@編集中 [2008/03/22(土) 04:04:34 ID:0CF92uOe] #UnsharpResize…アンシャープリサイズ # width 横幅 # height 縦幅 # sharp アンシャープ係数(弱 0.0 ← 1.0 → 2.0 強) # (省略なら1.0) function UnsharpResize(clip clip, int width, int height, float "sharp") { sharp = default(sharp, 1.0) sharp = ((sharp < 0.0)? 0.0: ((2.0 < sharp)? 2.0: sharp)) bicubic = ((1.0 < sharp)? 1.0: sharp) gauss = 10.0 - 9.0 * ((sharp < 1.0)? 0.0: sharp - 1.0) function SubtractClip(clip clip, clip sub) { return subtract(clip, subtract(sub, clip)) } result = clip.LanczosResize(width, height, taps=16) result = ((0.0 < bicubic) \ ? result.SubtractClip(clip.BicubicResize(width, height, b=bicubic, c=(1.0 - bicubic) / 2.0)) \ : result \ ) result = ((gauss < 10.0) \ ? result.SubtractClip(clip.GaussResize(width, height, p=gauss)) \ : result \ ) return result }
261 名前:名無しさん@編集中 [2008/03/22(土) 04:18:22 ID:0CF92uOe] “ぼかした画像を引く事によりシャープな画像生み出す”と言う、 アンシャープマスクの考えの元に リサイズしつつアンシャープマスク処理を行うフィルタを作成してみました。 非常に強いシャープ化をもたらすリサイズ処理になります。 >>235-236 さんが行っていた、 subtractを2回連続して掛ける事により高速に減算を行う処理から思いつきました。 サンプルは>>235-236 さんから拝借 UnsharpResize(1600, 1200) nagamochi.info/src/up2382.png
262 名前:名無しさん@編集中 mailto:sage [2008/03/22(土) 23:29:49 ID:QPs+7Z/I] >>255 書き間違い。 ×3:2 プルダウンされたもののframeを 5周期ずつ ○ 3:2 プルダウンされたもののframeを 5コマずつ >>244 NullClip つくってみた。 # 使用例: src = ImageSource("./test.bmp", 1, 4, 29.97).ConvertToYUY2 # YUY2, 720*480, 29.97fps, no audio #return blankclip(length=0) # RGB32, 640*480, 24.0fps, audio mono #return blankclip(length=0).toPixelTypeOf(src) # YUY2, 640*480, 24.0fps, audio mono #return NullClip(src) # YUY2, 720*480, 29.97fps, no audio return src.ForLoop # YUY2, 720*480, 29.97fps, no audio function ForLoop(clip clip, int "i", clip "outclip"){ i=default(i, 0) (i>0 ? outclip : NullClip(clip))++clip.trim(i, -1).loop(300) i<clip.framecount-1 ? ForLoop(clip, i+1, last) : last }
263 名前:名無しさん@編集中 mailto:sage [2008/03/22(土) 23:32:08 ID:QPs+7Z/I] ### {{{ NullClip # 要 AviSynth v2.56以上 # RGB24, RGB32, YUY2 or YV12 # 上記以外の色空間はエラー。 # srcに audioがある場合は 1ch(mono) または 2ch(stereo) でなければならない。 # 6ch などは KillAudio しておく。 function NullClip(clip src) { return src.toBlankClip } # srcの width, height, pixel_type, fps, audio と同じ FrameCountが lengthの BlankClipを生成する。 function toBlankClip(clip src, int "length") { length = default( length, 0 ) return (src.hasAudio == false) \ ? BlankClip( length=length, width=src.width, height=src.height, pixel_type=PixelTypeOf(src), fps=src.Framerate ).KillAudio \ : BlankClip( length=length, width=src.width, height=src.height, pixel_type=PixelTypeOf(src), \ fps=src.Framerate, audio_rate=src.Audiorate, stereo=(src.Audiochannels < 2) ? false : true ) }
264 名前:名無しさん@編集中 mailto:sage [2008/03/22(土) 23:32:51 ID:QPs+7Z/I] # clpの色空間を srcの色空間と同じにする。 function toPixelTypeOf(clip clp, clip src) { Eval( "clp.ConvertTo" + PixelTypeOf(src) ) } function PixelTypeOf(clip clp) { return clp.IsYV12 ? "YV12" \ : clp.IsYUY2 ? "YUY2" \ : clp.IsRGB24 ? "RGB24" \ : clp.IsRGB32 ? "RGB32" \ : clp.IsRGB ? "RGB" \ : nop }
265 名前:名無しさん@編集中 mailto:sage [2008/03/23(日) 11:24:00 ID:uOlrBNQp] >>262 長さ0のBlankClipを作れるの知りませんでした。 (i>0 ? outclip : clip.Nul)++clip.trim(i, -1).loop(300) function Nul(clip c, int "inp_length"){ inp_length=default(inp_length, 0) BlankClip(inp_length, c.width, c.height, c.PixelTypeOf, c.FramerateNumerator, c.FramerateDenominator, c.audiorate, c.Audiochannels==2) Return c.HasAudio ? last : KillAudio } FramerateDenominatorも設定しないと上手く行かない動画が
266 名前:名無しさん@編集中 mailto:sage [2008/03/23(日) 22:24:37 ID:x/H8WCET] >>265 見てKillAudioなくてもいいということに気づいた。 >>263 を変更。 # srcの width, height, pixel_type, fps, audio と同じ FrameCountが lengthの BlankClipを生成する。 # BlankClip: audio_rate=0 で no audio # Audiorate(), Audiochannels(): 無音クリップの場合、出力値は 0。 function toBlankClip(clip src, int "length") { length = default( length, 0 ) return BlankClip( length=length, width=src.width, height=src.height, pixel_type=PixelTypeOf(src), fps=src.FramerateNumerator, \ fps_denominator=src.FramerateDenominator, audio_rate=src.Audiorate, stereo=(src.Audiochannels < 2) ? false : true ) }
267 名前:名無しさん@編集中 mailto:sage [2008/03/25(火) 22:12:50 ID:5jdy4i5f] #クリップ“src”と同様なBlankClipを作成する。 BlankClip(src) #もしくは src.BlankClip() #クリップ“src”と同様な“length”フレームのBlankClipを作成する。 BlankClip(src, length) #もしくは src.BlankClip(length) #クリップ“src”と同様な“600”フレームの、青一色のクリップを作成する。 BlankClip(src, 600, color=$0000FF) #もしくは src.BlankClip(600, color=$0000FF)
268 名前:名無しさん@編集中 mailto:sage [2008/03/26(水) 14:02:43 ID:Hjc4qHM4] function nnediresize(clip clip,int target_width,int target_height,float"src_left",float"src_top",float"src_width",float"src_height",int"taps"){a=default(src_left,0.)chr(13)a=isfloat(a)?a:float(a) b=default(src_top,0.)chr(13)b=isfloat(b)?b:float(b)chr(13)c=float(width(clip))chr(13)d=default(src_width,c)chr(13)d=isfloat(d)?d:float(d)d=d<=0.?c-a+d:d chr(13)c=float(height(clip))chr(13)e=default(\ src_height,c)chr(13)e=isfloat(e)?e:float(e)chr(13)e=e<=0.?c-b+e:e chr(13)c=default(taps,3)function nnediresize_(clip a,int b,int c,float d,float e,float f,float g,int h,float i,float j){k=float(b) l=float(c)function nnediresize__(clip a,int b,int c,float d,float e,float f,float g,int h,float i,float j){k=lanczosresize(a,b,c,d+i,e+j,f,g,h)chr(13)l=(width(a)+7)/8*8chr(13)m=(height(a)+3)/4*4 pointresize(a,l,m,0,0,l,m)chr(13)n=(b+7)/8*8chr(13)o=(c+3)/4*4chr(13)f=f+float(n-b)*f/float(b)chr(13)g=g+float(o-c)*g/float(c)chr(13)ytouv(lanczosresize(utoy,n/2,o/2,d/2.+i,e/2.+j,f/2.,g/2.,h),\ lanczosresize(vtoy,n/2,o/2,d/2.+i,e/2.+j,f/2.,g/2.,h))chr(13)mergechroma(k,pointresize(b,c,0.,0.,float(b),float(c)))}k>f||l>g?k*g<l*f?nnediresize_(nnedi(a,0,true),b,c,d,2.*e,f,2.*g,h,i,2.*j+.5):\ nnediresize_(turnleft(nnedi(turnright(a),0,true)),b,c,2.*d,e,2.*f,g,h,2.*i+.5,j):isyv12(a)?nnediresize__(a,b,c,d,e,f,g,h,i,j):lanczosresize(a,b,c,d+i,e+j,f,g,h)}nnediresize_(clip,target_width,\ target_height,a,b,d,e,c,0.,0.)} 誰も使ってないと思うけど、ミスに気づいちゃったんで訂正 YV12の時YとUVでずらす値を変えるようにしました。
269 名前:名無しさん@編集中 mailto:sage [2008/03/26(水) 15:22:10 ID:exH3H0Ao] そんな事はありませぬ。 乙であります!
270 名前:名無しさん@編集中 mailto:sage [2008/03/28(金) 00:09:34 ID:dHhwInnL] function nnediresize(clip clip,int target_width,int target_height,float"src_left",float"src_top",float"src_width",float"src_height",int"taps"){a=default(src_left,0.)a=isfloat(a)?a:float(a)b=default(\ src_top,0.)b=isfloat(b)?b:float(b)c=float(width(clip))d=default(src_width,c)d=isfloat(d)?d:float(d)d=d<=0.?c-a+d:d c=float(height(clip))e=default(src_height,c)e=isfloat(e)?e:float(e)e=e<=0.?c-b+e:e c=default(taps,3)function nnediresize_(clip a,int b,int c,float d,float e,float f,float g,int h,bool i,bool j){k=float(b)l=float(c)function nnediresize__(clip a,int b,int c,float d,float e,float f,\ float g,int h,float i,float j){k=lanczosresize(a,b,c,d+i,e+j,f,g,h)d=d/2.+i e=e/2.+j i=(width(a)+7)/8*8j=(height(a)+3)/4*4pointresize(a,i,j,0,0,i,j)a=(b+7)/8*8i=(c+3)/4*4f=(f+float(a-b)*f/float(b))/\ 2.g=(g+float(i-c)*g/float(c))/2.a=a/2i=i/2mergechroma(k,crop(ytouv(lanczosresize(utoy,a,i,d,e,f,g,h),lanczosresize(vtoy,a,i,d,e,f,g,h)),0,0,b,c))}k>f||l>g?k*g<l*f?nnediresize_(nnedi(a,j?1:0,true),b,\ c,d,2.*e,f,2.*g,h,i,true):nnediresize_(turnleft(nnedi(turnright(a),i?1:0,true)),b,c,2.*d,e,2.*f,g,h,true,j):isyv12(a)?nnediresize__(a,b,c,d,e,f,g,h,i?.5:0.,j?.5:0.):lanczosresize(a,b,c,d+(i?.5:0.),e\ +(j?.5:0.),f,g,h)}nnediresize_(clip,target_width,target_height,a,b,d,e,c,false,false)} 早速ですいませんがチョットだけ処理を変えてみました 体感できるとは思いませんが計算量は減ってるはず・・・ ところで皆様は縮小って何使ってます? 縮小だけならspline64とかblackmanよりlanczosの方が良さそうだと思って↑ではlanczos使っていますが もっと凄いのがあれば教えていただけないでしょうか?よろs(ry 改行ってあまり必要なかったんだね まだまだ使えてなかったよ、AviSynth
271 名前:名無しさん@編集中 mailto:sage [2008/03/28(金) 00:13:05 ID:dHhwInnL] >>269 そう仰ってて頂けると助かります、これからもよr(ry
272 名前:名無しさん@編集中 mailto:sage [2008/03/28(金) 01:01:59 ID:DLAr9pAI] ### {{{ TrueTears # メイン画面とワイプの周期が異なるときの逆テレシネ用。 # x, y, w, h: 座標 (x, y) から 幅 w, 高さ h の範囲に フィルター string "top" を掛ける。 # 上記の範囲外にはフィルター string "bottom" を掛ける。 # bright: 0 以外の数値を指定すると "top" の範囲外に Tweakの brightが適用される。範囲特定用。YUY2, YV12のみ。 # show: "top" の部分だけ表示する。 # interlaced: YV12 のとき、縦の解像度が 4の倍数でないとき警告を出す。デフォルト true function TrueTears(clip clp, int "x", int "y", int "w", int "h", string "top", string "bottom", \ string "pre", float "bright", bool "show", bool "interlaced") { x = default( x, 0 ) y = default( y, 0 ) w = default( w, clp.width ) h = default( h, clp.height ) top = default( top, "nul" ) pre = default( pre, "nul" ) bright = default( bright, 0 ) show = default( show, false ) interlaced = default( interlaced, true ) bottom = default( bottom, "nul" ) bottom = (bright != 0) ? bottom + ".Tweak(bright=" + string(bright) + ")" : bottom
273 名前:名無しさん@編集中 mailto:sage [2008/03/28(金) 01:03:24 ID:DLAr9pAI] x_end = x + w y_end = y + h x_end = (x_end >= clp.width) ? clp.width : x_end y_end = (y_end >= clp.Height) ? clp.Height : y_end (interlaced == true) && clp.isYV12 ? Assert(y % 4 == 0, "TrueTears: IsYV12 && (y % 4 == 0)") : NOP (interlaced == true) && clp.isYV12 ? Assert(h % 4 == 0, "TrueTears: IsYV12 && (h % 4 == 0)") : NOP TTx = "TrueTears_x(start=" + string(x) + ", end=" + string(x_end) + ", filter=" + chr34 + top + chr34 \ + ", filter2=" + chr34 + bottom + chr34 + ", pre=" + chr34 + pre + chr34 + ", show=" + string(show) + ")" TTy = "TrueTears_y(start=" + string(y) + ", end=" + string(y_end) + ", filter=" + chr34 + top + chr34 \ + ", filter2=" + chr34 + bottom + chr34 + ", pre=" + chr34 + pre + chr34 + ", show=" + string(show) + ")" #return clp.TrueTears_Y(start=y, end=y_end, filter=TTx, filter2=bottom, pre=pre, show=show) return clp.TrueTears_X(start=x, end=x_end, filter=TTy, filter2=bottom, pre=pre, show=show) } function TrueTears_X(clip clp, int "start", int "end", string "filter", \ string "filter2", string "pre", bool "show") { clp2 = Eval("clp." + filter2) c1 = (start != 0) ? clp2.Crop( 0, 0, -(clp.width - start), -0) : nop c2 = Eval("clp." + pre + ".Crop( start, 0, -(clp.width - end), -0 ) " + filter) c3 = (end < clp.width) ? clp2.Crop( end, 0, -0, -0) : nop c2 = (c2.Framecount > clp2.FrameCount) ? c2.DeleteFrame(lastFrameOf(clp2)) \ : (c2.Framecount < clp2.FrameCount) ? c2.DuplicateFrame(lastFrameOf(clp2)) : c2 c = (show == false) ? ( (start == 0) ? c2 : StackHorizontal(c1, c2) ) : nop return (show == true) ? c2 : (end >= clp.width) ? c : StackHorizontal(c, c3) }
274 名前:名無しさん@編集中 mailto:sage [2008/03/28(金) 01:05:18 ID:DLAr9pAI] function TrueTears_Y(clip clp, int "start", int "end", string "filter", \ string "filter2", string "pre", bool "show") { clp2 = Eval("clp." + filter2) c1 = (start != 0) ? clp2.Crop( 0, 0, -0, -(clp.Height - start) ) : nop c2 = Eval("clp." + pre + ".Crop( 0, start, -0, -(clp.Height - end) ) " + filter) c3 = (end < clp.Height) ? clp2.Crop( 0, end, -0, -0) : nop c2 = (c2.Framecount > clp2.FrameCount) ? c2.DeleteFrame(lastFrameOf(clp2)) \ : (c2.Framecount < clp2.FrameCount) ? c2.DuplicateFrame(lastFrameOf(clp2)) : c2 c = (show == false) ? ( (start == 0) ? c2 : StackVertical(c1, c2) ) : nop return (show == true) ? c2 : (end >= clp.Height) ? c : StackVertical(c, c3) } function NulClip(clip src) { return src.BlankClip(length=0) } # >>267 氏、Thanks. function toParityOf(clip clp, clip src) { return src.GetParity ? clp.AssumeTFF : clp.AssumeBFF } function toFramerateOf(clip clp, clip src) { return clp.AssumeFPS(src.Framerate) } function lastFrameOf(clip clp) { return clp.Framecount - 1 } function nul(clip clp) { return clp } function chr34() { return chr(34) + chr(34) + chr(34) } function SubtitleFilter(clip clp, string filter){ return Eval( "clp " + filter + " Subtitle(" + chr34 + filter + chr34 + ")" ) }
275 名前:名無しさん@編集中 mailto:sage [2008/03/28(金) 01:07:11 ID:DLAr9pAI] 使用例: 直接、TrueTears()を使うか、下のような関数を作る。 # toTrueTears TrueTears自身をstringに変換。3:2プルダウン用 #return TrueTears(x=458, y=148, w=200, h=288, top="""SelectEvery2("5, 2,4").vinverse""", bottom="""SelectEvery2("5, 0,2").nul""", bright=0, show=false) #TT = toTrueTears(x=458, y=148, w=200, h=288, top="5, 2,4", bottom="5, 0,2", top_filter="vinverse", bottom_filter="nul", show=false, interlaced=true) #return Eval(TT) function toTrueTears(int "x", int "y", int "w", int "h", string "top", string "bottom", string "top_filter", \ string "bottom_filter", float "bright", bool "show", bool "interlaced") { top_filter = default( top_filter, "nul" ) bottom_filter = default( bottom_filter, "nul" ) bright = default( bright, 0 ) show = default( show, false ) interlaced = default( interlaced, true ) # string を渡すフィルタによってこの部分を変える。 return "TrueTears(x=" + string(x) + ", y=" + string(y) + ", w=" + string(w) + ", h=" + string(h) \ + ", top=" + chr34 + "SelectEvery2(" + chr(34) + top + chr(34) + ")." + top_filter + chr34 \ + ", bottom=" + chr34 + "SelectEvery2(" + chr(34) + bottom + chr(34) + ")." + bottom_filter + chr34 \ + ", bright=" + string(bright) + ", show=" + string(show) + ", interlaced=" + string(interlaced) + ")" }
276 名前:名無しさん@編集中 mailto:sage [2008/03/28(金) 01:08:14 ID:DLAr9pAI] string を同期のためのtimecodeを出力する関数に渡す。(ClipArray()はdebug中。) True Tears のオープニング。 frame 1355から 2100までを 24000/1001 fps, 2101 frameの Framerateのみ修正。 ClipArray( start=1355, end=1519, ivtc="5, 0,2", pre="", post="", ff="em" ) TT1 = toTrueTears(x=60, y=96, w=202, h=292, top="5, 0,3", bottom="5, 0,2") ClipArray( start=1520, end=1564, ivtc=TT1, pre="", post="", ff="", mode=2 ) ClipArray( start=1565, end=1669, ivtc="5, 0,2", pre="", post="MergeField(frame=82)", ff="e0" ) TT2 = toTrueTears(x=60, y=120, w=360, h=244, top="5, 1,3", bottom="5, 2,4") ClipArray( start=1669, end=1759, ivtc=TT2, pre="", post="", ff="", mode=2 ) ClipArray( start=1760, end=1794, ivtc="5, 0,2", pre="", post="", ff="" ) TT3 = toTrueTears(x=458, y=144, w=204, h=296, top="5, 1,4", bottom="5, 0,2") ClipArray( start=1795, end=1911, ivtc=TT3, pre="", post="", ff="", mode=2 ) TT4 = toTrueTears(x=226, y=48, w=270, h=388, top="5, 0,2", bottom="5, 1,3") ClipArray( start=1912, end=1979, ivtc=TT4, pre="", post="", ff="", mode=2 ) ClipArray( start=1980, end=2101, ivtc="5, 0,2", pre="", post="", ff="" )
277 名前:名無しさん@編集中 mailto:sage [2008/03/28(金) 21:00:54 ID:DLAr9pAI] >>246 の応用。ドロップフレームより算出されたフレームレートをNTSCのものに変換。 function toNTSC(clip clp) { #return (clp.FramerateNumerator % 999 == 0) ? clp.AssumeFPS( clp.FramerateNumerator * 1000000, clp.FramerateDenominator * 999999 ) : clp return (clp.FramerateNumerator % 999 == 0) && (clp.FramerateDenominator % 5 == 0) \ ? clp.AssumeFPS( clp.FramerateNumerator/999 * 200000, clp.FramerateDenominator/5 * 1001 ) : clp } # frame: フィルタを適用する FrameNumber デフォルト -1 Last Frame # func: フィルタ function MapFrame(clip clp, int "frame", string "func") { frame = default( frame, lastFrameOf(clp) ) func = default( func, "nul" ) return clp.FilterRange(start=frame, pre=func) } ## {{{ FilterRange # FilterRangeを値が0より小さいときも使えるように変更。 # # startから endまで filterを適用する。 # FilterRange(100, 200, "vinverse") 100 frame から 200 frameまでfilterを適用する。 # すべてのframeにfilterを適用するには、start=0, end=0 (end=clip.Framecount-1) を指定。 #
278 名前:名無しさん@編集中 mailto:sage [2008/03/28(金) 21:01:50 ID:DLAr9pAI] # option # start: filterを開始するframe。startのみ指定すると、その Frameのみfilterを適用する。 # start < 0 のとき、 LastFrame - abs(start) + 1 が start frameとなる。 # FilterRange(start=0, filter="vinverse") 1st frameだけにフィルターをかける。 # FilterRange(start=-1, filter="vinverse") start=-1 で Last frameだけにフィルターをかける。 # FilterRange(start=-5, filter="vinverse") Last frameから数えて 5frame分前のframeだけにフィルターをかける。 # FilterRange(start=-5, end=0, filter="vinverse") Last frameから数えて 5frame分前のframeからLast frameまでフィルターをかける。 # # end: filterを適用する 終了frame。end < 0 のとき、start frameからFramecountがabs(end)となる範囲にfilterを適用する。 # FilterRange(start=100, end=-50, filter="vinverse") 100 frame から 50 frame分(149 frame)filterを適用する。 # FilterRange(start=-5, end=-1, filter="vinverse") Last frameから数えて 5frame分前のframeだけにフィルターをかける。 # # filter: Trimのあとに適用するフィルタ。filterのみ指定すると一番最後の frameにみfilterを適用する。 # FilterRange(filter="vinverse") Last frameだけにフィルターをかける。 # # pre: Trimの前に適用するフィルタ。自分自身以外(Trimの範囲外)の frameを参照するfilterを使うとき使用。 # # show: filterを適用した部分だけ表示する。 # # audio_dub: FilterRangeで audioにフィルタを使用するのが目的のとき falseを指定する。 function FilterRange(clip clp, int "start", int "end", string "filter", string "pre", bool "show", bool "audio_dub") { start = default( start, -1 ) end = default( end, -1 ) filter = default( filter, "nul" ) pre = default( pre, "nul" ) show = default( show, false ) audio_dub = default( audio_dub, true )
279 名前:名無しさん@編集中 mailto:sage [2008/03/28(金) 21:02:49 ID:DLAr9pAI] non = (start < 0) && (clp.Framecount <= abs(start) - 1) ? true : false filter = (non == true) ? "nul" : filter pre = (non == true) ? "nul" : pre start = (start < 0) ? ( (clp.Framecount > abs(start) - 1) ? lastFrameOf(clp) - abs(start) + 1 : 0 ) : start end = (end < 0) ? ( (start != 0) || (end != -1) ? start - end - 1 : -1 ) : end end = (end > lastFrameOf(clp)) ? lastFrameOf(clp) : end c1 = (start != 0) ? clp.Trim( 0, ((start==1)?0:start) - 1 ) : NulClip(clp) c2 = Eval("clp." + pre + ".Trim(start, end) " + filter + ".toFramerateOf(clp)") c3 = (end != 0) && (end != lastFrameOf(clp)) && (clp.Framecount != 1) \ ? clp.Trim( ((start!=0)||(end!=-1)?end:0) + 1, 0 ) : NulClip(clp) (show == false) ? c1 + c2 + c3 : c2 return (audio_dub == true) ? AudioDubEx( last, !show?clp:clp.Trim(start,end) ) : last }
280 名前:名無しさん@編集中 mailto:sage [2008/03/28(金) 21:05:23 ID:DLAr9pAI] # string "frames" に属するフレームに フィルタ string "func" を適用する。 # FilterRange2(func="GreyScale", frames="0,-1, 1,1, 5,5, 100,200, 800,0") # 0, 1, 5, 100-200, 800-lastFrame に filterを適用する。 function FilterRange2(clip clp, string "func", string "frames", int "start", int "pre_end", int "i", clip "clip2") { func = Default( func, "nul" ) frames = Default( frames, "0, 0" ) start = Default( start, 0 ) pre_end = Default( pre_end, 0 ) i = Default( i, 0 ) clip2 = Default( clip2, NulClip(clp) ) (i > 1) && (i % 2 == 1) ? Assert(pre_end < start, "Previous or Current End Frame: " + string(pre_end) \ + " is larger than or equal to Start Frame: " + string(start) + "." ) : NOP offset = FindStr(frames, ",")
281 名前:名無しさん@編集中 mailto:sage [2008/03/28(金) 21:06:03 ID:DLAr9pAI] return (offset != 0) \ ? Eval(""" j = int(Value(LeftStr(frames, offset-1))) end = (i % 2 == 0) ? j - 1 : j (j != start) || ((i % 2 == 1) && (j != 0)) ? clp.Trim( start, end ) : NulClip(clp) (i % 2 == 1) ? Eval(func) : last pre_end = (i % 2 == 1) ? end : pre_end clp.FilterRange2( func=func, frames=MidStr(frames, offset+1), start=(j==0)?0:((end!=-1)?end:0)+1, pre_end=pre_end, i=i+1, clip2=clip2+last ) """) \ : ((i != 0) \ ? clip2 + Eval(""" end = int(Value(frames)) end = (end == 0) || (end > lastFrameOf(clp)) ? lastFrameOf(clp) : end Assert(start <= end, "Start: " + string(start) + " is larger than End Frame: " + string(start) + "." ) clp.Trim(start, end) Eval(func) \ + ((end != lastFrameOf(clp)) ? clp.Trim(end+1,0).subtitle(string(frames)) : NulClip(clp)) """) \ : clp) } ## }}}
282 名前:名無しさん@編集中 mailto:sage [2008/03/28(金) 21:47:39 ID:DLAr9pAI] >>281 × \ + ((end != lastFrameOf(clp)) ? clp.Trim(end+1,0).subtitle(string(frames)) : NulClip(clp)) ○ \ + ((end != lastFrameOf(clp)) ? clp.Trim(end+1,0) : NulClip(clp))
283 名前:にーやん mailto:sage [2008/04/03(木) 23:31:39 ID:T0mh+SLT] >>103 ChangePlaySpeedをAviSynth Wikiのユーザー定義関数のページに追加させていただきました。 もし何か問題やおかしな点があれば言ってください。
284 名前:名無しさん@編集中 mailto:sage [2008/04/04(金) 04:43:20 ID:o/vsksLv] にーやん乙
285 名前:103 mailto:sage [2008/04/04(金) 23:24:22 ID:eIjWKAmU] 掲載ありがとうございます。 コードに全角スペースが含まれていますので、半角に差し替えさせて頂きました。 (当時は字下げの仕方を知らなかったもので…。) それにしても、再生速度の話題は半年に1回ぐらいのペースで出てきますねぇ。
286 名前:名無しさん@編集中 mailto:sage [2008/04/05(土) 15:23:07 ID:RfyLeg/f] アス非を変えず、余った空間は黒で塗りつぶしてクリップを指定した解像度にするスクリプト考えてるんですが a=0 if(a==0){ MessageClip("おk") }else{ MessageClip("ダメ") } AviSynthってこのif構文使えないんですか?
287 名前:名無しさん@編集中 mailto:sage [2008/04/05(土) 15:40:48 ID:KohPCHpJ] 3項演算は可能
288 名前:名無しさん@編集中 mailto:sage [2008/04/05(土) 16:12:43 ID:RfyLeg/f] 自分がif elseに頼り切ってる事が分かった ループ系も無いのね function rc(string "path" , float "from" , float "to" ){ c1 = AVISource(path) mode = (Float(Height(c1)) / Float(Width(c1))>0.75) ? "A" : "B" #modeがAなら左右に黒枠を付ける #modeがBなら上下に黒枠を付ける add_size = (mode=="A") ? (int(Height(c1)/0.75)-Width(c1))/2 : (int(Width(c1)*0.75)-Height(c1))/2 c1 = (mode=="AA")?AddBorders (c1, add_size,0,add_size,0):AddBorders (c1, 0,add_size,0,add_size) c1 = BicubicResize(c1,640,480) c1 = Trim(c1, int(from*Framerate(c1)),int(from*Framerate(c1)+to*Framerate(c1))) c1 = ChangeFPS(c1,30) c1 = ResampleAudio(c1, 48000) return c1 } pathに動画のフルパス、fromに開始秒、toに継続時間 を指定すると pathの動画を開いてfrom秒〜from+to秒に切り取って、fpsを30にしてサンプリングレート48000に統一して アス比を4:3にして解像度を640x480にする メドレーなんかに使えるのではないかと rc("G:\A.avi",0,99.8)++rc("G:\B.avi",0,99.8) こんな感じで
289 名前:にーやん mailto:sage [2008/04/06(日) 01:20:07 ID:JX+oQBdu] >>285 そのまま貼り付けただけだったので、全角スペースに気づきませんでした。 修正ありがとうございました。
290 名前:名無しさん@編集中 mailto:sage [2008/04/19(土) 21:08:30 ID:U1tfefvm] 保守
291 名前:名無しさん@編集中 mailto:sage [2008/05/01(木) 22:18:17 ID:dE1O9TzW] 見つけたので貼り 946 名前:[名無し]さん(bin+cue).rar[sage] 投稿日:2008/04/06(日) 15:11:30 ID:SeqvFgpF0 YUKKYの設定ファイルをコピー ttp://nagamochi.info/src/up2812.png EEDI2を使わずにリサイズ ttp://nagamochi.info/src/up2811.png まぁエンコードの速さはかなりいい感じかな 965 名前:946[sage] 投稿日:2008/04/06(日) 21:01:15 ID:SeqvFgpF0 FrameCache(9).IT(fps = 24, ref = "TOP", diMode = 1) FrameCache(9).crop(8,0,-8,0) FrameCache(9).ffdshow("unsharp") FFT3DGPU() GPU_BeginYV12 GPU_LanczosResize(1280,720) GPU_EndYV12() FrameCache(9).asharp(0.8,1.5,0.10,hqbf=true) FrameCache(9).aWarpSharp(8,3,0.2,2) FrameCache(9).WarpSharp(128, 3, 108, -0.6) FrameCache(9).crop(0,4,-0,0) FrameCache(9).AddBorders(0, 4, 0, 0) ffdshowはunsharp maskの強さ20 こんな感じの設定ね FrameCache意味有るのか知らないが付けてみた MT使えないからquadだとWarpSharpあたりが足を引っ張るかもしれない EEDI2使ってない分早いと思う みなみけ以外でYUKKYの設定のあるDVD持ってないから、他のDVDにも通用するは、わからない
292 名前:名無しさん@編集中 mailto:sage [2008/05/01(木) 22:23:51 ID:MUZ5OnBO] 静止画の時点でここまで酷いと動画では見るに耐えないと思うが… というかそんなもの貼るなよ
293 名前:名無しさん@編集中 mailto:sage [2008/05/01(木) 22:27:27 ID:kNeRZAyc] ねーよwww YUKKYの汚すぎだろwww また糞比較コピペの誕生かよwww
294 名前:名無しさん@編集中 mailto:sage [2008/05/01(木) 22:33:09 ID:kNeRZAyc] ま、文字テロップはEEDI2やNNEDI使うよりlanczosで拡大したほうがきれいになるのは確かだけどな。
295 名前:名無しさん@編集中 mailto:sage [2008/05/03(土) 00:31:42 ID:wBNWo9eP] 誰YUKKYって
296 名前:名無しさん@編集中 mailto:sage [2008/05/03(土) 01:00:28 ID:z3ie269Q] もはやYUKKYもしらない厨房や消防もこのスレに入り込んできたのか。 まぁYUKKYなんて糞職人のことは知らないほうがいいのかもしれないな。
297 名前:名無しさん@編集中 mailto:sage [2008/05/03(土) 01:33:19 ID:XLCrT/1x] 兵藤ユキ?
298 名前:名無しさん@編集中 mailto:sage [2008/05/03(土) 02:36:33 ID:VLhE+otR] 職人ってなんの職人?
299 名前:名無しさん@編集中 mailto:sage [2008/05/03(土) 06:14:29 ID:oD3hByv0] [名無し]さん(bin+cue).rar ダウソですね
300 名前:名無しさん@編集中 mailto:sage [2008/05/03(土) 13:49:08 ID:dbsFAosT] FrameCache(9).asharp(0.8,1.5,0.10,hqbf=true) FrameCache(9).aWarpSharp(8,3,0.2,2) FrameCache(9).WarpSharp(128, 3, 108, -0.6) 何がしたいんだか・・
301 名前:名無しさん@編集中 mailto:sage [2008/05/03(土) 17:26:29 ID:wBNWo9eP] 704x396な向こうの人か確かにショボイよな
302 名前:名無しさん@編集中 mailto:sage [2008/05/04(日) 12:25:58 ID:Qn18XQ9S] 叩くだけなら誰だってできるよ お前らの設定晒してみろや
303 名前:名無しさん@編集中 mailto:sage [2008/05/04(日) 13:05:41 ID:htIRYcOM] 何を今更w
304 名前:名無しさん@編集中 mailto:sage [2008/05/04(日) 15:10:55 ID:X4b2zutb] 相手にするな うつるぞ
305 名前:名無しさん@編集中 mailto:sage [2008/05/15(木) 00:02:22 ID:h3mxdh4y] ##ソースファイル読み込み## src = DGDecode_MPEG2Source("N:\みなみけ\01\VTS_01_1.d2v").AssumeTFF() OP = src.FrameCache(9).Trim(0,3147).DoubleWeave().SelectEvery(10,0,2,5,7) a = src.FrameCache(9).Trim(3148,22957).DoubleWeave().SelectEvery(10,0,2,5,7) b = src.FrameCache(9).Trim(22958,39561).DoubleWeave().SelectEvery(10,0,2,5,7) ED = src.FrameCache(9).Trim(39562,42257).DoubleWeave().SelectEvery(10,0,2,5,7) next = src.FrameCache(9).Trim(42258,0).DoubleWeave().SelectEvery(10,0,2,5,7) last = OP ++ a ++ b ++ ED ++ next Crop(8,0,-8,0) ##映像フィルタ## asharp(0.1,11,-1,true) FFT3dFilter(plane=4,sigma=1.2) EEDI2(mthresh=10,lthresh=20,vthresh=20,estr=2,dstr=6,maxd=26,map=0,nt=50,pp=0).TurnRight() EEDI2(mthresh=10,lthresh=20,vthresh=20,estr=2,dstr=6,maxd=26,map=0,nt=50,pp=0).TurnLeft() WarpSharp(60,6,165,0) WarpSharp(60,6,165,0) LanczosResize(1280,720,taps=16) YSharp(1.16) Crop(0,4,0,0) AddBorders(0,4,0,0) return last ちなみにYUKKYの設定はこっちのほうな 正直AvsP開いた瞬間閉じたわ、、、
306 名前:名無しさん@編集中 mailto:sage [2008/05/15(木) 16:26:23 ID:FzSfg8qc] #########BlackEdge########## # 作者 YUKKY # # 必要なプラグイン # # ・mt_masktools # # ・asharp ・EEDI2 # function BlackEdge(clip clip, int "thY", bool "dr", bool "resize"){ thY = default(thY, 6) #エッジマスクを作成する際の輝度閾値 dr = default(dr, false) #デリンギング処理を行うかどうか(trueのみ行う) resize = default(resize, true) #EEDI2の後に元の解像度に戻すかどうか(false以外は戻す) src = clip src = ((dr == true) \ ? src.asharp(0.1,4.0) \ : (dr == false) \ ? src \ : src) diff1 = Subtract(src.mt_expand().mt_inpand(),src) diff2 = Subtract(src,src.mt_inflate().mt_deflate()) temp1 = mt_adddiff(src,mt_makediff(diff2,diff1)) temp2 = mt_adddiff(src,temp1,y=1,u=3,v=3) temp = mt_average(temp1,temp2) map = src.mt_edge(mode="min/max",thY1=thY,thY2=thY) clip = mt_merge(src,temp,map,u=1,v=1) clip = clip.EEDI2().TurnRight().EEDI2().TurnLeft() clip = ((resize == true) \ ? clip.LanczosResize(clip.width/2,clip.height/2,taps=16) \ : (resize == false) \ ? clip \ : clip.LanczosResize(clip.width/2,clip.height/2,taps=16)) return clip }
307 名前:名無しさん@編集中 mailto:sage [2008/05/15(木) 17:09:07 ID:vWlBjcYr] ゴミばっかw
308 名前:名無しさん@編集中 mailto:sage [2008/05/15(木) 18:40:48 ID:XU2EalRv] 犯罪者の話題なんて出すなよ
309 名前:名無しさん@編集中 mailto:sage [2008/05/15(木) 19:07:02 ID:hOlnTnpW] さすがダウンソクオリティー こんなクソ関数を堂々と公開して後悔。ナチッテ、、、
310 名前:名無しさん@編集中 mailto:sage [2008/05/16(金) 14:09:13 ID:NrCRByE4] >>309
311 名前:名無しさん@編集中 mailto:sage [2008/05/16(金) 19:40:44 ID:NrCRByE4] scriptclipの使い方が良く解んないから試しに逆テレ氏ね関数作ってみた globalな変数しか受け付けないから関数内ではとても使いにくいです、ついでに言うと素直にプラグインで作った方が軽そうな予感 conditional系って使い道あるの? function SakuratanIVTC(clip clip,bool"debug"){ doubleweave(clip) interleave(last,merge(trim(1,0),last)) default(debug,false)?info:last c0=selectevery(10,0,5) c0=stackhorizontal(c0,trim(c0,0,-1)+trim(c0,0,framecount(c0)-2),trim(c0,1,framecount(c0)-1)+trim(c0,framecount(c0)-1,-1)) trim(0,-1)+trim(0,framecount-2) c1=selectevery(10,0,5) c1=stackhorizontal(c1,trim(c1,0,-1)+trim(c1,0,framecount(c1)-2),trim(c1,1,framecount(c1)-1)+trim(c1,framecount(c1)-1,-1)) trim(0,-1)+trim(0,framecount-2) c2=selectevery(10,0,5) c2=stackhorizontal(c2,trim(c2,0,-1)+trim(c2,0,framecount(c2)-2),trim(c2,1,framecount(c2)-1)+trim(c2,framecount(c2)-1,-1)) trim(0,-1)+trim(0,framecount-2) c3=selectevery(10,0,5) c3=stackhorizontal(c3,trim(c3,0,-1)+trim(c3,0,framecount(c3)-2),trim(c3,1,framecount(c3)-1)+trim(c3,framecount(c3)-1,-1)) trim(0,-1)+trim(0,framecount-2) c4=selectevery(10,0,5) c4=stackhorizontal(c4,trim(c4,0,-1)+trim(c4,0,framecount(c4)-2),trim(c4,1,framecount(c4)-1)+trim(c4,framecount(c4)-1,-1)) trim(0,-1)+trim(0,framecount-2) c5=selectevery(10,0,5) c5=stackhorizontal(c5,trim(c5,0,-1)+trim(c5,0,framecount(c5)-2),trim(c5,1,framecount(c5)-1)+trim(c5,framecount(c5)-1,-1)) stackhorizontal(c0,c1,c2,c3,c4,c5) scriptclip("""\ w=width/6\ c0=crop(0,0,w,0)\ crop(w,0,0,0)\ c1=crop(0,0,w,0)\ crop(w,0,0,0)\
312 名前:名無しさん@編集中 mailto:sage [2008/05/16(金) 19:40:55 ID:NrCRByE4] c2=crop(0,0,w,0)\ crop(w,0,0,0)\ c3=crop(0,0,w,0)\ crop(w,0,0,0)\ c4=crop(0,0,w,0)\ c5=crop(w,0,0,0)\ why=w*height\ whuv=why/4\ b0=blur(c0,0,1)\ b1=blur(c1,0,1)\ b2=blur(c2,0,1)\ b3=blur(c3,0,1)\ b4=blur(c4,0,1)\ b5=blur(c5,0,1)\ d0=why*lumadifference(c0,b0)+whuv*(chromaudifference(c0,b0)+chromavdifference(c0,b0))\ d1=why*lumadifference(c1,b1)+whuv*(chromaudifference(c1,b1)+chromavdifference(c1,b1))\ d2=why*lumadifference(c2,b2)+whuv*(chromaudifference(c2,b2)+chromavdifference(c2,b2))\ d3=why*lumadifference(c3,b3)+whuv*(chromaudifference(c3,b3)+chromavdifference(c3,b3))\ d4=why*lumadifference(c4,b4)+whuv*(chromaudifference(c4,b4)+chromavdifference(c4,b4))\ d5=why*lumadifference(c5,b5)+whuv*(chromaudifference(c5,b5)+chromavdifference(c5,b5))\ d5=1.25*d5\ min01=min(d0,d1)\ min012=min(min01,d2)\ min0123=min(min012,d3)\ stackhorizontal(d5<min(min0123,d4)?c5:d4<min0123?c4:d3<min012?c3:d2<min01?c2:d1<d0?c1:c0,c0,c0,c0,c0,c0)\ """) crop(0,0,width(clip),0) } とりあえず作ってみただけなんで↑の関数自体は役に立ちませんwww だれかscriptclipの素晴らしさを教えてくれ〜
313 名前:名無しさん@編集中 mailto:sage [2008/05/19(月) 17:10:11 ID:ugcKDwbB] >>305 avisynthでエンコを始めようとしている者です。YUKKY氏の設定を見て、 >src = DGDecode_MPEG2Source("N:\みなみけ\01\VTS_01_1.d2v").AssumeTFF() >OP = src.FrameCache(9).Trim(0,3147).DoubleWeave().SelectEvery(10,0,2,5,7) >a = src.FrameCache(9).Trim(3148,22957).DoubleWeave().SelectEvery(10,0,2,5,7) >b = src.FrameCache(9).Trim(22958,39561).DoubleWeave().SelectEvery(10,0,2,5,7) >ED = src.FrameCache(9).Trim(39562,42257).DoubleWeave().SelectEvery(10,0,2,5,7) >next = src.FrameCache(9).Trim(42258,0).DoubleWeave().SelectEvery(10,0,2,5,7) >last = OP ++ a ++ b ++ ED ++ next この辺はなるほどと感じましたが、私のavsに取り入れたとき何か問題はありますか? だいぶ叩かれている様なので。
314 名前:名無しさん@編集中 mailto:sage [2008/05/19(月) 17:20:56 ID:LdLKSga4] ( ゚Д゚)ハァ?
315 名前:名無しさん@編集中 mailto:sage [2008/05/19(月) 17:22:24 ID:ciIyxm0m] 釣だろシカト汁
316 名前:名無しさん@編集中 mailto:sage [2008/05/19(月) 22:03:03 ID:6/EdyahL] みなみけ 1)皆、三毛 (みな三毛猫の意) 2)南家 (南さんの家で共有しているパソコンの意)
317 名前:313 mailto:sage [2008/05/24(土) 15:41:04 ID:q+JZgKsj] 釣りではありませんでしたが、試さずに質問したのは失礼しました。 Trimより後を省いてVirtualDubで開いてみました。 結果極端に重くなることもなく普通に使えました。 何もなかったかのように312の続きをどうぞ↓
318 名前:名無しさん@編集中 mailto:sage [2008/05/24(土) 16:05:08 ID:E3lV26Fb] ( ゚Д゚)ハァ?
319 名前:名無しさん@編集中 mailto:sage [2008/05/24(土) 17:54:41 ID:ajpAugIN] >>317 無茶するなよ つーかどこ省いたって?
320 名前:名無しさん@編集中 mailto:sage [2008/05/24(土) 18:51:28 ID:pix6KGTi] 釣だろシカト汁
321 名前:313 mailto:sage [2008/05/25(日) 20:10:49 ID:z5lBM62D] >>317 下のようなAVSを作ったわけです。突っ込み大歓迎です。 lgd = "E:\EncFiles\logo\" LoadAviUtlInputPlugin("C:\Program Files\EARTH SOFT\PV3 3.x\AviUtl\EARTH SOFT DV.aui", "EARTHSOFTDV") logo = "TBS_1920x1080.lgd" src = EARTHSOFTDV("E:\TVRec\マクロスF(フロンティア) 5月24日.dv").AssumeTFF() at_in = 764 at_out = 6245 at_fin = 5 at_fidur = 10 op_in = at_out + 1 op_out = 9244 op_fout = op_out - op_in - 5 op_fodur = 9 (省略) nx_in = 50274 nx_out = 51112 nx_fin = 5 nx_fidur = 10 nx_fout = nx_out-nx_in-6 nx_fodur = 9 avantitle = src.FrameCache(9).Trim(at_in,at_out).EraseLOGO(logofile=lgd+logo, start=at_fin, fadein=at_fidur).IT(fps=24, ref="TOP") OP = src.FrameCache(9).Trim(op_in,op_out).EraseLOGO(logofile=lgd+logo, end=op_fout, fadeout=op_fodur).IT(fps=24, ref="TOP") a = src.FrameCache(9).Trim(a_in,a_out).EraseLOGO(logofile=lgd+logo, start=a_fin, end=a_fout, fadein=a_fidur, fadeout=a_fodur).IT(fps=24, ref="TOP") b = src.FrameCache(9).Trim(b_in,b_out).EraseLOGO(logofile=lgd+logo, start=b_fin, fadein=b_fidur).IT(fps=24, ref="TOP") ED = src.FrameCache(9).Trim(ed_in,ed_out).EraseLOGO(logofile=lgd+logo, end=ed_fout, fadeout=ed_fodur).IT(fps=24, ref="TOP") next = src.FrameCache(9).Trim(nx_in,nx_out).EraseLOGO(logofile=lgd+logo, start=nx_fin, end=nx_fout, fadein=nx_fidur, fadeout=nx_fodur).IT(fps=24, ref="TOP") last = avantitle ++ OP ++ a ++ b ++ ED ++ next
322 名前:名無しさん@編集中 mailto:sage [2008/05/25(日) 20:14:12 ID:JE8451jT] 頼むからくだらないの貼らないでくれないか、邪魔だから
323 名前:名無しさん@編集中 mailto:sage [2008/05/25(日) 21:05:55 ID:A5pcvhg3] 釣だろシカト汁
324 名前:名無しさん@編集中 mailto:sage [2008/05/25(日) 22:21:30 ID:N1AlUv3w] >>321 何がしたいかなんとなく分かったけど・・・ つーか何に対してなるほどと思ったのか最初に書けやw
325 名前:名無しさん@編集中 mailto:sage [2008/05/25(日) 22:23:37 ID:gLQSchS8] 似たような事する記述方法色々あるけど>>321 のはマンドクサくてヤだな。
326 名前:名無しさん@編集中 mailto:sage [2008/05/29(木) 19:11:40 ID:BI+obHLk] 最近地デジチューナーを入手したんで、これをGV-MVP/RX2に突っ込んで SDキャプしています。 今までは、 Crop(4,0,704,480) LanczosResize(640,480) だったんですが、WIDEのままエンコするには、 Crop(0,0,716,480) LanczosResize(704,396) ぐらいでいいでしょうか? MPEG2ソースを見るのと同じサイズで見ようと思うと LanczosResize(848,480) かなぁと思ったんですが、横にムダに引き伸ばすのは間抜けですか?
327 名前:名無しさん@編集中 mailto:sage [2008/05/29(木) 19:24:54 ID:NuUP41Zu] スレ (´∀`( ´∀`) チガイ
328 名前:名無しさん@編集中 mailto:sage [2008/06/01(日) 20:00:37 ID:nuzxeT4J] >>206 修正(mergeを省略するとフィルタが適応されなかった不具合の修正) #for…繰り返し処理を行う # start 値の初期値 # end 値の終了値 # step 刻み値 # filter 繰り返し分適応させるフィルタ(省略すると何もしません、“""”でも省略扱いです。) # 繰り返しの値は“i”もしくは“crnt”で取得出来ます # merge クリップ結合関数(省略すると最後に作成したクリップを返します、“""”でも省略扱いです。) # 繰り返し途中に作成したクリップは早めに生成されたクリップが“c1”、 # 遅めに生成されたクリップが“c2”になります # この2つのクリップを1つのクリップに結合します。 function for(clip clip, int start, int end, int step, string "filter", string "merge") { filter = default(filter, "") merge = default(merge, "") merge = (("" != merge)? merge: "c2") i = start crnt = start next = crnt + step c1 = clip c2 = (("" != filter)? Eval("clip." + filter): clip) c2 = ((start < end) ? c2.for(next, end, step, filter, merge): c2) return ((start < end)? Eval(merge): c1) } この関数色々な所で使っているから、不具合があると再確認事項が多くて困る。
329 名前:名無しさん@編集中 mailto:sage [2008/06/01(日) 20:06:26 ID:nuzxeT4J] >>156-157 ,328使用 #DotCleaner…2値の画像のドットノイズを削減します # strong ノイズ除去の強さ(省略なら“1”、“0”なら変化無し) # 1なら黒拡張1回→白拡張2回→黒拡張1回 # 2なら黒拡張2回→白拡張4回→黒拡張2回 # -1なら白拡張1回→黒拡張2回→白拡張1回 function DotCleaner(clip clip, int "strong") { strong = default(strong, 1) darken = """DotCleaner CrossSelfOverlay("darken")""" lighten = """DotCleaner CrossSelfOverlay("lighten")""" expansion = ((0 < strong)? darken: lighten) reduction = ((0 < strong)? lighten: darken) strong = ((0 < strong)? strong: -strong) function DotCleaner CrossSelfOverlay(clip clip, string mode) { base = clip clip = clip.Overlay(base, mode=mode, x=-1, y=0).Overlay(base, mode=mode, x=1, y=0).Overlay(base, mode=mode, x=0, y=1).Overlay(base, mode=mode, x=0, y=-1) return clip } type = clip.GetPixelType() clip = clip.ConvertToYUY2() clip = clip.for(0, strong, 1, expansion).for(0, strong*2, 1, reduction).for(0, strong, 1, expansion) return clip.SetPixelType(type) } mt_logic使った方が良いと思いますが、取り敢えず標準フィルタで作成。
330 名前:名無しさん@編集中 mailto:sage [2008/06/01(日) 20:08:45 ID:nuzxeT4J] >>156-157 使用 #LuminanceKey…他クリップをルミナンスキーとし、マスク画像を生成します # diff ルミナンスキー判定用クリップ # tolerance マスク許容範囲(省略なら“25”、“0”なら完全一致のみです) # 負数なら相違箇所をマスクします # color マスク色(省略なら“$00FF00”です) # alpha only アルファ用のクリップを生成する(省略・偽ならマスク、真ならアルファです) # effect マスクの加工フィルタ(省略すると何もしません、“""”でも省略扱いです) # effect clip マスクの加工フィルタにて参照出来るクリップ(省略するとdiffと同じです) function LuminanceKey(clip clip, clip diff, int "tolerance", int "color", bool "alpha only", string "effect", clip "effect clip") { color = default(color, $00FF00) tolerance = default(tolerance, 25) alpha only = default(alpha only, false) effect = default(effect, "") effect clip = default(effect clip, diff) is mask = ((0 <= tolerance)? true: false) tolerance = ((0 <= tolerance)? tolerance: -tolerance)
331 名前:名無しさん@編集中 mailto:sage [2008/06/01(日) 20:10:19 ID:nuzxeT4J] type = clip.GetPixelType() diff = clip.Overlay(diff, mode="difference").ColorYUV(off y=-127) diff = diff.ConvertToRGB32() diff = diff.ColorKeyMask($000000, tolerance) diff = diff.ShowAlpha() diff = ((is mask)? diff.Invert(): diff) diff = (("" != effect)? Eval("diff." + effect): diff) clip = clip.ConvertToRGB32() bg = clip.BlankClip(color=color) bg = bg.Mask(diff) clip = clip.Layer(bg, "add") clip = ((alpha only)? diff.Invert(): clip) return clip.SetPixelType(type) }
332 名前:名無しさん@編集中 mailto:sage [2008/06/01(日) 20:11:42 ID:nuzxeT4J] trio = LoadTrioClip() duo = LoadDuoClip() alpha = trio.LuminanceKey(duo, 10, alpha only=true, effect="DotCleaner(1).Blur(1.0)") luminance = trio.LuminanceKey(duo, 10, effect="DotCleaner(1).Blur(1.0)") up = StackHorizontal(trio, duo) down = StackHorizontal(alpha, luminance) StackVertical(up, down) ttp://nagamochi.info/src/up5363.png
333 名前:名無しさん@編集中 mailto:sage [2008/06/01(日) 20:22:54 ID:nuzxeT4J] >>329-332 すいません、そこここの“_”が消えています。 DotCleaner_CrossSelfOverlay alpha_only effect_clip is_mask off_y
334 名前:名無しさん@編集中 mailto:sage [2008/06/16(月) 08:42:47 ID:gzRzZUdB] ほ
335 名前:名無しさん@編集中 mailto:sage [2008/07/04(金) 17:34:39 ID:sLf+cs9e] アニメエンコで定番のUnSharpMask+WarpSharpに対抗してみた。 それだけ。 LoadPlugin("ffmpegsource.dll") LoadPlugin("FFT3DGPU.dll") LoadPlugin("rgbhack.dll") LoadPlugin("LGhost.dll") LoadPlugin("PMD.dll") FFPP(pp="vdeblock:chrom/hdeblock:chrom/dering:chrom") ConvertToRGB(matrix="rec709") red=ShowRed("YV12").FFT3DGPU(plane=0,bt=-1,bw=32,bh=32,ow=16,oh=16,precision=2,sharpen=4,interlaced=false).LGhost(1).PMD() green=ShowGreen("YV12").FFT3DGPU(plane=0,bt=-1,bw=32,bh=32,ow=16,oh=16,precision=2,sharpen=4,interlaced=false).LGhost(1).PMD() blue=howBlue("YV12").FFT3DGPU(plane=0,bt=-1,bw=32,bh=32,ow=16,oh=16,precision=2,sharpen=4,interlaced=false).LGhost(1).PMD() YYYToRGB(red,green,blue) ConvertToYV12(matrix="PC.709") flipvertical FFPP(pp="vdeblock:chrom/hdeblock:chrom/dering:chrom")
336 名前:名無しさん@編集中 mailto:sage [2008/07/05(土) 21:00:13 ID:g04jIkC2] ショボ
337 名前:名無しさん@編集中 mailto:sage [2008/07/06(日) 12:04:08 ID:CdYOyW/p] >>336 最高の賛辞
338 名前:名無しさん@編集中 mailto:sage [2008/07/06(日) 13:15:38 ID:DPre5XeQ] >>336 Good Job !
339 名前:名無しさん@編集中 mailto:sage [2008/07/21(月) 01:55:25 ID:2BS3sadP] #2-3プルダウンでテレシネされたソースに60テロなんか入った場合、手動間引きしつつ矩形範囲のみbob化して60p出力する関数 #ivtcbob("12","ConvertToYV12(interlaced=true).MCbob().ConvertToYUY2()",0,930,1440,90)#例えば5n+2&3フレーム目に縞がある場合stripe="23" function ivtcbob(clip clip, string stripe, string bobfilter, int x, int y, int w, int h){ Assert((stripe == "01") || (stripe == "12") || (stripe == "23") || (stripe == "34") || (stripe == "40"), "ivtcbob : stripe list : '01','12','23','34' or '40'") Assert(clip.IsYUY2 || clip.IsRGB32, "ivtcbob : require 'YUY2' or 'RGB32' input") frame = clip.Framecount() * 2 - 1 c = clip.DoubleWeave() c = (stripe == "01") ? c.SelectEvery(5,1,3) : c c = (stripe == "12") ? c.SelectEvery(5,0,3) : c c = (stripe == "23") ? c.SelectEvery(5,0,2) : c c = (stripe == "34") ? c.SelectEvery(5,2,4) : c c = (stripe == "40") ? c.SelectEvery(5,1,4) : c c1 = c.SelectEven() c2 = c.SelectOdd() c = (stripe == "01") ? clip.SeparateFields().SelectEven().EEDI2().Trim(0,-1).AssumeFPS(60000,1001) + Interleave(c1,c1,c2,c2,c2) : c c = (stripe == "12") ? Interleave(c1,c1,c1,c2,c2) : c c = (stripe == "23") ? Interleave(c1,c1,c2,c2,c2) : c c = (stripe == "34") ? clip.Trim(0,-1).AssumeFPS(60000,1001) + clip.Trim(0,-1).AssumeFPS(60000,1001) + Interleave(c1,c1,c2,c2,c2) : c c = (stripe == "40") ? clip.SeparateFields().SelectEven().EEDI2().Trim(0,-1).AssumeFPS(60000,1001) + Interleave(c1,c1,c1,c2,c2) : c c = c.Trim(0,frame) telop=Eval("clip." + bobfilter) Assert((frame == telop.Framecount() - 1) && (telop.FramerateNumerator() == 60000), "ivtcbob : bobfilter error") telop=telop.Crop(x,y,w,h) Layer(c,telop,"add",255,x,y) return last }
340 名前:名無しさん@編集中 mailto:sage [2008/07/22(火) 00:21:10 ID:SgMxS+s2] #>>339 にMCBOBを使ってエンコしたら重すぎて使い物にならなかったのでクロップ優先オプションの"fast"を追加 function ivtcbob(clip clip, string stripe, string bobfilter, int x, int y, int w, int h, bool "fast", bool "yv12", int "overlap"){ fast = default(fast,true) yv12 = default(yv12,false) overlap = default(overlap,2) Assert(clip.IsYUY2 || clip.IsRGB32, "ivtcbob : require 'YUY2' or 'RGB32' input") Assert((stripe == "01") || (stripe == "12") || (stripe == "23") || (stripe == "34") || (stripe == "40"), "ivtcbob : stripe list : '01','12','23','34' or '40'") fast ? Assert(y % 2 == 0, "ivtcbob : In case 'fast' is true, 'y' must be even number.") : last fast ? Assert(h % 2 == 0, "ivtcbob : In case 'fast' is true, 'h' must be even number.") : last fast ? Assert(overlap % 2 == 0, "ivtcbob : In case 'fast' is true, 'overlap' must be even number.") : last fast ? Assert((w > 0) && (h > 0), "ivtcbob : In case 'fast' is true, 'w' and 'h' must be positive numbers.") : last top = (y < overlap) ? y : overlap bottom = (clip.Height() - y - h < overlap) ? clip.Height() - y - h : overlap left = (x < overlap) ? x : overlap right = (clip.Width() - x - w < overlap) ? clip.Width() - x - w : overlap frame = clip.Framecount() * 2 - 1 c = clip.DoubleWeave() c = (stripe == "01") ? c.SelectEvery(5,1,3) : c c = (stripe == "12") ? c.SelectEvery(5,0,3) : c c = (stripe == "23") ? c.SelectEvery(5,0,2) : c c = (stripe == "34") ? c.SelectEvery(5,2,4) : c c = (stripe == "40") ? c.SelectEvery(5,1,4) : c
341 名前:340 mailto:sage [2008/07/22(火) 00:22:30 ID:SgMxS+s2] c1 = c.SelectEven() c2 = c.SelectOdd() c = (stripe == "01") ? clip.SeparateFields().SelectEven().EEDI2().Trim(0,-1).AssumeFPS(60000,1001) + Interleave(c1,c1,c2,c2,c2) : c c = (stripe == "12") ? Interleave(c1,c1,c1,c2,c2) : c c = (stripe == "23") ? Interleave(c1,c1,c2,c2,c2) : c c = (stripe == "34") ? clip.Trim(0,-1).AssumeFPS(60000,1001) + clip.Trim(0,-1).AssumeFPS(60000,1001) + Interleave(c1,c1,c2,c2,c2) : c c = (stripe == "40") ? clip.SeparateFields().SelectEven().EEDI2().Trim(0,-1).AssumeFPS(60000,1001) + Interleave(c1,c1,c1,c2,c2) : c c = c.Trim(0,frame) branch = yv12 && ((top + h + bottom) % 4 != 0) ? \ ( \ (clip.Height() - y - h < overlap) ? Eval("clip.crop(" + String(x-left) + "," + String(y-top) + "," + String(left+w+right) + "," + String(top+h+bottom) + ").AddBorders(0,0,0,2)") \ : Eval("clip.crop(" + String(x-left) + "," + String(y-top) + "," + String(left+w+right) + "," + String(top+h+bottom+2) + ")") \ ) \ : Eval("clip.crop(" + String(x-left) + "," + String(y-top) + "," + String(left+w+right) + "," + String(top+h+bottom) + ")") telop = fast ? branch : clip telop = Eval("telop." + bobfilter) telop = fast ? telop.crop(left,top,w,h) : telop.crop(x,y,w,h) Assert((frame == telop.Framecount() - 1) && (telop.FramerateNumerator() == 60000), "ivtcbob : bobfilter error") Layer(c,telop,"add",255,x,y) return last }
342 名前:340 mailto:sage [2008/07/22(火) 00:42:39 ID:SgMxS+s2] # 一応使い方 # 使用プラグイン # EEDI2 片フィールドしか存在しない0フレーム目のフィールド補間に使ってるだけなので # SeparateFields().SelectEven().EEDI2()の部分を好みのbobフィルタにしても可。 # 今気づいたけどSelectEven必要ないな・・・ # 引数リスト # stripe(string): 5n+xフレームのどこに縞があるかを'01','12','23','34','40'の中から指定。 # bobfilter(string): bobフィルタを指定。 # x,y,w,h(int): bobフィルタを適用する矩形領域を選択。 # fast(bool): trueでcropを優先し高速化する。デフォルトはtrue。 # yv12(bool): fastがtrueのとき、矩形領域の高さが4の倍数でなくても # bobfilterでConvertToYV12(interlaced=true)を使えるようにする。デフォルトはfalse。 # overlap(int): fastがtrueのとき、bobフィルタをかける前に矩形領域の上下左右を余分にクロップするピクセル数。 # 動き補償付きbob関数なんかを使うときは大きめにしたほうがいいかもしれない。デフォルトは2。 # 使用例 # ivtcbob("23","ConvertToYV12(interlaced=true).MCbob().ConvertToYUY2()",0,930,1440,1020-930,true,true,4)
343 名前:名無しさん@編集中 mailto:sage [2008/09/13(土) 19:37:57 ID:97Y04PBb] アニメDVD用 mpeg2source(FPath + D2vFile) AssumeFrameBased().ComplementParity() Its(def=DPath + DefFile,fps=-1,output=FPath + TimestampFile, debug=false) ColorYUY2(matrix="rec709s", debug=0, interpolation="411->422", interlaced=false) ColorMatrix(mode="Rec.709->SMPTE 240M", source=0, dest=3, scaling=2, interlaced=false, d2v=FPath + D2vFile) UnSharpMask(24,3,5) WarpSharp(90,5,90) Lanczos4Resize(704,396) addborders(0,0,0,4) return last
344 名前:名無しさん@編集中 mailto:sage [2008/09/13(土) 19:38:44 ID:97Y04PBb] Its24fps用 function a24(clip clip) { clip AssumeFrameBased().ComplementParity() BruteIVTC() TDeint(mode=2,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) return last } Its30fps用 function b30(clip clip) { clip AssumeFrameBased().ComplementParity() BruteIVTC() TDeint(mode=2,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) return last }
345 名前:名無しさん@編集中 mailto:sage [2008/09/15(月) 11:12:55 ID:MCwU1/uz] ソースがDVD Videoなら、色空間がBT.601(SMPTE 170M)のYV12(YCbCr 4:2:0)なので、 BT.709と解釈してSMTPE 240M(アナログHDTVの色空間)にするとおかしな色になる。 ColorYUY2とColorMatrixの両方を外したら良い。
346 名前:名無しさん@編集中 mailto:sage [2008/09/15(月) 13:27:52 ID:WNogej7t] DGIndex が 709 だと言ってたので 709 にしてました。(騙されたorz) 601で通すことにします。
347 名前:名無しさん@編集中 mailto:sage [2008/09/15(月) 13:33:23 ID:MCwU1/uz] 最近のDGIndex(1.5.0以降)ならSDのソースをBT.709だと判定しない様に改良された。 ただ、BT.709とするべきSDのデジタル放送をBT.470-2 B,G(SMPTE 170M, BT.601と同じ)と判定するので、 それだけ注意する必要がある。
348 名前:名無しさん@編集中 mailto:sage [2008/09/15(月) 18:36:16 ID:f4N7KPRY] DVDエンコは基本色を弄らずエンコして、再生する時にレベル補正する方が確実に楽だよっねー!
349 名前:名無しさん@編集中 mailto:sage [2008/10/04(土) 18:50:11 ID:+5H5V3V8] FUNCTION ContraSharpening(clip denoised, clip original) { # contra-sharpening: sharpen the denoised clip, but don't add more to any pixel than what was removed previously. # script function from Didee from the VERY GRAINY thread s = denoised.minblur(1,1) # Damp down remaining spots of the denoised clip. allD = mt_makediff(original,denoised) # The difference achieved by the denoising. ssD = mt_makediff(s,s.removegrain(11,-1)) # The difference of a simple kernel blur. ssDD = ssD.repair(allD,1) # Limit the difference to the max of what the denoising removed locally. ssDD = SSDD.mt_lutxy(ssD,"x 128 - abs y 128 - abs < x y ?") # abs(diff) after limiting may not be bigger than before. denoised.mt_adddiff(ssDD,U=2,V=2) # Apply the limited difference. (Sharpening is just inverse blurring.) RETURN (last) }
350 名前:名無しさん@編集中 mailto:sage [2008/10/13(月) 10:15:23 ID:W061R7Ug] >>340 gjすぐる
351 名前:名無しさん@編集中 mailto:sage [2008/11/10(月) 15:28:51 ID:bdGAJgfr] ショボイスクリプトを貼ったよ SetMemoryMax(768) SetMTMode(1,0) # Auto("○"=自動クロップ)Anime("○"=アニメ)Wide("○"=ワイドスクリーン&Anime="○"(704,360)"×"(704,392) ※Auto時無効 ) Auto="○" Anime="○" Wide="○" UTimingH=0 VTimingH=0 Border="1" Line=0 Range=20 # Border/Line=0(OFF):1(ON) Range=16-24 #------------------------------------------------- AutoS="○"==Auto AnimeS="○"==Anime wideS="○"==Wide BorderS="1"==Border Plugin="C:\Program Files\AviSynth 2.5\plugins+\" #------------------------------------------------- LoadPlugin(Plugin+"DGDecode.dll") LoadPlugin(Plugin+"gradfun2db.dll") LoadPlugin(Plugin+"TComb.dll") LoadPlugin(Plugin+"autocrop") LoadPlugin(Plugin+"ColorYUY2_for_25.dll") LoadPlugin(Plugin+"RemoveGrainSSE3.dll") LoadPlugin(Plugin+"DeGrainMedian.dll") LoadPlugin(Plugin+"FFT3dGPU.dll") LoadPlugin(Plugin+"warpsharp.dll") LoadPlugin(Plugin+"TemporalCleaner.dll") LoadPlugin(Plugin+"TBilateral.dll") LoadPlugin(Plugin+"FluxSmooth.dll") LoadPlugin(Plugin+"mt_masktools-25.dll") #------------------------------------------------- Import(Plugin+"myFunctions.avs") Import(Plugin+"LimitedSharpenFaster.avsi") Try{assert(false)}Catch(err_msg){err_msg = MidStr(err_msg,FindStr(err_msg,"(") + 1) script_name = LeftStr(err_msg,StrLen(err_msg) - FindStr(RevStr(err_msg),","))} Video_name = Leftstr(script_name,Findstr(script_name,".avs")-1) gradfun2db(MPEG2Source(Video_name+".d2v",cpu=6),1.8)
352 名前:名無しさん@編集中 mailto:sage [2008/11/10(月) 15:29:47 ID:bdGAJgfr] #------------------------------------------------- AssumeFrameBased().ComplementParity() UVTimingH(UTimingH,VTimingH,false).crop(8,0,704,480).TComb() #------------------------------------------------- AutoS ? autocrop(mode=Line,wmultof=8,hmultof=4,samples=10,aspect=0,threshold=Range) : nop() AutoS ? nop(): wideS ? AnimeS ? crop(0,60,704,360) : crop(0,44,704,392) : nop() #------------------------------------------------- ColorYUY2(gain_y=0,cont_y=3,off_y=0,cont_u=15,cont_v=15,gamma_y=5,opt="1-254",matrix="rec601s",debug=0,interlaced=true) AnimeS ? Tweak(0.0, 1.2, 0.0, 1.0, false) : Tweak(0.0, 1.1, 0.0, 1.0, false) #----------------------実写----------------------- Setmtmode(5) AnimeS ? nop() : FrameCache(9).fft3dGPU(sigma=2.0,beta=1,plane=4,bw=16,bh=16,ow=8,oh=8,bt=4,mode=1,wintype=2,svr=0,interlaced=true) Setmtmode(2) AnimeS ? nop() : DeGrainMedian(2,3,1,interlaced=true).iFilterT("UnsharpMask(48,2,7)").WarpSharp(64,3,96) #---------------------アニメ---------------------- Setmtmode(5) AnimeS ? FrameCache(9).fft3dGPU(sigma=2.5,beta=1,plane=3,bw=2,bh=2,ow=1,oh=1,bt=4,mode=1,wintype=2,svr=0,interlaced=true) : nop() Setmtmode(2) AnimeS ? FrameCache(9).iFilterT("TemporalCleaner(3,0)") : nop() Setmtmode(1) AnimeS ? FrameCache(9).iFilterT("TBilateral(diameterL=5,diameterC=5,sDevL=4,sDevC=5,iDevL=3,iDevC=5,kernS=7,kernI=7,gui=false)") : nop() Setmtmode(2) AnimeS ? FrameCache(9).iFilterB("FluxSmoothT(6).LimitedSharpenFaster(Smode=4,strength=150,soft=0,edgemode=1)") : nop() AnimeS ? iFilterT("UnSharpMask(24,2,5)") : nop()
353 名前:名無しさん@編集中 mailto:sage [2008/11/10(月) 15:30:23 ID:bdGAJgfr] #------------------------------------------------- AutoS ? BorderS ? AddBorders(0,(480 - Height()) / 2,0,(480 - Height()) / 2,$000000) : nop() : nop() AutoS ? nop(): BorderS ? wideS ? AnimeS ? AddBorders(0,60,0,60,$000000) : AddBorders(0,44,0,44,$000000) :nop() :nop() #------------------------------------------------- return last
354 名前:名無しさん@編集中 mailto:sage [2008/11/10(月) 23:08:58 ID:bdGAJgfr] 修正 Setmtmode(2) AnimeS ? FrameCache(9).iFilterB("FluxSmoothT(6).LimitedSharpenFaster(Smode=4,strength=150,soft=-1,edgemode=1)") : nop() AnimeS ? FrameCache(9).iFilterT("UnSharpMask(24,2,5)").WarpSharp(40,2,80,-0.6) : nop()
355 名前:名無しさん@編集中 mailto:sage [2008/11/25(火) 11:30:54 ID:m/fhgV/k] 修正版(MeGUI版 アナログ素材用インタレ保持) 入門者用メモ 素材は「GV-MVP-GX2W」で録画したものを INTEL E6750(3.2G)で2時間以内(アニメの場合)でエンコすることを目安した (再生はHWインタレ解除) RADEON HD3850 (カタリスト 8.11) (カタリスト 8.11はRenderless ModeだとHWインタレが崩れる Renderless Modeを使用する場合はカタリスト8.4で) KMPlyaer VMR9(Windows Mode) 3D パイリニア VMRミキサー 外部CODEC CyberLink H.264/AVC Decoder 704x480 sar 8:9または720x480 sar 1:1のエンコでソース(GX2WのMPEG2)と同じ比率で再生できる KMPlyaerは「アスペクト比を保持しない」に設定 ※HWインタレ解除で一部(数回に1回程度は成功する)引っかかる場合はインタレ稿の検出に失敗している場合があるのでフィルター類を見直すか カタリスト8.4で再生してみる FluxSmoothTを少し強めにすれば改善する場合がある
356 名前:名無しさん@編集中 mailto:sage [2008/11/25(火) 11:31:28 ID:m/fhgV/k] SetMemoryMax(768) SetMTMode(1,0) Auto="○" Anime="○" Crop="○" BorderX="0" BorderY="1" Test=0 Range=30 UTimingH=0 VTimingH=0 #------------------------------------------------- # Auto(自動クロップ)Anime(アニメ)Crop(×720x480 ○704x480 ※Auto優先)BorderX/Y/Test=0(OFF)/1(ON) Range=16-30 # ○(有効)×(無効) x264 (sar = 704x480 > 4:3(10:11) 16:9(40:33) 3:2 > 4:3(8:9) 16:9(32:27)) ※BorderX/Y=720/480 #------------------------------------------------- AutoS="○"==Auto AnimeS="○"==Anime CropS="○"==Crop BorderXS="1"==BorderX BorderYS="1"==BorderY Plugin="C:\Program Files\AviSynth 2.5\plugins+\" #------------------------------------------------- LoadPlugin(Plugin+"DGDecode.dll") LoadPlugin(Plugin+"gradfun2db.dll") LoadPlugin(Plugin+"TComb.dll") LoadPlugin(Plugin+"autocrop") LoadPlugin(Plugin+"ColorYUY2_for_25.dll") LoadPlugin(Plugin+"RemoveGrainSSE3.dll") LoadPlugin(Plugin+"DeGrainMedian.dll") LoadPlugin(Plugin+"FFT3dGPU.dll") LoadPlugin(Plugin+"warpsharp.dll") LoadPlugin(Plugin+"TemporalCleaner.dll") LoadPlugin(Plugin+"TBilateral.dll") LoadPlugin(Plugin+"FluxSmooth.dll") LoadPlugin(Plugin+"mt_masktools-25.dll")
357 名前:名無しさん@編集中 mailto:sage [2008/11/25(火) 11:32:33 ID:m/fhgV/k] #------------------------------------------------- Import(Plugin+"myFunctions.avs") Import(Plugin+"vmToon-v0.74.avsi") Try{assert(false)}Catch(err_msg){err_msg = MidStr(err_msg,FindStr(err_msg,"(") + 1) script_name = LeftStr(err_msg,StrLen(err_msg) - FindStr(RevStr(err_msg),","))} Video_name = Leftstr(script_name,Findstr(script_name,".avs")-1) gradfun2db(MPEG2Source(Video_name+".d2v",cpu=6),1.8) #------------------------------------------------- AssumeFrameBased().ComplementParity() UVTimingH(UTimingH,VTimingH,false).TComb() #------------------------------------------------- AutoS ? autocrop(mode=Test,wmultof=8,hmultof=4,samples=20,aspect=0,threshold=Range) : CropS ? crop(8,0,704,480) : nop() #------------------------------------------------- ColorYUY2(gain_y=0,cont_y=15,off_y=0,cont_u=35,cont_v=30,gamma_y=5,opt="1-254",matrix="rec601s",debug=0,interlaced=true) #----------------------実写----------------------- 調整中 Setmtmode(5) AnimeS ? nop() : FrameCache(9).fft3dGPU(sigma=2.0,beta=1,plane=4,bw=16,bh=16,ow=8,oh=8,bt=4,mode=1,wintype=2,svr=0,interlaced=true) Setmtmode(2) AnimeS ? nop() : DeGrainMedian(2,3,1,interlaced=true).iFilterT("UnsharpMask(48,2,7)").WarpSharp(64,3,96,-0.6)
358 名前:名無しさん@編集中 mailto:sage [2008/11/25(火) 11:33:19 ID:m/fhgV/k] #---------------------アニメ---------------------- 調整中 Setmtmode(5) AnimeS ? FrameCache(9).fft3dGPU(sigma=2.5,beta=1,plane=3,bw=2,bh=2,ow=1,oh=1,bt=4,mode=1,wintype=2,svr=0,interlaced=true) : nop() Setmtmode(2) AnimeS ? FrameCache(9).iFilterT("TemporalCleaner(3,0)") : nop() Setmtmode(1) AnimeS ? FrameCache(9).iFilterT("TBilateral(diameterL=5,diameterC=5,sDevL=3,sDevC=5,iDevL=2,iDevC=5,kernS=7,kernI=7,gui=false)") : nop() Setmtmode(2) AnimeS ? FrameCache(9).iFilterT("FluxSmoothT(6).UnSharpMask(24,2,5)").WarpSharp(64,3,96,-0.6).vmToon(strength=20,sharpen=true) : nop() #AnimeS ? FrameCache(9).iFilterT("FluxSmoothT(6).UnSharpMask(24,2,5)").WarpSharp(96,3,96,-0.6).vmToon(strength=20,sharpen=true) : nop() #------------------------------------------------- AutoS ? BorderXS ? AddBorders((720 - Width()) / 2, 0 ,(720 - Width()) / 2, 0 ,$000000) : nop() : nop() AutoS ? BorderYS ? AddBorders(0, (480 - Height()) / 2, 0 ,(480 - Height()) / 2,$000000) : nop() : nop() AutoS ? nop(): BorderXS ? CropS ? AddBorders(8,0,8,0,$000000) : nop() :nop() #------------------------------------------------- return last
359 名前:名無しさん@編集中 mailto:sage [2008/11/25(火) 11:59:31 ID:m/fhgV/k] 追記 素材に適したアスペクト比でエンコしてやらないと再生時にテロップ(文字)が若干ぼやけてしまうことがあるので注意(PC上での再生の場合)
360 名前:名無しさん@編集中 mailto:sage [2008/12/05(金) 02:04:49 ID:qgAJzn8A] >>357 HWインタレ解除がミスりやすいのと2時間以内にエンコできなかったので一部修正 Auto="○" Anime="○" Crop="○" BorderX="0" BorderY="1" Test=0 Range=30 UTimingH=0 VTimingH=0 Mod=8 #------------------------------------------------- Import(Plugin+"LimitedSharpenFaster.avsi") #------------------------------------------------- AutoS ? autocrop(mode=Test,wmultof=8,hmultof=Mod,samples=20,aspect=0,threshold=Range) : CropS ? crop(8,0,704,480) : nop() #----------------------実写----------------------- Setmtmode(2) AnimeS ? nop() : DeGrainMedian(2,3,1,interlaced=true).iFilterT("UnSharpMask(24,1,5)") #---------------------アニメ---------------------- Setmtmode(2) AnimeS ? FrameCache(9).FluxSmoothT(6).iFilterB("LimitedSharpenFaster(Smode=4,strength=120,soft=0,edgemode=1).WarpSharp(64,1,96,-0.6)") : nop() #------------------------------------------------- ※16の倍数ではないと警告がでるが無視してOK hmultof=16 だと上下カットしすぎかも ※GV-MVP/GX2W(4:3)でCAP(CSレター)し sar 8:9でエンコすれば上下をカットしてもMediaInfo上では16/9になるのでKMPlyaer等で再生可能 ※推奨プレイヤー PowerDVD Vista(4617) HWインタレ解除(ベクター) または 正方形ピクセルに調整してくれるKMPlyaer等(VMR9 Windows Mode) 以上 入門者用メモでした
361 名前:名無しさん@編集中 mailto:sage [2008/12/05(金) 02:43:41 ID:qgAJzn8A] >>360 追記 KMPlyaerは高速モードか超高速モードにしないとDxVAモードが動作しない また、CCCで強制的にベクタにしてもHWインタレ解除はPowerDVD Vistaの方が画質は上
362 名前:名無しさん@編集中 mailto:sage [2008/12/21(日) 04:25:32 ID:wza4VG2a] # if-else構文 {{{ # もし三項演算子を if-else構文で書くとしたら。 # else と elseif の前には必ず . を置く # ).else ( /* 使用例 # ttp://avisynth.org/mediawiki/Block_statements Global c = BlankClip().Trim(0,23) Global d = BlankClip(color=$ffffff).Trim(0,23) Global e = BlankClip(color=$ffff00).Trim(0,23) #Return b ? c + d : d + c #Return if("b", "c + d").else("d + c") Global b = true if("b", \""" Global k = c Global l = d """\ ).else ( \""" Global k = d Global l = c """) # if("b", "Global k = c Global l = d").else("Global k = d Global l = c") Return k + l #Global k = undef() #Global l = undef()
363 名前:名無しさん@編集中 mailto:sage [2008/12/21(日) 04:28:43 ID:wza4VG2a] Global a = 2 if ("a>=5", \""" Global k = c Global l = d Global m = e """\ ).elseif ("a > 2", \""" Global k = d Global l = e Global m = c """\ ).else ( \""" Global k = e Global l = c Global m = d """) Return k + l + m */
364 名前:名無しさん@編集中 mailto:sage [2008/12/21(日) 04:30:18 ID:wza4VG2a] Function if(string exp1, string exp2) { Global IF_ELSE_BREAK = false Eval(exp1) \ ? Eval(""" Global IF_ELSE_BREAK=true Eval(exp2) """) : NOP } Function elseif(val exp1, string exp2, string exp3) { !IF_ELSE_BREAK && Eval(exp2) \ ? Eval(""" Global IF_ELSE_BREAK=true Eval(exp3) """) : NOP } Function else(val exp1, string exp2) { !IF_ELSE_BREAK ? Eval(exp2) : exp1 Global IF_ELSE_BREAK = undef() } Function undef(val "x") { Assert(!Defined(x), "Usage: x = undef()") Return x } #}}}
365 名前:名無しさん@編集中 mailto:sage [2008/12/21(日) 04:51:20 ID:wza4VG2a] 修正 Function else(val exp1, string exp2) { !IF_ELSE_BREAK ? Eval(exp2) : exp1 Global IF_ELSE_BREAK = undef() } から Function else(val exp1, string exp2) { !IF_ELSE_BREAK ? Eval(exp2) : NOP Global IF_ELSE_BREAK = undef() }
366 名前:名無しさん@編集中 mailto:sage [2009/01/16(金) 18:35:37 ID:4dstrcrl] てst