Avisynthを絶讃ιょぅょ Part32 [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
「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 DGIndexのd2vファイル生成高速化ver.
https://github.com/299792458m/DGIndex_mod
作者さんのBlog
http://299792458m.blogspot.com/2019/03/dgindex.html#more
まだ実際には運用してないけど
VC++内の「実行可能ファイル ディレクトリ」にNASMのパスを追加したらビルドできた
*ビルド時に「安全な例外なんちゃら」が出たからリンカーの「例外パンドラ―を含むイメージ"」を「いいえ」にした >>862
面白そうってビルドしてためしてみたけど
既存の物だと 30.6 秒かかるところをこれは 21.3 秒で終わらせてくれたよ
確かに速くなるぽいねー 連投すまん
30 分アニメの TS ファイルをローカルの SSD に置いてやってみた。
DGIndex = 26.3 秒
DGIndex mod = 11.2 秒
なんて感じに倍以上速くなった
ネットワーク越しだとうちは 1Gbps だから頭打ちなって >>862 に書いた程度の向上しかしていなかったみたい。 いいね!
GUI使ってないからさっさと置き換えたらいいんだけど
万一のために新しくセットアップしようと考えてたら
なかなか使ってみれない 今までaviutlにavs読み込ませて使ってたけど
x64のavs2avi使ったら凄い早く処理終わってビックリした お財布の中身と相談しながらTGMCの速度アップのために
NVidiaのグラボを買ってKTGMCを利用しようと思うんですが、
GPUだけに関して言えばCUDAコア数以外でスペックのどの辺りに
KTGMCの速度は大きく依存するのでしょうか? >>867
コア数、メモリバンド幅、世代とか普通のGPUの性能で見ていいと思う
ただ、今の所1280コア以上はコア数が増えてもあんま速くならない
この先最適化が進んで速くなるかもしれないが >>867
あと、設定可能オプションに制限あるのでKTGMCの仕様をよく確認しとくと良いと思うよ。 質問者じゃないけど貴重な情報thx
なんだか最近、radeonのディスカウントが多いらしいけど
CUDAが動かないから残念 868、869さんありがとうございます。
コア数1280な1060 6GBのITX向けショートサイズなのがあるので
それを買おうと思います。 NVENCの進化もあるし、Optical Flow SDK や NGX SDK を使ったフレーム補間フィルタとか
スケーリングフィルタとかが出てくるかもしれない(誰かが作ってくれればだけどw)から
Turingが安くなるのを待つのもいいかもしれない。 すんません、AvisynthNeo-r2824とKTGMC/KFM 0.50はバイナリ無いんでしょうか(;´Д`) >>874
KTGMC/KFM 0.50ならAmatsukazeのバイナリ版に入ってるよ
AvisynthNeo-r2824はまだみたい >>875
Amatsukazeに含まれているDLLがそのまま使えるんですね
早速DLしてみます!ありがとうございましたm(_ _)m yahooジオシティ終了でDLできなくなりそうなプラグインあるね
今はまだinternet archivesで落とせるけど ものすごい久しぶりにx265更新してみたけど
昔はx265だと色がおかしかったけど今はまともになってるんだな
比較用にavs作って試したらx265の方がよくなってる印象だわ Avisynth-Neo2824、とプラグイン一式、久々にビルドした
VC++2019じゃうまくいかないものもあったね
CUDA Toolkit 10.1 をつかうやつは VS2017でビルド
AvsCUDA.dllだけ 8.0でビルド
疲れた 24fpsソースに60iじゃなく30fpsなテロップを被せられると
Func_6to2が正しく機能しない。なんかいい手は無いものか・・・ Neo64bit+KFMを1080Tiで使ってたけど、720pのエンコ、
r2824になってさらに6〜8fpsぐらい速度上がった気がする
気がするだけ >>879
どうかお願いします。AvisynthNeo-r2824とKTGMC/KFM 0.50のビルドが欲しいです。
どうやってもあがいても自分にはビルドできない。
nekopanda氏はなんでReleaseしてくれないんだろう。 >>882
>>879でえんこしたのみたら、
最初の1秒ちょいノイズが入るね
もとの環境に戻した
まだ完璧じゃないのかも
ビルド方法も自己流だし原因わからん
なにがうまくいかなくてビルドできないの? ビルドの仕方によって、エンコ精度が変わるの??
同じプログラムなのに Intel環境でビルドするのと、AMD環境でビルドするのとでは
対応可能な拡張命令の違いで何かの機能が無効になるとかあるんじゃね?知らんけど >>884
コンパイラのバージョンやSDKのバージョンによって何が起きているかはわからん
もちろん自動ベクトル化とかの設定でスピードは相当変わるだろうし、
浮動小数点の扱いとかを雑にすれば速度アップしたりする
今回のNeoの更新はcuda::Streamの話みたいだったが・・・ decombucf有効にしてると、先頭部分がノイジーなソースだと前からノイズ載ってたけど、それとは別? つまりnekopanda氏によるビルドを待てってことでしょ >>887
WinSDK勝手に最新にしたり、VS2019使ったり、
CUDAのKITも勝手に最新にしたり, BOOSTも最新にしたり
とりあえず最新で試すところ
あとは/MTが好き >>890
それ、自己流っていうのか?
ソースコードを自己流に書き換えているとかならへ〜って関心できるけどさ >>888
その話は知らなかった
KFMDeint で ucf は True で使ってるけど
特に先頭部分でノイズは入ってなかったよ >>892
先頭フレームからノイズ判定が出るソースだと、謎の白いノイズ出る事あるよ。
先頭に数秒間、何かを追加して後で切り取れば回避出来てたけどね。
先頭にから数秒しか起こらないから。 それは元からあったノイズじゃないの?先頭だとフレーム置き換えがうまくいかなくて残っちゃうとか >>894
> それは元からあったノイズじゃないの?先頭だとフレーム置き換えがうまくいかなくて残っちゃうとか
先頭フレームの置き換えを試みて、上手く行かない場合にのみ発生するんだと思う。(先頭フレームからdecombucfが必要と判定されるようなゴミソースや、ノイズ演出のあるソース意外では発生したこと無いです。) KFMDeint(mode=2)とIT(fps=24,diMode=1)を比較検証してます。
KFMDeintは確かにITだと綺麗に解除できない60iテロップや、たまに
取りこぼしてしまう小さな縞もちゃんと解除してくれて強力なんだけど、
唯一シーンチェンジ破綻のフレームまで馬鹿丁寧に拾いすぎてしまうのが悩みです。
(オリジナルのQTGMCでも同様なので、KFMDeint固有の問題ではないですが)
ucf=trueや2pass処理をしても有意な効果はありませんでした。
皆さんどうやって対処してるのでしょうか? シーンチェンジ破綻というものが何かよく分からないけど
decombUCFでダメなら諦めたほうがいいと思う >>898
対処なんてしない
そこまで質にこだわるなら最初からKFM使ってないな
BOBしてそのまま60fpsで保存しておけばいいんじゃ
同じ内容のフレームはx26xでうまく圧縮されるだろうし こういうのです
http://imepic.jp/20190615/686770
KFMDeint(mode=2,pass=0, preset="Slower", ucf=true, nr=false ,cuda=true)
KFMDeint(ucf=true)やオリジナルQTGMC+オリジナルDecombUCFだとどうしても上記のような
ノイズが残るんですが、DoubleWeave.SelectEvery()+オリジナルDecombUCFだと綺麗に消えてくれます。
恐らくQTGMC内部の2次元方向処理のせいでDecombUCFがまともにノイズ検出できなくなってるのだと
思いますが、それだとKFMDeintになんでucfオプションを付けたのか疑問が残ります。 別に例外パターンじゃなければUCFあったっておかしくない気がするけど タチの悪いぶんか・・
破綻ポイントが分かってるなら下手に悩まず
FreezeFrameで前後の黒フレーム引っ張ってきたほうが時短になると思う あくまでフィルタなのでPSNRみたいな数値化できる評価軸じゃないし、
常に最良の出力結果が得られる訳ではないのは分かってるんですが、
今回のケースだとKFMDeint(ucf=true)はノイズ部分の明度が元より
あがって却って汚く見えるんですよねぇ・・・個人的にはfalse推奨。
丁寧に作業するときはDoubleWeave.SelectEvery()使ったりもしますが、
あくまで全自動で通す場合の話なので。
KFMDeintだとDecombUCF対処は難しいということで一応納得です。 >>904
それって Neo_r2824では出て、r2822では出ない問題のやつだっけ? http://avisynth.nl/index.php/AviSynth%2B_x64_plugins
TDeintの64bitって古いプラグインしかないのね・・・
ソースはpinterf氏がTIVTCと同梱して公開してけど、そのままx64でビルドしようとするとエラー出る(x86は問題なし) >>905
?よくわからないです
ちなみに今使ってるのがgithubのreleaseで公開されてる r2822 Neo i386 >>907
Neo-r2822+CUDAFilters-0.46 の x86_64 ではUCF絡みのノイズ出たことないと思う
Neo-r2824+CUDAFilters-0.50 の x86_64 ではノイズが出たことある 丁寧にエンコしても一度見たら倉庫で永久保存。もしくはポイ捨て。 透過性ロゴフィルタ(改造版) [Avisynth]delogo0004
スムージングフィルタ [Avisynth]smoothing0004
エッジレベル調整+スムージングフィルタ [Avisynth]edgelevelSmooth0004
誰か持ってないかな?
エッジレベル調整はrigaya氏の物があるので外した smoothing0005 と edgelevelSmooth0005 ならあるんだが・・・ >>916
あら、新しいの出てたのか・・・
UPお願いします。 >>914と>>918のプラグインがavisynth.nlにアーカイブされますように KTGMC俺流高画質設定メモ
KTGMC(Preset="Slower", tr2=2, NNeurons=2, EdiMaxD=12, SLRad=3, Search=5, SourceMatch=3, Lossless=2) avisynthを通すと通さないとでどのぐらい高画質になるのか正直わからんな。
結局エンコードの設定次第でどうにでもできそうな気もするし MDegrain3とかでがっつりノイズ除去したのに最終的に暗部にグレインノイズ付加したりしてると
高画質とは何ぞやという気分にはなる そのままx64でビルドできないかなとやってみたら、asmの修正が必要っぽい >>921
余計なお世話だったらすまん
K(Q)TGMCは単品で使うと結構情報が欠落しちゃうから
OnCPU()
KMergeStatic(KTGMC(), last, KAnalyzeStatic(last))
OnCuda()
な感じで補間してやると良いかも Neo r2824+AviSynthCUDAFilters 0.5.0の組み合わせで、
OnCPU(2)
KMergeStatic(KTGMC(Preset="Slower", TR2=2, SourceMatch=3, Lossless=2), last, KAnalyzeStatic(last))
OnCUDA(2)
とやると、AvsPmodでプレビューしようとするとフリーズする。
ので、r2822+0.4.6の組み合わせに戻した。
Amatsukazeだと、r2822+0.5.0っぽいんだけどね >>927
> K(Q)TGMCは単品で使うと結構情報が欠落しちゃう
どういう情報が欠落するの?
単品で使ってたので気になる >>931
https://i.imgur.com/bhoxmSQ.png
片フィールド補完のnnedi3をベースに使ってるから、こういうふうに細かいところがたまにおかしくなる
EdiModeを片フィールド補完じゃないTDeintとかにすれば大丈夫だけど、そうすると全体的に汚くなるから、
KMergeStaticの方がいいと思う amatsukazeのdelogoフィルタとかデブロックが試した感じかなりいいけど
普通のavisynth版がないのが残念だなぁ
amaのロゴデータでそのままdelogo出来るプラグイン欲しい
既存のに比べて凄く精度良い気がする >>938
同感
これができればaviutlと卒業できるのに いや取得の楽さの話をしてるんじゃなくて
ログ除去の適用性能が高いって言ってるんだよ
今のAvisynthにあるdelogoだと一律にかけることしかできないけど
Amatsukazeのdelogoは状況によって強弱かけてるでしょ ああ、"ama"って"amatsukaze"のことだったのね
amaっていうロゴ配布サイトでもあるのかと思ってたわ Ryzen Zen2がエンコ方面も爆速になってるのを見ていよいよ買い替えの機運が高まってきたけど、どのモデル買うか迷う。
エンコーダーはスレッド数に応じてほぼリニアに速度あがるけど、どう考えても先にネックになるのは
常用してるシングルスレッドしか対応してないAvisynthフィルタのどれかなんだよな。 フィルタがボトルネックになる分、エンコ設定重くできるよ! cuda対応のvapoursynth neoなんて出ないかな? neoとCUDAフィルタ入れてみた
PV4ファイルエンコにKFM使えるなんて胸熱 KFMDeint(mode=2, cuda=true)とSelectField()併用すると、画が壊れる事がある。よくわからん。 ちょっとだけわかってきた。SelectField()使うとフィールドオーダーがKFMDeintに渡らなくなるのか
全編で動くシーンの画が壊れるけど、SelectField()の後に再度フィールドオーダー明示してやると
ちゃんとインタレ解除してくれる。
オリジナルのQTGMCでも若干画が壊れるけどKFMDeintの方が圧倒的に顕著。他のデインタレフィルタだと
こうした症状は無いっぽいです。 >>952
初めて聞きました。ソース情報もらえますか? SelectField()ってこれ?
function SelectField(clip clip, int num, string "order") {
fc=clip.framecount-1
order=Default(order,"bottom")
T1=clip.Trim(0,num-1)
T2=clip.Trim(num,-1).SeparateFields()
T2=order=="top"?T2.SelectEven().nnedi3(dh=true):T2.SelectOdd().nnedi3(dh=true)
T3=clip.Trim(num+1,0)
return (num>=fc)?T1++T2:(num>0)?T1++T2++T3:T2++T3
}
当然この関数自体フィールドフラグがなくなると思うが すいません、SelectField()がユーザー定義関数なことすっかり失念してました(Avisynth内部関数だとばかり…)。
SelectField()を使う場合デインタレの直前にフィールド指定するか、SelectField()自体をフィールドオーダー
引き継げるよう改造するしか無さそうですね。 DoubleWeave()にまつわる話かと思ったら違った・・ 多分SeparateFields()とnnedi3のdh使わないようにするだけで望みの挙動になると思う
function SelectField(clip clip, int num, int "order”) {
fc=clip.framecount-1
order=Default(order,clip.GetParity() ? 1 : 0)
T1=clip.Trim(0,num-1)
T2=clip.Trim(num,-1)
T2=T2.nnedi3(field=order)
T3=clip.Trim(num+1,0)
return (num>=fc)?T1++T2:(num>0)?T1++T2++T3:T2++T3
}
これで問題おきなくなるんじゃないかな。orderは1でtop、0でbottom、省略でクリップのTFF、BFFの設定引き継ぎ おぉ自分で改悪したの添削してもらおうと思ったら、先に優れたものを作ってくださったお方が。かたじけないです orz
供養
function SelectField(clip clip, int num, string "order") {
fc=clip.framecount-1
orgorder=clip.GetParity()
order=Default(order,"bottom")
T1=clip.Trim(0,num-1)
T2=clip.Trim(num,-1).SeparateFields()
T2=order=="top"?T2.SelectEven().nnedi3(dh=true):T2.SelectOdd().nnedi3(dh=true)
T3=clip.Trim(num+1,0)
joinclip=(num>=fc)?T1++T2:(num>0)?T1++T2++T3:T2++T3
return (orgorder==true)?joinclip.AssumeTFF():joinclip.AssumeBFF()
} 俺のテストしてないんで供養せずにそっち使ってください
なんか出過ぎた真似してしまって申し訳なす
>>956
多分理屈は同じじゃないかな エンコードする場合の前処理と本エンコード用のavsファイルを分けて使用しているんですが、
「前処理avsファイル」上で手書きした処理のうち共通部分を「本エンコavsファイル」ファイルに都度転記するのは
面倒なので共通部分だけ「共通avsファイル」に切り出して上記2つのavsファイルにImportしようと思ってます。
ただそうすると今度は編集時に「前処理avsファイル」と「共通avsファイル」の2つを同時に開いて作業することに
なるので、それはそれで面倒です。
編集作業にはAvsPmodを使用していますが、理想としてはImport部分の中身をエディタ上展開/編集できるようになると
嬉しいです。そういった機能はありませんか?
↓この画像の5番みたいなイメージです
https://support.content.office.net/ja-jp/media/dbc7679a-443d-4297-8601-38664e8c740d.gif エンコード時にD&Dするbatで
echo Import("前処理avs.avs") >>本エンコavs.avs
みたいにして本エンコavsファイル作れば? >>962
「前処理avsファイル」で使用した書式のうちいくつかは「本エンコavsファイル」では使用してはいけないので、
共通部分だけまとめたavsファイルを別途作成してImport(しかも複数箇所)しないと実現できなそうです。 どんなavsか分からないから何に困ってるのかよくわからないけど、前処理+共通の全部書いたテンプレのavs作って
状況に応じて行頭コメントアウトしたり文字置換等をバッチ若しくは手動でするのは無理なの? >>963
その本エンコavsに不要な書式は固定なんか? >>963
前処理用にリネームしたavs2pipemodを用意して、
スクリプト内ではGetProgramName()で分岐させるのが良いと思う フラグになる変数定義して if 文でどうのとかはだめなん?
俺は AvsPmod でトリミングするときは処理を軽くするためにフィルタを解除したり、
編集おわったらフィルタ全適用したりってやるのに変数適当に定義して if 文でまわしてる。
どういう処理されてるかさっぱり分からないからみんな「それならこうした方が良い」ってのが
言い出せないかと思う いろいろコメントありがとうございます>各位
GetProgramName()で分岐とか環境変数で制御とか思いつかなかったなぁ。
無理に呼び出し元バッチで何とかしようとせず、avsファイルを一つに
まとめて、スクリプト内で制御した方が賢いかもしれない。
ちなみに現在使用している環境のイメージとしては以下のような感じです。
(作業が発生する度共通部分をpre→mainに転記している)
前処理用フィルタは固定ですが、共通部分とかメイン用フィルタは
都度内容や使用件数が変わるものとお考え下さい。
# pre avs
MPEG2Source("source.d2v", upConv=1)
AssumeTFF()
UserDef1() #共通部分1
UserDef2() #共通部分2
UserDef3() #共通部分3
PFilterA() #前処理用フィルタ
return last # main avs
MPEG2Source("source.d2v", upConv=1)
AssumeTFF()
UserDef1() #共通部分1
MFilterA() #メイン用重いフィルタ
UserDef2() #共通部分2
UserDef3() #共通部分3
MFilterB() #メイン用スゴク重いフィルタ
return last
>>964>>966
ホンマそれ。だけどメンドイし、手動によるミスも多いです… >>970
そういうスクリプトだとしたら俺ならこうするかなー
変数切り替えて使うww
HOGE = 1 # 1 = Pre, 2 = Main
MPEG2Source("source.d2v", upConv=1)
AssumeTFF()
UserDef1() #共通部分1
if ( HOGE == 2 ) {
MFilterA() #メイン用重いフィルタ
}
UserDef2() #共通部分2
UserDef3() #共通部分3
if ( HOGE == 2 ) {
MFilterB() #メイン用スゴク重いフィルタ
} else if ( HOGE == 1 ) {
PFilterA() #前処理用フィルタ
}
return last 同時編集する必要性が分からないんだけど・・
普通にメイン部分を無効で登録しておき編集して「前処理フィルタ」実行
処理が終わったら「前処理フィルタ」を無効にして「メイン用重いフィルタ」の調整としたほうが
流れるように作業できラクなはず 自分は高度なこと分からない人だから
type pre.avs | find /v "PFilterA" >pre2.avs
type pre2.avs | find /v "return" >pre3.avs
みたいに転がして後は文字列の置き換えてメインフィルター追記して
main.avsで出力みたいなのしか発想できない Anime4kはリアルタイムでアップスケールして再生するためのものだから
Avisynthにかませる理由があまりないでしょ
nnedi3_rpow2でも使えばよい nnedi3_rpow2より速そうだし出来も良さそうだなって思ったんだけど
やっぱないかあ 早いだろうけど出来は及ばないでしょ
あくまでもリアルタイムにしてはすごいってだけで avisynthのプラグインは「調整が決まれば」という但し書きが付くけどね それはAnime4Kはもっとそうで
得意な映像なら、なんだよ
不得意なパターンも報告されてるわけでね
リアルタイムだからどうしようもない部分はある レス数が950を超えています。1000を超えると書き込みができなくなります。