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 確認どうも
再現したのでScriptClipも回避できるか見てみるかの DecombUCFはLumaDifference系のフィルタが必要でこれもMTと合わせて利用ができないよう
リクエスト修正出てるからいずれは修正されるのかな
https://github.com/pinterf/AviSynthPlus/pull/10
CUDAの方はimportスクリプト内含め全てをOnCPU(0).OnCUDA(0)とすればMT無効と同条件でDecombUCFが動作することがわかったわ >>552
調査ありがとう
それ、去年の4月からの放置なのか・・
Avisynth+はSE't氏のMTより高度なMT処理を実装してるんだろうけど
ちょっとちょっと未成熟なのよね
プラグイン側は精力的なアップデートでかなり良くなってるんだけども あぁ、Avisynth+はScriptClip系をマルチスレッドで使うとデッドロック不可避だった
ソース見ると直そうとした形跡はあるけど、
最近のバージョンではエラーにしてるとこ見ると、もう諦めてるのかな
CUDAはOnCUDAが1つだけなら大丈夫っぽいけど、複数あるとデッドロックしそう UtVideoで吐きだしたaviファイルをフィールドピクチャ対応のL-SMASHで読み込んでいるのですが、
その最終フレームをFreezeFrameで1つ前のフレームで置き換え、
AvsPmodで表示しようとすると
Error requesting frame 34524
WindowsError: exeption: access violation reading 0x00000068
というエラーが表示されます。
以下、例。
LWLibavVideoSource("hoge.avi")
FreezeFrame(34524, 34524, 34523)
return last
この例だとAvsPmodで34524フレーム目をピンポイントでプレビューに表示(更新)させると上記のエラーが表示されます。
ただ、他のフレームをプレビューに表示してから最終フレームまでシークしていくとエラーは出ません。 AVISource()で読み込んだほうが早くね?
UTVideoの本家のデコーダーが使えるしL-SMASH Worksが内部で利用しているffmpegのデコーダーは本家の更新にすぐに追従してアップデートするわけじゃないからな 以前、AVISource()を使ってみたら
緑一色のフレームが混じることがあったのでL-SMASHを使うことにしています。
フィールドピクチャ対応のL-SMASHに変えるまでは
最終フレームの置き換えでエラーが出なかったので報告してみました。 >>557、>>559
ありがとうございます。
AVISource("hoge.avi", pixel_type = "YV12" )でやってみます。 >>558
ffmpegは動いてたのがバージョンアップで動かなくなるとかざらにあるからね・・・ AVISourceで緑のフレームが混じるって報告は前にもどこかであったけど、
野良ビルドを使ってたり、
pixel_typeを指定してるかわからなかったりだったかな
どうしてもL-SMASHが使いたいなら、
aviファイルの読み込みだけ前に使ってたやつを使えばいいんじゃない? >>561
ありがとうございます
凄いや。OnCUDA(2)やPrefetch(4)のMT環境でDecombUCFが動くのを確認できた
一度だけエラー出ましたが繰り返しすぐ起動したのが影響あったのかも。。
OnCUDA(2)で継続して使用しますね CUDA無しでも動くようでMT対応として使ってみるとか >>565
OnCUDA()が使えない環境なのに、KAnalyzeとKMergeStatic+QTGMCを使いたいが為にSynth+cudaを使ってる俺も居る
今までMask使って試行錯誤してたのがアホらしくなるくらい結果が良くてちょっと悔しい
ただ、KFM-0.3.1では問題なかったKRemoveCombeが、0.3.3でエラー吐くようになってしまって
その内切り捨てられるのではないかと内心ビクビクしてるわw うちはGTX750のCUDA環境なのにQTGMCもKTGMCも使えないから使ってない
ERROR: Assert: assertion failed だから理由もわからないし
PLUSは普通に使えるから移行しようがないんだよね ScriptClipでの異常に対応したんだ
Pluginレベルでアカンのかと思ってたけど、Avisynth自体の問題だったんだな DecombUCF、SmoothCustomやめてmt_lutにすると少し速くなる
str_y = mt_polish("(x==128)? 128 : ((x<128)? ( (((127-"+String(range_y)+")<x)&(x<(128-"+String(nmin_y)+")))? 0 : 56 ) : ( (((128+"+
String(nmin_y)+")<x)&(x<(129+"+String(range_y)+"))) ? 255 : 199 ))")
str_uv = mt_polish("(x==128)? 128 : ((x<128)? ( (((127-"+String(range_uv)+")<x)&(x<(128-"+String(nmin_uv)+")))? 0 : 56 ) : ( (((128+
"+String(nmin_uv)+")<x)&(x<(129+"+String(range_uv)+"))) ? 255 : 199))")
eval_y = Select(chroma, 3, 2, 3)
eval_u = Select(chroma, 2, 3, 3)
eval_v = Select(chroma, 2, 3, 3)
return c.mt_lut(yExpr=str_y,expr=str_uv,Y=eval_y,U=eval_u,V=eval_v) ts開発かどっかで聞いたけどスルーされたのでここでも質問
join_logo_scpで作ったカット編集ずみavsは5の倍数だとかテレシネパターンを一切考慮に入れてないみたいだんだけど
autoVFR(Fastではない全検索)による SelectEvery形式でのテレシネ解除の影響はないと考えていいの?
昔、テレシネ解除にTIVTC24P2関数を使ってた時はテレシネパターンをまたいだカット編集で誤爆った記憶があるから
手動カット編集するときは注意してたんだけど、どうなの? ScriptClipで複数のクリップを使いたいときって、どうやるんだ?
function MyFunction(clip c1, clip c2) {
return c1.ScriptClip("c2.subtitle(string(current_frame))")
}
src = LWLibavVideoSource(...)
MyFunction(src, src)
これだと動かない
DecombUCF見ると変数をglobalにしてるけど、グローバル変数使うしかない?
複数回呼び出されたときに動かなくなるから使いたくないんだが・・・ StackVerticalなどで一つのクリップにするという方法もある https://github.com/pinterf/AviSynthPlus/releases
最近のAviSynth+はインストーラからMT仕様ですか?
※現在はまだr1576(x86)を入れて動作確認しただけです(一度同時にx64も入れましたが優先がx86みたいなのでx86で様子見) >>576
なんか分かってないようだけど 64bit の方は呼び出すアプリも 64bit じゃないと使われないぞ。 >>577
MTっていうことですよね?
ありがとうございます
>>578
AvsPmodはx86もx64もあるので編集は出来ます(x64は未確認)
バッチファイルは作り直さないといけませんが(今までx264(x64)はパイプで読み出していたので) _GPU25のx64版DLLが無いからAvsPModはx86版しか使わなくなった >>580
使ってるフィルター次第だろうけど俺も同じような状態から
他のフィルターに乗り換えて _GPU25 はもうつかわんくなった。 Dup.dllのx64ってないですか?
Clean_SC(シーンチェンジフレーム置換).avsi
で必要なのですが・・・ >>583
Dup.dllのソースコードは何処かにあったはずなんだけど、そのソースコードはinline asmと呼ばれる書式で記述されている
そのinline asmはMSVCではx64でビルドすることができないのでx64に移植するのは少々規模の大きな手直しが必要になる
以上の理由で今の所x64版が無いのかもしれない というか前にも似たような話題が出て答えた気がする >>586
ソースがあるのは知ってるけど
x64ように書き換えないとダメ
誰かがやってくれるのを待つか自分でやるか・・・ >>586
他の方も言ってるけどソースをちょっと大きな手直しが必要なんだ
asm言語をintrinsic SIMD命令に書き換えるかasmをソースから切り離すかしないといけない
はっきり言うと、諦めるか自分でやるしかない それか親切な方が現れるのを待つか・・・
あんまりしつこいとクレクレ君って言われるよ 数年前までそういうやつがいてスレが少しばかり荒れてたことがあった >>588
あったらラッキー程度に聞いてみた話です
だから>>586 時点で無いと答えをもらったので「了解です」と答えてます x64でインラインasmを使いたいならインテルコンパイラを使えば?って婆ちゃんが言ってた >>589
それはすまねぇ・・・
過去にソースの入手先を張って作れだの言いまくってたやつ思い出して過度に反応してしまった
>>590
AviSynth2.58の64bit版を開発してたJoshyD氏が公開してた64bitプラグインはICLでビルドされてたはずだな ただ高いんだよな・・・
ソース見る限りC++なコード自体が残ってなさそうなのが移植の難易度上げてる気がするな いや、それ、232aだと大部分はコメントアウトされてるし、
唯一使われてるのはblend(デフォルトオフ)で使われてるだけだから
全部消しちゃってOK
それよりDupとDup1はどっちがいいんだ?
Clean_SCはDupを使ってるみたいだけどDup1だとダメなのかなぁ そういうものなのか
ビルドした記憶はあるけど、Clean_SCの調整(誤爆なくゴミ消せる)の追い込みが難しくてお蔵入りしたは >>592
現在使用しているのはDup 2.30です
Dup1は所持していませんので自分はわかりません >>592
その話聞いてオリジナル版と232aのソース見比べたら確かに大部分が呼び出されてないね
blendの部分も無視しちゃえば移植できるかも ただオリジナル版と比べて速度的な違いはどれほどなんだろ
DupとDup1の違いが分からないけどオリジナルのDupと衝突しないように名前分けてるだけなら使えると思う
Clean_SCもblend=trueは使ってないようだし限定的ながらx64化できるかもしれない 後日ちょっと見てみるわ 後日と言いつつ即日
AviSynth Dup1 x64
ttps://www.axfc.net/u/3901359
これで動くかなぁ?
Clean_SCのDup関数をDup1にしてね
MT有効化したときとかそういうの一切チェックしてないけどどうかな?
ICLでビルドしたものが出てくるまでか代替品ができるまでの繋ぎになってくれればいいけど >>595
AvsPmod(x64)で見ることはできました(DupをDup1にファンクションを変更)
r1576なのでMTは未確認(r2664他どれを入れてもフリーズなのはメモリー不足?)です
※メモリは8GBと今時としては少ない? 私8GBだけどMT使えてる
なんかの命令セットが古すぎるとかでは
>>596
thx >>597
>>555
Avisynth+でMT有効にしてScriptClip,ConditionalFilter使うとデッドロックするのは既知の問題 メーカー品じゃないからねぇ
常識ってどっかにまとまってるのかな?
くらい無意味な質問だ DecombUCFの注意点見つけました
複数clipからDecombUCFをコールするとclipが混ざることがあるようです
DecombUCF中のglobal変数を変えて、DecombUCF2とか別関数を定義して回避できた
>>571
DecombUCFの改良使わせていただいてます >>602
だれか>571で置き換える箇所をもう少し詳しく書いてくれる人いませんか? >>571の置換えはこんな感じで使ってる
function Limitter(内の以下箇所
str_y = "(Y==128)? 128 : (Y<128)? ( ((127-"+String(range_y)+"<Y)(Y<128-"+String(nmin_y)+"))? 0 : 56 ) : ( ((128+"+String(nmin_y)+"<Y)(Y<129+"+String(range_y)+")) ? 255 : 199 )"
から
return c.SmoothCustom(eval_y, eval_u, eval_v, false, 0, 0, -1)
まで7行かな 以前、UtVideoで吐きだしたaviファイルを読み込ませるのは
LWLibavVideoSource) よりも AVISource() のほうがいいと助言を頂いた者です。
あれからAVISource()を使っているのですが、速度が安定しません。
AvsPmod上の解析パスを走らせるときは最初から最後まで安定しているのですが、
batファイルで、avs2pipemodのbenchmarkを使ってログをとるときや
ノイズ除去などの補正処理を施したaviファイルをUtVideoで出力するときに、
速度の最高値を100とすると、60あたりから始まって非常にゆっくりと100まで上昇していくという状況です。
ですが、10秒ほどAvsPmod上の解析パスを走らせた後で
batファイルを実行すると最初から100の速度で安定して処理を行えています。
何が原因なのでしょうか? ショボスクリプトのスレ無くなったんで、ここ借ります。
縞なし24(5フレーム中2フレームが重複)の周期判定に使うスクリプト
# 例
# S1 : 1 1 2 3 4 | 1 1 2 3 4 | ... SelectEvery(5, 1, 2, 3, 4)
# S2 : 1 2 2 3 4 | 1 2 2 3 4 | ... SelectEvery(5, 0, 2, 3, 4)
# S3 : 1 2 3 3 4 | 1 2 3 3 4 | ... SelectEvery(5, 0, 1, 3, 4)
# S4 : 1 2 3 4 4 | 1 2 3 4 4 | ... SelectEvery(5, 0, 1, 2, 4)
# DoubleWeave後、10フレーム毎に特定部分を抽出した時に縞が出ない周期を見つける
# DoubleWeave().SelectEvery(10, 1) #S1
# DoubleWeave().SelectEvery(10, 3) #S2
# DoubleWeave().SelectEvery(10, 5) #S3
# DoubleWeave().SelectEvery(10, 7) #S4
DoubleWeave().SelectEvery(10, 1) #S1
この状態で周期変化すればその部分だけ縞になるから、後はその縞を検出するスクリプトなりプラグインなりで判定 >>607の補足1
#S1 DoubleWeave().SelectEvery(10, 1)
1......1......2......3......4......1......1......2......3......4......1
1 1 1 2 2 3 3 4 4 1 1 1 1 2 2 3 3 4 4 1
1 1 1 1 2 2 3 3 4 4 1 1 1 1 2 2 3 3 4 4
0[1]2 3 4 5 6 7 8 9 0[1]2 3 4 5 6 7 8 9
#S2 DoubleWeave().SelectEvery(10, 3)
1......2......2......3......4......1......2......2......3......4......1
1 2 2 2 2 3 3 4 4 1 1 2 2 2 2 3 3 4 4 1
1 1 2 2 2 2 3 3 4 4 1 1 2 2 2 2 3 3 4 4
0 1 2[3]4 5 6 7 8 9 0 1 2[3]4 5 6 7 8 9 >>607の補足2
#S3 DoubleWeave().SelectEvery(10, 5)
1......2......3......3......4......1......2......3......3......4......1
1 2 2 3 3 3 3 4 4 1 1 2 2 3 3 3 3 4 4 1
1 1 2 2 3 3 3 3 4 4 1 1 2 2 3 3 3 3 4 4
0 1 2 3 4[5]6 7 8 9 0 1 2 3 4[5]6 7 8 9
#S4 DoubleWeave().SelectEvery(10, 7)
1......2......3......4......4......1......2......3......4......4......1
1 2 2 3 3 4 4 4 4 1 1 2 2 3 3 4 4 4 4 1
1 1 2 2 3 3 4 4 4 4 1 1 2 2 3 3 4 4 4 4
0 1 2 3 4 5 6[7]8 9 0 1 2 3 4 5 6[7]8 9
失礼しました。 QTGMC(Preset="Faster")で縦1080のクリップ処理すると下端8ピクセルの色がおかしいんだけどおま環?
8ピクセル足して処理すれば正常になる
AddBorders(0,0,0,8)
QTGMC(Preset="Faster")
Crop(0,0,0,-8)
ピクセル数が (Blocksize - Overlap) の倍数じゃないとダメなのかな なんか聞いたことがあるよな、ないような・・
無印Avisynth使ってる? L-SMASH使った読み込みで dr=true にしてるとか
縦の画素数が1088 になるやつ 色がおかしいって表現は適切じゃなかった
下端8ピクセルは補間されないでNNEDI3の出力がほぼそのまま出てるからボビングが激しい
MDegrainがブロックの半端部分はコピーするようになってるからQTGMCの仕様っぽい >>606の解決法わかる人いないかな?
avs2aviとUtVideoを使って、処理を分けた中間ファイルを何度か出力するようにしてるんだが、
>>606の通りにAvsPmodの解析パスをちょっと走らせた後だと
当該avsの中間ファイルの出力が早くなって全体で1時間も短縮できてしまった
bat叩くだけの何か解決法ないかな? うちでは起きてないから答えようがない
もっと詳細な環境情報や再現する簡潔で最低限な方法は書き出せないの? Avisynth+ r1718
avs2aviとUtVideoは最新版
以下、avsの内容
AviSource("hoge.avi",false,"YV12")
return last
以下、batの内容
"avs2avi.exe" "input.avs" "output.avi" -c ULH0
これでもAvsPmodで解析パスを少し走らせる前と後で数十fpsも違ってくる なんでr1718なんや…
avs2pipemodのベンチマークを10秒走らせた後ではどうなの?
それで大丈夫ならavs2pipemodのTrimオプション使って10秒ベンチマーク→本番
これでバッチ1つでできるようになると思うが、根本的な解決ではないな >avs2aviとUtVideoは最新版
こういう書き方止めてくれ
UtVideoは恐らく20.0.0だろうけどavs2aviは派生版含めていくつかあるからこういう書き方されると混乱を招くだけ
>Avisynth+ r1718
x86なのかx64なのかそれとも両方なのか不明
とりあえずAviSynthを新しいバージョンに上げてみて再現するか調べようか
間違ってる可能性も方が高そうだけど、エスパーするとHDDのヘッドが退避してる状態でバッチ呼び出すと遅くなるとか?
解析パスだの実行してaviファイルの入ったHDDから読み出そうとした後バッチを実行するとすでにヘッドが動いてるから最初から高速で読み出せるとか
流石に全体で1時間も短縮できるって所見るにあり得なさそうだけどさ >>614
OSはWin7?
中間aviの出力先はHDD?
もしWin7でHDDなら出力先をSSDに変えたら速くなるかな?
SSDに変えて極端に速くなったならavs2aviの問題
avs2aviは内部の書き込み用バッファが少ない(512KBしかない)ので出力先がHDDの場合、非圧縮や可逆フォーマットで
それなりの解像度の場合データ量が多いのでHDDの書き込みが追いつかなくなって速度がでない
(SSDなら書き込みが速いのでバッファが少なくてもあまり問題にはならない)
自分は書き込み用バッファを増やせるようにソース書き換えて使ってる
バッファを64MBまで増やすとHDDでもそれなりに速度が出るようになる
Win10だとバッファ512KBでもあまり速度低下しない
(Win10だとバッファの設定変えても速度にあまり変化がない、WriteFileAPIの動作が変わって内部でディスクに書き込む前にバッファリングするようになったのかも?)
Win8は持ってないので分からない r1718(x86)から最新版に更新してみたけど
AccessViolationが出てしまう
1年ぐらい前も同じだったのでこのままr1718で行こうと思います。
avs2aviはAvisynth.infoのアーカイブのv1.40aです。
avs2pipemodのbenchmarkを少し走らせた後で
中間ファイルの出力を行っても速度は遅かった。
で、AvsPmodで解析パスではなく単なるプレビューをしてAvsPmodを終了させずに
中間ファイルの出力を行うと速度が速かった
もしかしたら解析パスとプレビューのどちらでもいいのでどちらかを行った後、
AvsPmodを終了させなければいい(メモリから解放しなければいい?)と予想して、
batを叩くだけで済ませたかったのでavs2pipemodのbenchmarkの途中で中間ファイルの出力を始めると、
benchmark中はそちらに速度を持っていかれるが、benchmarkが終わってから速度が最大あたりで安定した。 OSはWin7
出力先はHDD
SSDはまだ手を出していないので試せないです。
申し訳ない。 >>620
> AccessViolationが出てしまう
VC++2015/2017のランタイムを入れてないだけじゃないの? 自分ももしかしたらと思って確認したけど
インストール済みだった
念のため再インストールしたけど変わらなかった あれじゃね
plusの高深度カラー非対応なフロントエンド使ってるのでは ttp://csbarn.blogspot.jp/2016/07/blog-post.html
古いプラグイン使ってるなら更新したほうが良いと思うよ とりあえずプラグインフォルダをほぼ空にしてみたところ、エラーは出なくなった
でも中間ファイル出力については変化なかった
今のところは>>620のやり方でやるしかないか... autoVFRの1passの解析の時に
異常に遅いときがあるからそれのことかなとは思う
もっとも最初から最後まで遅いから違うと思うけど 自分の場合は>>606を見るまで意識してなかったけど
実際にやってみたら再現できてしまった
LWLibavVideoSourceだと>>620のような処理も必要とせずに速度が最大辺りで安定してるのも同じだった 上でplus MT環境でdecombUCFやConditional Filter使うとエラー文が表示されると書いたものだけど
GRunTのセットアップ(自動読み込みフォルダへ入れる)でエラーがでなくなった
まだ通してはエンコードしてないけどsrestore、decombUCF、保健用デインタレ関数では、とりあえずエラー無く動いてるもよう
本体は、Avisynth+ r2664 (20180328) 頻繁に使うプラグインならまだしもそうじゃないプラグインはオートローディングしないものだよ と思ったけどオートローディングフォルダに入れて正常で、手動でLoadPluginしたらエラーでたのかな?
何が起きてるか分からねぇ GRuntを入れずにMTを使うと>550 の状態になってたけど
GRuntを読み込むと、そのエラー文が表示されなくなった Dither_add_grain16を使ってみたのですが
マスククリップのような緑色のクリップができてしまいます。
LWLibavVideoSource()
Dither_convert_8_to_16()
Dither_add_grain16()
DitherPost()
return last
ditherはAvisynth wikiのDither toolsの
Downloadのリンク先のもの(v1.27.2)です
何が原因でしょうか? DitherのRequirementsに書かれてるmasktoolsとかのバージョンが古いとか? tp7氏のものからpinterf氏のものへ入れ替えたところ
正常に表示できるようになりました。
ありがとうございました。 家だけかもしれないが、Windows 10 1803にしてから、
AvsPmod(x64版)でF5のプレビュー画面を出そうとするとクラッシュする様になった >>637
win10の文句はmicrosoftに言え。 flash3kyuu_debandがダウンロードしようしたらリンク切れでどうしようかと思ったけど
HDD内を探したらあったので再配布
http://fast-uploader.com/file/7083408071468/
アーカイブ内のテキストによると2.6系専用だそうです
x64のは動いたのを確認したけど自己責任でどうぞ
(作者様&ビルドしてくれた人thx) こ、これは・・
本家のほうに送ったほうが良いような気がする >>573
Neoなら↓これでOK
function MyFunction(clip c1, clip c2) {
return c1.ScriptClip(function[c2](){c2.subtitle(string(current_frame))})
} TVTestで保存したTXのtsの大半が
l-smash worksで読み込んでも無音…
まぁ、murdoccutなり、tssplitterで頭切ると読めるようになるんだけど…ね Doom9見るとよく分からないけどpinterf版>>640で大きな変更があったのかな AvisynthNeo試してみた。KFMDeintでお手軽に使えてよいね。
一方チャプタファイルの作成でTrimCleanを改造したのを使ってるんだけど
AvisynthNeoだとWriteFileStart関数が文字列変数を指定しても見つからなくてエラーになるようだ。 ■ このスレッドは過去ログ倉庫に格納されています