Avisynth 質問スレ Part10
レス数が1000を超えています。これ以上書き込みはできません。
Avisynthの質問スレです
・質問する前に
1.まずは、過去ログを読むか検索エンジンなどを使って調べましょう
2.次に同じような質問がないかCtrl+Fでスレッド内を検索しましょう
・荒らし・煽りは綺麗にスルーしましょう
■前スレ
Avisynth 初心者質問スレ Part9
https://mevius.5ch.net/test/read.cgi/avi/1489152984/
■関連スレ
・Avisynthを絶讃ιょぅょ Part32
https://mevius.5ch.net/test/read.cgi/avi/1486535501/
■外部リンク
・Avisynth wiki(英語)
http://avisynth.nl/index.php/Main_Page
・avisynth.info (旧 AviSynth Wiki、日本語)
http://www.avisynth.info/
・AviSynth ニュース
http://news.avisynth.info/ Releaseとかそのまま使わない
トロイとかの分類で検出されるんだよな・・・
ほんとうかね 3.7.0のバッチって時点で何言ってるのか意味不明なんだが・・・ 不明も何もavisynth+3.7.0なら動く、3.7.1だとエラーが出る、それだけだよ? ただのおま感じゃない?
Windows 11 21H2 だけど難なく動いたよ。
普段は x264 か x265 使っているけど、両方 avs を直で読ませてるから
パイプでフレーム渡すとかしてないけどねw
https://i.imgur.com/bVKYKKl.png >>899
avs2pipemodはあんまり安定してないから
avs4x26xおすすめ >>903
おま感の可能性は大、じっくり調べてみます
>>904
avs4x26xも出ちゃったからねー
余談だけどavs4x26xってavs2pipemodより少し遅くない?(ほんの僅か程度だけど) じゃあパイプの問題じゃなくavsスクリプトの問題なんじゃね
少し上でリサイズなどでエラー出ると報告あったし AVS書くと長いから簡略で
SetFilterMTMode("DEFAULT_MT_MODE", MT_SERIALIZED)
LWLibavVideoSource()
LWLibavAudioSource()
AudioDub
Trim()
Its
Prefetch(4)
ConvertToYUV420()
Dither_convert_8_to_16()
Dither_resize16nr(1280,720,0,-0,-0,-0,kernel="spline",taps=6,noring=true)
f3kdb(range=16, Y=72, Cb=80, Cr=80, grainY=0, grainC=0, sample_mode=2, seed=0, blur_first=true, dynamic_grain=false, opt=-1, mt=true, dither_algo=1, input_mode=1, input_depth=16, output_mode=1, output_depth=16)
DitherPost(mode=6)
Prefetch(1,4)
return last
これで3.7.1も動いた、AudioDubの後にPrefetch(1,4)を入れるとエラー MyGearが PCI 4.0 になった
A4000 RTX 欲しいな
Amatsukaze の Cuda Filters が出て
Avisynthもいじることがが激減してしまったな・・・ 3.7.1にしたらPrefetch書くと動作停止するようになった
全部オートローディングしてるけど何のプラグインが原因だろう 自分も>>907でいけるかなーと思ったらダメな時があります
理由は不明(Prefetchなのは確実) gispos氏がframe propertiesとprefetchに不具合あるって言ってるから、それかね
うちだとr3543以降でConvertBits使うとaccess violationになって更新出来へん・・・ >>912
Prefetch( threads = 8 )
return last
としてる avs を動かしてるよー とりあえずneo_f3kdbとPrefetch書くと動作停止する
LWLibavVideoSourceとLWLibavAudioSourceはPrefetch書いても大丈夫だった
一つ一つのプラグインで確認するのはやってられないので3.7.0に戻した Prefetchはreturn lastの前に一つだけ?
それとも複数? >>915
Prefetch(n)
return last
はavs記述の最後に一つだけ >>914
neo_f3kdb( output_depth = 10 )
とだけして処理させてるけどうちは動いてる
なんだか良く分からないねぇ >>917
neo_f3kdbの前にConvertBits書いてる? >>918
neo_f3kdb 直前は YV12 なので付けてないよ。
> Supported color formats: Y8, YV12, YV16, YV24, [all planar Y/YUV formats (8/10/12/14/16bit) are supported]
と書いてあるし、入力がこれらのフォーマットなら付ける必要無いかと。 >>919
>>919
もしできればだけど、
ConvertBits(bits=16)
neo_f3kdb(output_depth=16)
Prefetch(n)
return last
のような記述で3.7.1で動くか試してほしい >>920
寝てた。
んで、手元のスクリプトで
convertbits( bits = 16 )
neo_f3kdb( output_depth = 16 )
Prefetch( threads = 8 )
return last
と続くように弄ってみたけど落ちたりしないかな。
avs+ [info]: AviSynth+ 3.7.1 (r3593, 3.7, x86_64)
avs+ [info]: Video colorspace: YUV420 (YV12)
avs+ [info]: Video depth: 16
avs+ [info]: Video resolution: 1440x1080
avs+ [info]: Video framerate: 24000/1001
avs+ [info]: Video framecount: 34764
avs+ [info]: 1440x1080 fps 24000/1001 i420p16 sar 4:3 frames 0 - 34763 of 34764
x265 [info]: Using preset medium & tune animation
raw [info]: output file: s:/hoge/encode.26x
x265 [info]: HEVC encoder version 3.5+2-g2b25c9ba0+45 特定のwinのバージョンとの組み合わせ、あるいはdefender等のせいなのか
1/11からavisynthplusの3.7.1系でblackmanresizeを実行すると
0x80000005が発生して落ちるようになった。3.7.0は大丈夫
winはip22526.1000。rev 3599,3600両方だめ pinterf版AviSynthCUDAFiltersのincludeのavisynth.h,avs/を
現状(r3600)のavisynthplusのincludeで置き換えたら落ちなくなった >>924
うちでConvertBitsで落ちてたのもそれが原因だった
ありがとう >>907です
Prefetch(4)とか(1,4)とか
return last
一番下に書けば動きますが、中間に(Itsの後とか)Prefetchを書くとダメで理由がわからないので3.7.0に戻しました
3.7.2待ちかな・・・ Avisynth 3.7.2 test 1
https://drive.google.com/uc?export=download&id=1A2Jb2OSYzGI0tBFEmvlT0RxxLwVoCiP_ >>927
avisynth Prefetchで検索すると最後の1行でなくなってるのがわかりますです
http://avisynth.nl/index.php/AviSynth+ >>930
You enable MT by placing a single call to Prefetch(X) at the end of your script, where X is the number of threads to use.
って書いてあるけど。 >>933
SetFilterMTMode でフィルター毎の動作を設定しておけば
事細かに Prefetch 書く必要無さそうだけどなぁ >>934
わかってはいるんだけど面倒くさくてw
プラグイン(dll)を指定するならまだラクだけど違うからねー わけあって久しぶりに環境構築したんだが、プラグインのサイト結構減ってて
Avisynth続いてるの? 今は AviSynth+ が活発にメンテナンスされているよ。 5.1ch音声をステレオにダウンミックスするとき、皆さん、どうしてますか?
Dmix6Stereo()を使うと、フロントセンターが小さい気がするんです。 GetChannelで各チャンネルを抜き出せるのは知ってるんですが、
それをどういう比率で合成するべきなのかということを訊きたいんです。
ひょっとして、フロントのLRだけ抜き出すということですか? 情報をありがとうございます。これから精読してみます。
質問してから自分で調べたところ、
「フロントのLRにセンターやバックLRを1/√2倍して合成する」のが基本的な方法だという情報を見つけました。
これを愚直にAVSで再現したら、だいぶ聞きやすバランスになりました。
皆さんから教えてもらった情報も参考にして、より良いものにしたいと思います。
ありがとうございました。 リンク先の文に出てくる0.707倍というのが1/√2のことですね。
基本的にはこの係数を使うのが正しいようです。
とは言え、AVSのMixAudioを使う時に音が大きくなりすぎないよう、
更に適宜係数を掛けないといけませんが。 そろそろx264からx265/HEVCにするかと思ったんだけど、
もしかしてVFR動画はdtseditとかtc2mp4modとかツールが対応してない? vfrってコンテナにタイムコード入れるんだから
コーデック関係ないんじゃ tc2mp4modは使った事ないのでなんともだけど、DtsEditはHEVCは扱えないので自分はL-SMASHで代用してる。
処理の順番とか書き方とか合っているかどうかは分からないけどこんな感じ。
muxer.exe -i anime.video.raw.265"?fps="24000/1001" -o anime.video.mp4
remuxer.exe -i anime.video.mp4?1:language=jpn -i anime.audio.faw.m4a?1:language=jpn -o anime.temp.mp4
timelineeditor.exe --media-timescale 120000 --media-timebase 1001 --timecode anime.timecode.tmc anime.temp.mp4 anime.encoded.mp4 CUDA対応のDGindexNXを無料で使っています。avisynthでデコードし、60fpsのデインタレース解除するとx264 preset slower tune animationで約80fpsの速度でエンコードできました。画質はまあまあかなと思います。
CUDA対応のプラグインでお薦めはありますか?
ちなみに使用環境は5950x rtx3080になります。 kfmしかないと思うけど本家plusで動くかは把握してない
kfmはavisynth neoとの利用が現時点での鉄板な気はする >>951
avisynth plusはいれているのですが、CUDA対応のavisynth neoがあるのですね...
フィルタもCUDA対応し、エンコードはCPUでするだけで効率が良くなりそうな気もします。
ありがとうございます。 DGinexNVの他にCUDAプラグインが含有されてたのでそちらの方を使ってみます。
お騒がせ致しました。 >>832 で Avisynth+ 3.7.0 + pinterf/AviSynthCUDAFilters がうまく動かないって質問したものだけど
KFMDeint.avsi のコードを1ずつ実行して、いくつか問題の切り分けができたので報告しとく(おま環かもだけど)
自分の環境だと、OnCPU()してCUDAフィルタで処理するところまでは動作するが、
最終的にOnCUDA()してCUDA フレームをCPU フレームに戻すところでデッドロックしてるっぽい
特に、KTGMC()で出力した60pフレームをOnCUDAすると確実にデッドロックする…
Avisynth Neoも2018年ごろのバージョンだとMT有効だとデッドロックするとかあったなぁ…
あの頃はnekopanda氏がすぐ修正してくれたけど >>954
OnCuda OnCPUをどう書いてるか
全コードみたいです・・・ >> 955
レスありがとう、
例えば以下のコードでデッドロックする感じです。
投稿エラー回避のために分割してます
------------------------------------------------------------
SetMemoryMax(2048, type=DEV_TYPE_CUDA)
SetDeviceOpt(DEV_CUDA_PINNED_HOST)
src = LWLibavVideoSource("xxxxxxxxxxxxx.ts").OnCPU(0)
preset = "Faster"
sourceMatch = 0
lossless = 0
dev = 0
cuda = true
if(cuda) {
cc = CUDAComputeCapability(dev)
Assert(cc >= 35, "[KFM CUDA Error] Specified GPU: " + CUDADeviceName(dev) + " is not usable. (CC=" + string(cc) + " < 35)")
} >>956 の続き
------------------------------------------------------------
pad = src.KFMPad()
src = pad.Crop(0,4,0,-4)
xTGMC = function[preset, sourceMatch, lossless, cuda, dev](clip c, int useFlag) {
prevGlobals = (useFlag == 0) ? "Replace" : "Reuse"
cuda ? c.KTGMC(Preset=preset, SourceMatch=sourceMatch, Lossless=lossless, dev=dev, PrevGlobals=prevGlobals, useFlag=useFlag) : c.QTGMC(Preset=preset)
}
call_xTGMC = function[preset, src, pad, xTGMC](int useFlag) {
is_pad = (preset == "Faster" && (Height(src) % 16) == 8)
srcq = is_pad ? pad : src
p60 = srcq.xTGMC(useFlag)
is_pad ? p60.Crop(0,4,0,-4) : p60
}
stt = src.KAnalyzeStatic(30, 15, pad)
clip60 = call_xTGMC(0).KMergeStatic(src, stt).OnCUDA(0)
return clip60.OnCUDA(0) >>957 最後の return の .OnCUDA() は削除してください SetFilterMTMode とか書かないんだね・・・
Neoは
Prefetch(clip, int "threads", int "frames")
を好きなところにいくつも入れられるようだけど
そういうのでなんとかならんかね 3.7.1は何故か動かんかったけど3.7.2は今んところ順調 3.7.1はPrefetchを複数使うと動いたりダメだったりしたけど
3.7.2は今のところ大丈夫っぽい?まだ2本だから何とも言えないけど フィルタ毎にちゃんと調整すれば上がるんじゃね?
俺はそこまではめんどいから最後の1行に書くだけだけど >>963
正直わからないけどNeoの仕様と同じなら有効なはず?
ivtc_txt60mcとかtxt60mcHybrid、QTGMC見たく重いといいんじゃないかと・・・ そういやPrefetch複数使えるのneoフォークの方か Cropで左右1ドットずつ削ろうとすると
2で割れる数値しか指定できないようなエラーが出ますが
回避策ってありますか? >>967
リサイズで削ればいいんでないの
Spline36Resize(1918, 1080, 1, 0, -1, -0)
みたいな リサイズのcropは小数点も入れられるから便利かも? やっと時間ができて3.7.2ビルドした
CUDAFiltersはヘッダ変えてビルドする必要あるね
それで動いてる
他はどうかな・・・ VS2022 Comm を更新して
CUDA Toolkit も 11.6 update 2に更新して
Avisynth3.7.2をビルドして
CUDAFilters も 3.7.2 + CUDA 11.6 のnvccでビルドして
AVSPModも新しいのにして
Python2.7のdllもビルドして
日が変わってた 初歩的な質問で恐縮ですが、Avisynthでもffmpegでも、ビルドする環境?によって生成される実行ファイルのバイナリが異なるのはなぜでしょう?? ビルド環境の情報や時刻が埋め込まれるんじゃないのかなぁ?
ウィルスをもし作っているとしたら追跡とかできるし スレチかもしれませんが
rigaya氏のx264ですがr3000までは全角かなのAVSネームでも入力可能でしたが
3048、3094でやってみようかと思ったらエラーが出ました
AvsPmodでは通ります、これはANSIじゃダメということでしょうか? AvsPmodのエディタ何故かマウスホイールが効かなくなって不便極まりない srestoreフィルタが使いたくてまったくの初心者ですがAviSynthを使ってみようと思ったのですがうまくいきません。。。
OSはM1のmacです。3.7.2のリリースにM1 mac向けのpkgがあったのでダウンロードしインストールしました。
その後公式のチュートリアルに従ってVersion()だけのtest.avs作りましたが再生できず、ffmpegで読むこともできず。
Libraryフォルダにlibavisynth.dylibというのはありますが ffmpeg -formats でそれらしいのは出てきません。
見てるとみなさんビルドして使うのが当たり前のようで、諦め気味ですが、なにかアドバイスもらえると嬉しいです。。。 ffmpegのビルドオプションの --enable-avisynth が入ってないことを確認しました。
ffmpegが.avsを読まないのはこれかな… Ryzenの3D V-Cacheはavisynthに効くのかな GPU買ったらKFMでデッドロックがしっかり出たわ
アーキテクチャの問題は少なくともあるのか
少しづつわかってkた >>954
これはavsiで解決しなそう
cuda filters の nvcc のソースレベルなのか
なにか対策されているのか
Pascal は動くけど Ampere は動かないね
SM変えたりJITとか試してみたけどだめだった
なにか見逃してるかな・・・ CUDA Filters、KTGMCは
修正しようとた痕跡がいっぱいあるような感じするが、
nekopanda氏、うまくいかなかったのかな・・・
そもそもデッドロックの原因が何処にあるのか
まだ確定してない・・・
本当にデッドロックなのかも怪しい
そしてソースが長い・・・
これは相当時間がないとテストできない スレチだけどffmpeg 5.xx以降、4.xxとの互換性が一部消えたな
パラメーター名の文言がいくつか変更されているのでそのままだとエンコできずに失敗する >>954
の話は、CUDA runtime API 勉強するしか無いですかね・・・
なにか対策されていて動かないのであればどうしようもないですが・・・ NVIDIA社のGeForceに限定されてしまうCUDAよりも環境を選ばない標準規格とも言えるOpenCLの方が色んな意味で良さそう
rigaya氏がAviUtlだけどOpenCLのGPUフィルタ実装してるみたいに >>954
の話まだ解決できず
そもそもGPUは何使ってるの? レス数が1000を超えています。これ以上書き込みはできません。