Avisynthを絶讃ιょぅょ Part32 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
「AviSynthを絶賛」というのは、聞いたら答えたり報告したりなどギブアンドテイクな作業を指す。 厨と呼ばれて当然の事を、調べもしないで訊くバカが住み着くスレではないので、 avisynth.infoぐらいは読んでおくように。 【前スレ】 Avisynthを絶讃ιょぅょ Part31 http://echo.2ch.net/test/read.cgi/avi/1383985211/ 【日本語による解説】 avisynth.info http://www.avisynth.info/ 【実家】 AviSynth http://avisynth.org/mediawiki/Main_Page 可逆ではないんだし、リサイズされた画像を元に戻すと言ってもさらに劣化するだけじゃない? 自分はNRがわりに720pにリサイズとかするから それを元の解像度に戻す的な感じなのは思いつくけど 再生時でいいやって思っちゃう makediffって2回掛けると元に戻るんだね rg = src.RemoveGrain(20) rg.mt_makediff(rg.mt_makediff(src)) makediffってadddiffと対で使うものだとばかり思ってたわw 最新版のNNEDI3バグってるな NNEDI3(opt=4)は大丈夫だけどNNEDI3(opt=5)だと絵がバグる 最近追加されたAVXパスがダメっぽい NNEDI3をCUDA化してみた 30分のFullHDの動画に適用してみた結果↓ NNEDI3 Core i7-6700 https://i.imgur.com/y3jC2E5.png CUDA版(KNNEDI3) GeForce GTX 1060 6GB https://i.imgur.com/Vle0Uhd.png なんか見たことないフレームレートが出てるなw QTGMCをCUDA化してみた FullHDの動画に適用してみた結果↓ QTGMC Core i7-6700 https://i.imgur.com/gs5WsEM.png CUDA版(KTGMC) GeForce GTX 1060 6GB https://i.imgur.com/kRc7bhg.png リアルタイム再生できるようになったよw 基本的には同じ ただ、MAnalyseはそのままだと並列化できなかったから、 meander=false相当で動いてるから、動き検出の精度は若干落ちてる 他のもろもろのフィルタは計算誤差程度の差は出てるけど、 幾つかのフィルタをまとめたりしたから、計算精度は上がってるっぽい いずれにしても、差のあるフレームでも、違いはは並べて見ても分からなくて、 交互に表示してよく見ないと分からない程度だよ 早く公開するよろし (いや、本物だったらぜひ欲しいです) NNEDI3がGetParityを実装していない&LWLibavVideoSourceが 範囲外フレーム番号が来るのを想定していないせいで NNEDI3で2倍fps化するとGetParityがバグるぞ TFFのはずが、動画の真ん中からBFFになるw AssumeTFFすればいいんだけど >>301 TFMはどうなのです? KFMはないのです? 凄いな Avisynth+にまで手を入れたのか thx頑張れ ああ、そうそう一つ質問 Avisynth+CUDAのCUDA要素が本家に取り込まれる可能性ってあるんですか? 本家とは? CUDA対応は注意深く設計したつもりだし、 過去のスクリプトとの互換性を捨てるつもりもないけど、 面倒だからdoom9とかで布教活動する予定はない もっとテストされて安定してきたらプルリク出しても良いかもしれないが 他の人が取り込むかどうかはその人が決めること これ作るのに結構時間かけてるから、更新は続けるつもり 4770K / GTX1080 Ti / Win10 64bit / AvsPmod x64 の環境でAviSynth.dllの読み込みはできた(AvsPmod x64は起動した)んだけど、KNNEDI3.dllが上手くロードできない (Cannot load file "〜/KNNEDI3.dll" Platform returned code 126:) オリジナルのNNEDI3には拡張命令毎にバージョンが分けられてるけど、>>309 のは作者さんがi7-6700(Skylake-S)使っているみたいだから、AVX2_Broadwellのバージョンでビルドしたのかな? その辺りの互換性の関係でうちの4770Kだと多分動かないんだと思う それとKTGMC.avsiの中で定義されているはずのKTGMC_Bobって関数が見つからないって怒られた >>314 報告ありがとう cudartに動的リンクしてたわ。静的リンクにした zipファイル差し替えたからもう一度落としてくれ KTGMCの方ね。AviSynth.dllは読み込めてるようだから >>312 >これ作るのに結構時間かけてるから、更新は続けるつもり 乙 さらなる高速化に期待 doom9で話題になってるCUDA版Avisynth+&KTGMC Radeonユーザのおいらにとってはガチで無意味な情報だな。 >>318 かぎつけるの早いのなw しかも、このスレに貼ってあるSSのURLまであるし。 MIOpenでCUDAのコードがOpenCLで動く…そんなふうに考えていた時期が俺にもありました C++AMPならAMDやIntelでも使えると思うんだけどなぁ… QTGMCはbob化ベースだから小さい文字とか潰れるね。TDeintの方がきれいだな >>283 でAnimeIVTC()調べるとどんな感じなんだろ Avisynth+CUDA r2519 system32もAvsPmodのフォルダーも試したけどAvsPmodがエラーで起動しない 残念だ Avisynth+ CUDA (x64) いじってたけど、 Itsがうまく動かんなぁ CUDA化とは関係なさそうだけど どううまく動かないの? 改造元のMT plus+itsでもqtgmcを使うと落ちるとか報告されてたはず >>330 そう、QTGMC さっきその記載を見たよ ほんとだ。間にいるはずのキャッシュがいなくなってるね https://i.imgur.com/E3rFgtc.png インスタンス化するタイミングの問題かな defファイルじゃなくてスクリプト中でフィルタ呼び出してやれば とりあえず動くみたい >>332 そういう場合、vfr用のタイムコードどうやって作るの? x64化、次はVapourSynthにでも挑戦してみるかな >>333 ↓こんな感じ https://i.imgur.com/1D9XpIy.png (ITS使ったことないからこれが正しい使い方かどうかは知らないw) >>335 おお、ありがとう OnCPU onCUDA について詳しく調べてなかった... avsPmodで表示されるけど、シークさせると止まる >>335 AvsPmodでのシークでの問題はThreadRequestを除去したら直った SetMemoryMax(4096)の第2,3引数を入れるとエラーが出る >>337 Prefetch、OnCPU、OnCUDA以外のスレッドは動かない 多分元々のAviSynth+でもAviSynth+自体のマルチスレッド機構と バッティングするから完全には動作しないはず Prefetch、OnCPU、OnCUDAはいくつでも書けるからそれで対応して > SetMemoryMax(4096)の第2,3引数を入れるとエラーが出る 引数に何入れたの? >>338 なるほど、試してみます 引数は同梱メモに書かれていたもの SetMemoryMaxは少量にしたほうがエンコーダーにメモリリソースをより多く割り当てれるから 快適にエンコ作業を進めれるんじゃね?つかAvsでメモリなんてバカ食いさせて何になるんだって話。 >>339 > SetMemoryMax(4096) GPUメモリが足りないってことはない? 4GBだと少なくともGTX 1060の6GB以上は必要かな フルHDのQTGMCでも1.5GBくらいあれば十分だから、 4GB設定してもそんなに食わないと思うけど Avisynth+ CUDAを入れる前の 元のAvisynth+はどこのがおすすめですか? >>342 インストーラーでインストールすればいいよ。↓これ http://avisynth.nl/index.php/Avisynthplus/Downloads > AviSynth+ r1576 (January 02, 2014) 改造前のAviSynth+に戻したいときは、AviSynth+の最新版バイナリ落として上書きすればいい >>343 お手数をかけました ありがとうございます >>341 SetMemoryMaxを盛りすぎても どうせグラボのメモリしか使わないし・・・なんて考えてるわけないよな? エンコ中にタスクマネージャとかプロセスマネージャで グラボ以外のメモリをどれぐらい消耗してるか確認してみるといい。 ま、メモリなんて安いものだからそれに対する負荷なんて特に気にすることでもないが。 もしエンコ速度をあげたいのならavsでのCPU利用/メモリ利用は最小限にした方が エンコーダ側でより多くのCPU・メモリリソースを専有できるからより加速する。 Avisynth+CUDA (x86)はメインメモリ+GPUメモリ合計で4GBまでなの? >>345 俺に言ってるの??? AviSynth+のキャッシュの仕組みは上限高くしても必要以上のフレームはキャッシュしないよ そういうキャッシュ制御アルゴリズムが実装されてるからね 上限下げてメモリ使用量をキャップするのは、 キャッシュがあれば省けた計算を再度計算することになるからおすすめしない メモリが足りてるかどうかは、 SetLogParams("hoge.log", LOG_WARNING) でログファイル出力して、メモリ不足のwarningが出てないかで分かる メモリが足りなくて再計算になると、その分無駄に計算リソース食うから 何も嬉しいことないよ。物理メモリが足りないなら仕方ないけど >>346 そっか32bit版だったか。32bit版でどれくらいGPUメモリ使えるのかは知らない QTGMCはメモリ食うから不安定になるかもね プリセット軽くすればメモリ使用量も減るんだけど Avisynth+ x64 で どんなフィルタでも動く Its できないかなぁ・・・ >>349 TIVTC24P2、ivtc_txt60mc(txt60mcHybrid)、QTGMC、tdeint、ivtc_txt60mc48、ivtc_txt30mc これだけで十分だった、DoubleWeave().SelectEveryメインだからかな Destripeはダメだし・・・ EasyVFR3modが使えないほうが痛いかもしれない >>350 avspmod でシークしているとフリーズするね はじめは映るんだけど 力になれなくて申し訳ないが、期待してます 俺もちょこちょこソース見るようにします ありがとう ちなみに期待しているItsは avisynth+ x64 の 2000番以上で稼働 たとえばCUDA版とか >>352 なんでだろう。こっちではフリーズしないから分からん とりあえず、デフォルトのマルチインスタンスだとマズそうだからMT_SERIALIZEDにした >>350 横からだけど ほんとありがとう! 最近エンコード全然してなかったけど これは試したくなる AvsPmodなのかと思ったらItsなのか! これは応援せざるをえない そういや48fpsな外部フィルタが正しく動作しないバグがあるらしいからそれかも? http://cc.bingj.com/cache.aspx?q=avisynth+putin+its& ;d=4727953257147094&mkt=ja-JP&setlang=ja-JP&w=TGIDaeoOe5VmBmQ9pinlXd53EX-yvM6a 残念なことにソースはない アドレズがややこしいのは そのまま読むと文字化けしてたから bingのキャッシュを読み込んでます putin999氏のIts(x86(通常版))はVFRも大丈夫(AvsPmodは未確認) これがバグだったはずだからテストした(かなり前にスレで話題になった) +は未確認(導入タイミングがないっすorz、年末か3月末とでないとソースが溜まるから・・) >>350 avsPmodでシーク中にフリーズする問題だけど、 環境は Avisynth+ 0.1 x64 CUDA 版 r2519 Itsのdef内で使っているのはQTGMC、Auto24FPS, DoubleWeave とかかな QTGMCのEdiModeでNNEDI3を使ってる >>359 に追記 使ってるAvsPmodは AvsPmod_v2.5.1-90-gfcd7a61 x86_64版 とかいう、どこかで拾ったやつ >>360 の続き KTGMCを遣うとこんなエラーメッセージが出る https://i.imgur.com/aSrFgOW.jpg 先頭は OnCPU って書いてるはずなのにCPUって関数はないって怒られる >>359 readmeに書いたけど、def内でフィルタをインスタンス化すると止まる avsスクリプト内でフィルタ呼び出してdefファイルから変数を参照するようにして >>362 その方法でできました あっという間に要望に答えていただいて ありがとうございます Avisynth+ CUDAは環境にはシビアでしょうか? 自宅のwindows8で630MのノートだとAvsPmodが起動できない ネットカフェのwindows7でGTX660はAvsPmodは起動するがプレビューで緑の画面になる ネットカフェのwindows10でGTX780は動きます Preset="fast"で30fps以上は出ます これだけでもPC変えようかと思うほど素晴らしいです 作者さんこれからもバージョンアップお願いします 動作環境書いてある > compute capability 3.5以上のNVIDIA GPUで動作します。 > お持ちのGPUの対応は https://developer.nvidia.com/cuda-gpus とかで確認してください。 630Mは2.1、660は3.0だからどっちもダメ、780は3.5だからOK AviSynth+CUDAの本体・プラグインのコンパイルに慣れた 自動最適化もかますとくっそはえーな あのQTGMCやNNEDI3がKになるとサクサクだ KTGMCのプリセットがうまく動かないのがいくつかあるが コンパイルとか毎回しないと使えないのか・・・めんどくさそうだな。 BS11などの動くロゴを64bit版delogプラグインで処理したいのですが 良い関数などがあれば教えてください >>371 「メモ置き場 透過性ロゴフィルタ」でググって出てくるブログの透過性ロゴフィルタカテゴリの記事とか。 そのdelogo mod、x86版しか無いんだよなあ ソースも無いしx64に再コンパイルする手段すらなくて、積んでる ソースの公開とまってるものをアップするのは気が引けたが 有用だし元々は別の人のプラグインだしでアップさせてもらうことにした ソース持ってたからコンパイルしたけど動作確認はしてない ttps://www.axfc.net/u/3863655 >>374 ありがとうございます! AvsPmodとAvisynth+64bit(309さん版)で動作することを確認しました 309さんのavisynth+ x64(r2528-CUDA)と350さんのItsを使っています 環境はcore i7 8700K windows10 pro x64(ver1709)です defファイルで24fps化を2回呼び出すと次のようなエラーが出ます Its:Invoke failed. <trim(1,0).p24td> (Script error: Invalid arguments to function 'trim') (p24tdはavs中でソースにTFM().Tdecimate()をかけているものです) defファイルで2回目の24fps化するところを 30fpsにしたり60fpsにすればエラーが起きません 24fps化にはSelectEveryとTFM().tdecimate() を試しました また、たとえ一回だけdef中で24fps指示をだすとしても 0フレーム目からでなければ同様にエラーが出ました 問題のavsとdefファイルをアップしました https://dotup.org/uploda/dotup.org1391442.txt.html エラーを回避する方法があれば教えてください >>374 ありがとう!まさかソースまでうpしてもらえるなんて思ってなかった。 言ってみるものだなあ >>376 Itsのソース読んでみたけど、24fpsクリップの開始位置(=start)が5の倍数でないときは start%5フレームだけ先頭を捨てるようになってるみたい でもこれ必要なのかな。>>376 のdefファイルみたいにSelectEveryで手動24fps化してる とこにこれを適用するとマズそうに見える Itsのソースから元々想定してた挙動って video.Trim(start%5, 0).SelectEvery(5, 0, 2) とかだけど、これstartが5の倍数以外だと手動24fps化の想定してた挙動にならないよね なんか俺間違ってる? start%5フレームだけ先頭を捨てるようになってるのがなぜなのか 分かる人いたら教えて欲しい ともかく、24fpsクリップの開始フレームを5の倍数にすればエラーは出なくなる 0-9708[24] tfm2 9709-27544[60] qtqt 27545-42524[24] tfm2 >>376 p24tdとp60KTGMCを関数化して、defファイルも修正 ###################################AVSファイル#################################### Import("C:\Tool64\Plugin\function.avs") (省略) video=video.EraseLOGOmod(logofile=movelogo,pos_x=400,pos_y=0,depth=128,start=27691,end=27991,fieldin=0,fieldout=0,logo_start=0,logo_end=-1,interlaced=true) video function p24td(clip clip) { clip TFM().tdecimate() return last } function p60KTGMC(clip clip) { clip OnCPU(2).KTGMC().OnCUDA(2) return last } Its(def=SourceDir+src+".def",fps=-1,debug=false,chapter=SourceDir+src+".xml",output=SourceDir+src+".tmc") return last ###################################AVSファイル#################################### >>374 これ、そもそもどうやって あの少時間のロゴデータとるんですか? #####defファイル##### set [24] shu1 = 'DoubleWeave.SelectEvery(5, 0, 2)' #2:3プルダウンされている30fpsソースにおいて、01フレームに縞がある場合 set [24] shu2 = 'DoubleWeave.SelectEvery(5, 0, 3)' #2:3プルダウンされている30fpsソースにおいて、12フレームに縞がある場合 set [24] shu3 = 'DoubleWeave.SelectEvery(5, 1, 3)' #2:3プルダウンされている30fpsソースにおいて、23フレームに縞がある場合 set [24] shu4 = 'DoubleWeave.SelectEvery(5, 1, 4)' #2:3プルダウンされている30fpsソースにおいて、34フレームに縞がある場合 set [24] shu5 = 'DoubleWeave.SelectEvery(5, 2, 4)' #2:3プルダウンされている30fpsソースにおいて、40フレームに縞がある場合 set [24] tfm2 = 'p24td()' set [60] qtqt = 'p60KTGMC()' mode fps_priority = 24 default 24 = tfm2 default 60 = qtqt (省略) 0-9708[24] tfm2 9709-27540[60] qtqt 27541-42524[24] tfm2 #####defファイル##### >>376 関数化させないと、どのクリップに対してフィルタを掛けるのか明示できないんじゃないの 言葉&知識足らずでうまく言えないけど、少なくとも元のavsだとp24pt=video.TFM().tdecimate()となってるから 指定範囲のクリップがItsから呼び出される度にvideo(CMトリムとロゴ消しをしたクリップ)も掛かっちゃうからおかしなことになるんだと思う それとSelectEvery(5, a, b)の前にはDoubleWeave()が要る >>378 ソースを調べてくれてありがとうございます キャッシュの取り方が変わったせいなのか 開始フレームを5の倍数にするのが厳格化されているんですね それとアップしたファイルはうっかり selecteveryの前にDoubleWeave()かけるの忘れていました もし参考にする人がいたらご注意下さい >>380 異なる動画ファイルを300個ほど集めて それを平均化して取得しています >>382 おっしゃる通りだとは思うのですが 350さん版のItsは従来と違って defファイル内でフィルタをインスタンス化すると キャッシュが無効になって性能が激落ちするか止まるそうです 現在のavisynth+の仕様だそうです >>381 > 0-9708[24] tfm2 > 9709-27540[60] qtqt > 27541-42524[24] tfm2 ↓ > 0-9708[24] > 9709-27540[60] > 27541-42524[24] そのdefならこれでも同じ処理になるんじゃね? >>389 default設定してるからなるね もっと省略するなら 0-9708[24] 9709-[60] 27541-[24] これでも可 0- 9709-27540[60] これでもいける >>388 ありがとうございます x64版でItsと動くロゴフィルタさらにQTGMCがGPUで動くようになるとは そんな日が来るとは思いませんでした >>374 のdelogomod(x64)はもう消しちゃいましたか?(T_T) この流れに便乗したいんだけど通常版のdelogo.dllにfieldin&fieldoutオプションを追加したやつのx64版てないですかね +64bit環境に移行してHalfLogoErase.avs使ってるけどめんどい ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる