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 最新版の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使ってるけどめんどい 便乗出来なかった>>395に謹んで哀悼の意を表します 394だけど流れたの1日か、そこらでしょ?
それを便乗出来なかったは厳しいよ
普通のロゴなら別にいいけどdelogomodはムービングロゴがないとダメだからね
有ると無いとでは全然違う(と思う) ■ このスレッドは過去ログ倉庫に格納されています