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 VLCがmkv timecode v2にちゃんと対応してなくて草生える Avisynth_258+seraphy_MT_07のavisynth.dllをSySWOW64のavisynth.dllに上書きして使ってましたが、
Win10 ver1703をクリーンインストールしたら使えなくなりました。
258MTはリンクが切れてます・・・
http://forum.doom9.org/showthread.php?t=148117 >>198
いつまでもそんな古いものにしがみついてないで、Avisynth+に移行すればいいと思うよ。 AviSynth 2.5なんてもう骨董品だから捨てていいよ
今はAviSynth 2.6 公式版かAviSynth+を使ったほうが良いと思う >>199
+や2.6だと動かないプラグインがありますし、x64は再構築の必要ががが
Win7の時にプラグインのバックアップは取っておいたのですが
それ以降MaskToolsやRemoveGrainをMT化してたのでLoadPluginExで読まないとか(その件は解決しました。)
こまめにバックアップは取るものですね・・・
258MTのバイナリかライブラリビルドのミラーサイトを教えてください。 ありがとうございます。tsc氏のビルド発見してなんとか使えました。 具体的に2.6系(avs+含)で動かないプラグインって何よ?
2.6系じゃないと動かないプラグインも出てるし2.5系はとっくに切捨てられてるでしょ
258MTは多分SEtビルドだろうけど本人も2.6使えって言ってるじゃん 2.6で動かないプラグインがあるってのを見落としてたけど
2.6で動かないプラグインってなに? >>205
http://freesoft.tvbok.com/movie_encode/avisynth/avisynth26andrecent.html
>2.GPUプラグインはまだまだ未対応
>FFT3DGPUや_GPU25を利用すると、エラーが出てAviSyhthは強制終了。この辺りはまだまだこれから対応なのかも。恐らく3DNR系のプラグイン全般これからっぽい。
私の環境で2.6を利用するのはまだ速いみたい。
速攻で2.5.8に戻しました(^_^;
私はEDCBのMOD版でチューナーの自動空き指定が上手くいかなかったので
EDCB本家の最終版を使ってます。
多機能より安定、枯れてる方を好みます。(人それぞれと思いますが) GPU系か・・
そっち(NR)系はアナログ時代ほど需要がないから
更新・移植は望み薄のような気がする 今のバージョンのavs+は知らないけどちょっと前のavs+ではFFT3dGPU動いてた気がするけど動かなかったっけ?
それとその記事古くてアルファ版のAviSynth 2.6じゃん NLmeans系のでGPU対応してるのあったはず
FFT系のと比較してみては 今ちょっと確認した感じavs+ r2506だとFFT3DGPUのx86版は動いてるように見える 昔と変わらずx64版は動かない
他に使えるGPUNRは既に出てるNLMeans系のKNLMeansCLかな これは今も開発が活発 他にDeathrayも確か動いたはず
ここ最近NRフィルター自体を使う機会が無くなってしまった 今でも積極的に使ってるのってアナログキャプチャ民ぐらいじゃないのか?
_GPU25は何年も前に2.6アルファ版に乗り換える時に手元で幾つかテストした感じ2.6アルファ版と比べて一部除いて大きな優位性はなかったと記憶がある >>212
それはすまなかった
>>213
うちの環境だと同じくごく稀に緑色のフレームが挟まれたりするから動かないって書いた
x86版は今のところ問題ないようにみえる >>214
私が試した感じだとx86版も怪しい。OpenCLのデノイザーはちゃんと動くので、FFT3DがDX9を使うからなのか GPU系って環境依存というかドライバ更新でおかしくなったりしそうなので使ったことない。 synthはにーやんのHPが閉鎖した時にやれることはやり尽くした感がある >>78氏 遅ればせながら nnedi3oclmod 有り難く頂戴しました。
当方の環境でも問題なく動いております。ありがとうございます。
実はそのWrapperプラグインを作成する腕を見込んでお願いがあるのですが,
「waifu2x by Caffe for VapourSynth」のAvisynthへの移植は難しいでしょうか?
ttps://github.com/HomeOfVapourSynthEvolution/VapourSynth-Waifu2x-caffe
主な処理はcaffeに丸投げなのでクリップの色空間と色深度の入出力を
Avisynth互換にすればいけるかなーと素人目に思ったものでして…。
ご検討頂けましたら嬉しいです。よろしくお願いします。 LSMASHSourceがAvisynth+のカラーフォーマット(YUV420P10とか)に対応してくれると嬉しいな〜、
作者の更新モチベが上がると嬉しいな〜、または誰かパッチ送ってくれる人がいると
嬉しいな〜(酷い他力本願)などと思ったので書いてみるテスト。
ソース動画をD&Dしたら、それを読み込むavsを作ってavs2pipemodでy4mにしてエンコーダに渡すという
単純なバッチを作ってるだけなんだけど、例えば10bit 4:2:0の動画を読み込む場合、
FFMS2-2.23.1ではAvisynth+のカラーフォーマットに対応しているので自動的にYUV420P10になるけど、
LSMASHSourceだと16bit hackなYV12になるので、深度を指定したConvertFromDoubleWidth()が必要になってしまい、
うまいこと自動で深度を判定する方法を思いつけない。
Avisynth+の現状はまだちゃんと把握できてないのだけど、HighBitDepthなプラグイン類って、
まだ16bit hackだけのものが多くて、新カラーフォーマットに対応してるものは少ないんでしょうか? もう1つ質問なのですが、Avisynth+のYUV420P10などのフォーマットの
プレビューに対応したAvsPmodって無いのでしょうか?
今はサイトにも載ってる
https://forum.doom9.org/showpost.php?p=1801766&postcount=1202
を使っているのですが、YUV420P10をプレビューしようとすると「Error trying to display the clip」となります。
(とりあえずConvertを入れてしのいではいるのですが。) LSMASHWokrsなら今パッと思いついたものなら、
a = LWLibavVideoSource(stacked=False)
b = LWLibavVideoSource(stacked=True)
a.height == b.height ? 8bit : 8bit超
って感じかな
8bitならstackedがTrueでもFalseでも同じ縦解像度だけど8bit以外だとstacked=Trueだと2倍にるからそれで判定 >>221
その方法だと、HighBitDepthだという判断はつくのですけれど、
10/12/16bit等を区別できないので、ConvertFromDoubleWidth()の
ビット指定をどうすればよいかという問題が残ってしまうのですよね。 >>222
LSMASHWorks側のformatを16bit決め打ちで読み込む
そもそも高ビット深度ってAviSynthは使えないからね AviSynth+が独自に拡張してるからそこら辺無理が生じてくる
本当はVapourSynth使うべきなんだろうけどあっちはあっちで音声使えないんだよな
あとプレビューしないでエンコーダに渡すのならffmpegとかから渡してもいいと思うんだけど
Trimするにしてもプレビューするでしょ? 無理が生じてくるというかLSMASHWorksが対応すればいいだけの話
VapourSynthには高ビット対応したんだからAviSynth+の高ビット対応も手間はあまり変わらんだろ https://www.axfc.net/u/3822129.zip
AvsPmodかどうかを判定するプラグイン作った
AvsPmodのときだけ別処理できるよ! こうしとけばOKかな
IsAvsPmod() ? ConvertTo8bit() : last GetProgramNameで既に出来なかったっけ?
GetProgramName() == "AvsPmod,exe" ? Trueの処理 : Falseの処理
応用で、
GetProgramName() == "AvsPmod,exe" ? AvsPmodの処理 : GetProgramName() == "avs2pipemod.exe" ? avs2pipemodの処理 : それら以外の処理
もできるはず >>228
https://pastebin.com/a3VNWKJB
ライセンスが明記されてなかったから勝手に弄くらせて貰って済まないけど
IsAvsPmod("AvsPmod.exe")
と言うように判定する名前を変えられるようにしてみた
原作だと大文字・小文字まで判定するから、IsAvsPmod("avspmod.exe")でFalseになるけど、
IsAvsPmod("avspmod.exe", insensitive=false)で大文字・小文字の違いを無視して判定させるようにしてみた
AviSynthプラグインは今まで書いたこと無いからこれで良いか分からん
そもそもC++なんて齧ったことしかなくて殆ど無知だわ
あと関数名変えたほうが良いかもな >>229
おぉ、いいじゃん。case sensitiveはマズかったね。直さないと。
ライセンスだけど、AviSynthのプラグインってGPL以外でもいいのかな >>230
MITライセンスのプラグインもあったりするけどどうせソース同梱にするならGPLでも良いんじゃない?
あと気づいてると思うけどオプション名がinsensitiveになってるからsensitiveにして(このままだとinsensitive=Trueでcase sensitiveになっちゃう)、
28行目のif文のインデントが崩れちゃってるところと原作のソースのインデントを盛大に4文字スペースに変えちゃってるところはそちら側で直してくれると助かる >>225-231
ありがとう。そういうアプローチもあるんですね。ググってみたけど
前スレ131でProgramNameのx64版ビルドをしてくれた人の
https://otsukemono.blogspot.jp/2014/03/avisynth-user-defined-functions.html
でも紹介されてる手法のようですね。拡張子の有無など注意点もあるようです。
これ、当時見かけたけどAvisynth+を使うようになったら読めばいいやとか思って
すっかり忘れてた記事だ・・・。
>>226
ConvertTo8bit()はdeprecatedのようなので、ConvertBits(8)がベターみたいです。 >>223
詳細は省いてしまったのですが、
http://mevius.2ch.net/test/read.cgi/avi/1486130737/297-335
でやったようにD&Dしたソース動画をQSVEnc等でエンコして
SSIM/ビットレート/エンコード速度などを調べるバッチを改良しようとしています。
強制16bit読み込みも考えたのですが、8/10bit読みと比べると
エンコード速度が結構低下するので、やめたほうがよさそうかなと。
「--avqsv等でのHWデコード渡し」でもやるんですけど、上で何故かffmpegによるSSIM計測が
うまくいかないケース(ソースのフォーマットにも関係あり?)があったので、
一度LSMASHSourceを通して「avs->y4m渡し」をして、SSIM計測も
「入力avs」「出力ファイルを読みこんだavs」とで計測すればもしかしたら安定するかなと。
入出力で深度等が異なる場合は両方RGB48に変換して計測すればいいのかな?色々試行錯誤中。
できればMP4等ではindex生成を省略できるし読み込みも信頼できそうなLSMASHSourceを使いたかったのですが、
とりあえずはAvisynth+のカラーフォーマットに対応してるFFMS2でも大丈夫だろうか。 >>234
昨日はQSVEnc使うとか知らなかったけど、昨日時点で俺が考えてたffmpegから渡すっていうのは
ffmpeg -i input -f yuv4mpegpipe -strict -1 - | (以下略
って言うやつだったんだけどこれじゃダメなの?
AviSynth通さないから若干速度速いだろうし10bitだと尚更速い気が思う
ところでQSVEncの--avqsvがダメなら--avswはどうなの?
AviSynthのFFMSで問題なければそれで良いと思うけども貼ってくれたURL覗いた限り
不特定多数に検証させるなら出来るだけシンプルのほうが良いと思うけどどうだろう 8bitを超える深度だと、SSIM計測がうまく行かなかった記憶がある
crf0でも、SSIMが変な値を返してきたような >>236
x264 10bitの--crf 0は8bitと違って可逆圧縮にはならないけど、それとは違う話? >>238
8bitのqpは0〜69、crfは0〜51
10bitのqpは0〜81、crfは-12〜51
--qp 0は8bitも10bitも可逆圧縮、--crf 0は8bitなら可逆圧縮、10bitは--crf -12が必要のはず
http://up-cat.net/x264%252Dchangelog%252Djp%2Br1700%252Dr1799.html
詳しくはここのr1764で 8bitも--qp 0でしか可逆にならないのかと思ってた >>235
1.SSIM計測で入力順を変えると異なる結果が出た。入出力ともに8bitだし本来なら入力順を変えても一致するはず。
QSVEncC --avqsv h264_pcm.m2ts -o h264.mp4
ffmpeg -i h264_pcm.m2ts -i h264.mp4 -lavfi "ssim;[0:v][1:v]psnr"
ffmpeg -i h264.mp4 -i h264_pcm.m2ts -lavfi "ssim;[0:v][1:v]psnr"
2.avqsv用のバッチも作るが、x26xも使うので共通して高深度も渡せるy4m方式で別途バッチを作る。選択肢は以下。
A.ffmpegにソースを渡しy4mにする
B.avsを作りavs2pipemodでy4mにする
3.ffmpegに直接動画を渡すと変なSSIMが出たということは前にもあり、
その時はavsをかますと安定してた気がする。ffmpegのコマンドが悪いだけかもしれないが
ffmpegによるデコードはなるべく避けてavsを使う形にということでBを選択。
4.avs内でのデコードと処理はどうしよう・・・ということで>>219、>>234へ至る。 なお>>234の"RGB48にしてSSIM計測"は色々変なので再調査中。 >>207
prefetch(0)にすれば解消するけど? mvtools2のMDegrainってノイズ除去としてどう?
アニメとの相性はかなりいいように見えるけど、あまりmvtoolsでノイズ除去って聞かないよね
ノイズ除去だとFFTやNL-means系が有名だけどかなり輪郭ボケるからmvtoolsの方がいいように思うけど SMDegrainを試してみたら?
ManalysisとかMsuperとか気にしないでもとりあえずは使えるし
SMDegrain_KNLMeansCLとかいうゴッツいのもあるし SMDegrainは関数名のとおりフィルムグレインや演出のグレインが入ってるところがごっそりとツルツルになっちゃうからなぁ
グレインが乗ってない部分へのNRとしてはMPEG由来のモスキートノイズとか目立たなくなる感じだから優秀だとは思う contrasharpのオプションを使えばツルツルにならないよ 天使の3PEDって、グレインノイズエフェクトの生成がところどころ止まるんだな
MDegrain使ってるからアーティファクトかと思ったが 止まってるね。てかTSの時点で圧縮ノイズなのかグレインノイズなのか分からん状態になっているがw TFMのmodeってどれがいいの?
ググると1と6がよく使われてるみたいだけど、VIVTCだと6ないよね Tdeint+TFMはさすがにもう使わなくなったな TdeintはQTGMCとかあるから分かるけど、TFM使わなかったら何使うんだ? TFMはDVDとかBDクラスの品質でないと誤爆するイメージ 普通にインタレ解除したらいい
そもそもフィールドマッチングで誤爆したんじゃ意味ねぇと思って使うのをやめた(ノイズの多いシーンチェンジやシーンで前の絵が2回続く) あー、そういうことか
http://www.eizo.co.jp/eizolibrary/other/itmedia02_06/
> I/P変換には、大きく分けて2種類の手法がある。1つは「動き適応型」、もう1つは「2-3プルダウン型」だ。
> 両者ではI/P変換の仕組みがまったく違うが、どちらが優秀というわけではなく、表示する映像ソースに
> 応じた使い分けが重要になる。 これらのI/P変換に対応した再生機器やディスプレイでは、自動で変換の
> 手法を使い分けていると考えてよい
インタレ解除って、動き適用型(QTGMC)と2-3プルダウン型(TFM+TDecimate)を組み合わせて使うもんだと思ってる
ノイズの多いシーンとかでフィールドマッチングがうまくできないときは動き適用型に切り替えればいいと思ってるけど、
それだと何か問題あるの? できないと思う。したいんだったらSelectEveryで自分でやればいい TFMってYプレーンの一番上の行の左64ピクセルの下位1ビットにヒント情報埋め込んでるから
この64ピクセルは下位1ビットに変なデータが入るんだな。すげー気持ち悪い 気持ち悪いけど面白いねそれ
>>259
そのリンク先の説明ってあんま良くないな
動き適応は動きがあるかないかで解除方式を切り替えるってことだからbob系処理がベースのQTGMCは動き適応ではないよ
(細かいことを言うと解除済みソース専用のProgSADMaskっていう動き適応オプションがあるにはあるけど)
>>260
60→24とかは無理だね
ただFPSDivisorオプションを使って1/整数に間引いて出力することなら可能 >>263
確かにこの説明足りなすぎるな。
動き適用型って動くところはフィールド内補間だからbob化で、
最新のやり方だと、動きベクトルを検出して補間するからQTGMCは動き適用型ってことで
60→24はSelectEvery(5,1,3)とかやればいいんじゃないの? ちょっとややこしいけどQTGMCは動き「適応」じゃなくて動き「補償」
これはプログレッシブ化したあとのチラつきを抑えるために動き「補償」付きの時間軸平滑化を掛けますよってお話であって
プログレッシュブ化の方式自体を動きによって切り替えるってことではないから、動き「適応」のIP変換ではないんだよね TDeintも動き適応型だったはずだから
なんかおかしいと思ってたらそういうことか 分かったよ。動き補償型ね。motion "adaptive"じゃなくてmotion "compensation"ね
それはそうとして、24pがプルダウンされたやつをQTGMCにかけると、
24pフレームの間のフレームが捏造されるから、2-3プルダウン型も必要だよね 今で知らなかったけど、「bob」って「ひょいと(上下に)動くこと,急に引く動作[こと].」って意味で
上下に動くあのチラつきは「bobbing artifact」って言うんだね
「bob化」の意味が未だに分からないんだけど、素直に解釈すると
フィールド内補間するから、bobbing artifactが大量に乗った映像にするってことでいいの?
QTGMCをbob化というのは、かなり失礼だなw そのチラつきを抑えるために動き「補償」付きの時間軸平滑化を掛けますよってのが
(Quick) Temp Gauss Motion Compensated というフィルタ名のそのまんまの意味であり由来でもある
QTGMC(tr1=0, tr2=0)ってしてみるとIP変換のコアの部分がbob系というのがよくわかるよ >>268
Bob化ってのは60i → 60p にすることを指す言葉で
それを行うための課程(処理の複雑さなど)は関係ない いやそれは分かるよ。MAnalyzeで動き検出してMDegrainで時間軸平滑化してるのはソースみれば分かる。
tr1=0,tr2=0にすれば時間軸方向を全く使わなくなるから、ただのbob?になるのも
俺が言いたかったのは、2-3プルダウン型だけでも、動き補償型だけでも、ダメで
組み合わせる必要があるってこと
>>270
そうだよね。サンクス
でも、そうすると>>269の「bob系(処理)」ってなんだろう。60i → 60p系?
bob化は2倍fps化のことで、ただのbobは単純にフィールド内補間すること、って理解でいいのか あ、QTGMCのQってQuickだったのか!全然Quickじゃない気がするが・・・(遅いよ) >>262こんなハックしないで、ちゃんとフィルタ間でデータのやり取りができるように
VapourSynthのプロパティが必要だな。VFRにも対応できるようになるし
音声殺して音声のパラメータ入れるところにポインタいれたりとか、いろいろハックしすぎw >>271
フレーム = 30fps (60iも30fpsのうち)中の1枚
フィールド = 1フレーム中の奇数ラインと偶数ライン http://egg.2ch.net/test/read.cgi/jisaku/1500765326/490-507
490 名前:Socket774[sage] 投稿日:2017/07/26(水) 03:36:29.73 ID:dFG7dSez [1/3]
一般的なマルチスレッドによる処理は平行処理、AVXなどのSIMD命令による処理が並列処理
507 返信:Socket774[sage] 投稿日:2017/07/26(水) 08:17:46.75 ID:dFG7dSez [2/3]
>>505
エンコは典型的なSIMDライクの並列処理、一般的なマルチスレッドはMIMDな平行処理
まあ一般には、並列処理 ⊆ 平行処理 の関係ではある
要するに、並列は同時に平行でもあることが多い、あるいは並列は平行の特殊な場合と考えればわかりやすい あんま詳しく無いから合ってるのか間違っているのか分からんw 最近AVSいじってないせいか、
久しぶりに32bit版のAvsPmodでプレビュー編集してたら
突然エラーを吐いて突然フリーズするようになった。
avsPmodの64bit版って無いんだっけ? ふむ、これのことか
ttp://forum.doom9.org/showpost.php?p=1801766&postcount=1202
ttps://www.mediafire.com/?p2v8zdivvtzu40p 考えてみりゃ当たり前だけどTFFをReverse()するとBFFになるんだな スクリプト関数とかって中で何が使われてるかはよく読まないと分からないけど、
実際に何が使われたかって簡単に分かる方法ない?
Avisynthが構築したフィルタグラフを見れるとうれしいんだけど 自分でAvisynth改造してフィルタグラフ出力できるようにしたわ
SMDegrain()
http://i.imgur.com/56xKzxl.png
QTGMC()
http://i.imgur.com/JMWKKaO.png
SMDegrainは意外とシンプルだね
QTGMCはすごいw >>283
おお・・・面白いねこれ。ツールとして欲しいな。 >>284
githubに上げてきた
https://github.com/nekopanda/AviSynthPlus/releases
AviSynth.dllを置き換える必要があるけど、AvsPmodのバイナリがあるフォルダに入れるとかでもOK
readme.txtにも書いてあるけど、べた書きavisynthスクリプトを出力か、dotファイルを出力か選べる
>>283はdotファイルをgraphvizで変換した画像 >>286
面白いな
MP_PipelineとかScriptcrip内の処理はクオートを外せば見れるようになるけど、
Trimでちがう処理したクリップ同士をつなぎ合わせると、それ以前の経路が省略されちゃうのか
冒頭がこんな感じになっちゃう
digraph avs_filter_graph {
node [ shape = box ];
clip3 [label = "..."];
clip17 [label = "EraseLOGO"];
clip18 -> clip17;
clip16 [label = "spline64Resize"];
clip17 -> clip16; >>286
レス遅くなってしまったけど、ありがとう。 AVSのクリップ変数って大量に定義しまくってメモリを大量に消耗するんだけど
あれってAVSが読まれている間にちゃんとメモリ解放とかするんだっけ? 変数が大量にあってもクリップのインスタンス数が同じならメモリ消費変わらなくね Internaly multi-threaded desampling functions (DeBilinear, DeBicubic,...) - Doom9's Forum
http://forum.doom9.org/showthread.php?t=174846 >>291
Deが付いてるけど
その人が過去に公開しているリサイズMTと何が違うの? >>293
どういう時に使うんだろう?
ちょっと自分には想像できない・・ 可逆ではないんだし、リサイズされた画像を元に戻すと言ってもさらに劣化するだけじゃない? 自分はNRがわりに720pにリサイズとかするから
それを元の解像度に戻す的な感じなのは思いつくけど
再生時でいいやって思っちゃう makediffって2回掛けると元に戻るんだね
rg = src.RemoveGrain(20)
rg.mt_makediff(rg.mt_makediff(src))
makediffってadddiffと対で使うものだとばかり思ってたわw ■ このスレッドは過去ログ倉庫に格納されています