Avisynth 初心者質問スレ Part9 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
Avisynthの初心者質問スレです
・質問する前に
1.まずは、過去ログを読むか検索エンジンなどを使って調べましょう
2.次に同じような質問がないかCtrl+Fでスレッド内を検索しましょう
・VapourSynthの話題はできるだけ専用のスレでお願いします
・荒らし・煽りは綺麗にスルーしましょう
■前スレ
Avisynth 初心者質問スレ Part8
http://echo.2ch.net/test/read.cgi/avi/1463062591/
■関連スレ
・Avisynthを絶讃ιょぅょ Part32
http://echo.2ch.net/test/read.cgi/avi/1486535501/
・お前らのショボイAvisynthスクリプト貼ってください part4
http://echo.2ch.net/test/read.cgi/avi/1486693045/
・VapourSynth Part2
http://echo.2ch.net/test/read.cgi/avi/1488452387/
■外部リンク
・Avisynth wiki(英語)
http://avisynth.nl/index.php/Main_Page
・avisynth.info (旧 AviSynth Wiki、日本語)
http://www.avisynth.info/
・AviSynth ニュース
http://news.avisynth.info/ 割と需要あったみたい?だからちょっと丁寧に書き直したよ
ttps://pastebin.com/vy851k1i
start = 1 の時に不正な動作をするのを修正
endが0や負の数の時に不正な動作をするのを修正 というより入力したらエラー出して弾く
2つの入力クリップの解像度と色空間さえあっていれば、
映像のフレームレート、音声の有無、音声のサンプリングレート、音声のサンプルタイプが違っていても処理を可能とした
今までどおり、フレームレートも音声も全てbase側のものを使うようになっている
altの方にoffsetをつける用にした方が良いのかなとは考えたけど中身がすごく複雑になるし、
ReplaceClip(base, alt.Trim(x, y), start, end)
みたいにして調整できるし良いかなって・・・ >>436
> altの方にoffsetをつける用にした方が良いのかなとは考えたけど中身がすごく複雑になるし、
> ReplaceClip(base, alt.Trim(x, y), start, end)
> みたいにして調整できるし良いかなって・・・
それだと
ReplaceClipMod(V01, V02, 200, 100, 50)
みたいな感じでbaseクリップより若いaltの開始フレームだとまた書くのが面倒になるのでは?
って思ってもみたり
まあ俺もMod作っておいてなんだけど、普段ならtrimだけで処理するよなーと >>437
確かに普段はTrimでするかな というより、普段から映像置き換えとかしないからなぁ・・・
あえて関数を作ったりプラグイン関数を導入してまでやろうとしなかったっていうのが正解に近い >>72
作者さんまだ見てらっしゃるかわかりませんが質問です。
こちらの関数を使うと不正なストリーム出力扱いにされるんですが、
原因わかりますでしょうか?
※AvsPmodの場合
-----
Traceback (most recent call last):
File "avsp.pyo", line 9061, in OnMenuVideoToggle
File "avsp.pyo", line 13855, in ShowVideoFrame
File "avisynth.pyo", line 462, in GetFrame
WindowsError: [Error -1073741795] Windows Error 0xC000001D
-----
※MPCの場合
-----
CAVIStreamSynth: System exception - Illegal Instruction at 0x6e972509
-----
ちなみに最後のTDecimateを取り除くと一応エラーを出さずに表示できます。
(勿論意図した出力結果ではありませんが) >>439
tdeintは相性がきつい感じだからyadifmod2にでも置き換えたらいいのでは
とりあえず↓な感じにしたら動いた
function TDecimate24P7A2(clip clip){
video=clip
Interp=video.nnedi3(field=-1)
mask_clip=combmask(video,cthresh=10,mthresh=10)
clip_0=video.yadifmod2(edeint=interp)
clip_deblock=video.yadifmod2(edeint=interp).deblock(quant=16)
filt_clip=MaskedMerge(clip_0, clip_deblock, mask_clip,MI=60)
clip1=video.yadifmod2(mode=0)
clip2=clip1.mt_lut("128", chroma="0", offx=120, offy=24, w=420, h=230).mt_lut("128", chroma="0", offx=260, offy=920, w=1320, h=80).TDecimate(mode=1,clip2=filt_clip)
return clip2
}
セットアップするのがめんどくさかった
eedi3と smoothD2は消したけどお好みで >>441
レスありがとうございます。
ただ貼っていただいた関数でも解消しなかったので、読み込みプラグインを
最小限にして手あたり次第試してみたのですが、CombMask-1.1.0を
CombMask-1.0.0に変更したところ件のエラーは出なくなりました。
が、出力されたクリップのロゴ部分にNR効果が適用されているようには
見えないのですが、私この関数の効果を勘違いしてます? ロゴじゃないね
圧縮効率が悪くなるインタレ縞だけフィルタリングするものだから >>443
なるほど、回答ありがとうございます。
今 BS11overlay() でやってるロゴとテロップ消去が楽になるかと期待しましたが、
そんなうまい話は無いですね・・・(編集すごくメンドクサイ) join_logo_scpによる自動化おすすめ(関連スレ https://mevius.5ch.net/test/read.cgi/avi/1484985868/
最終的なエンコードは誤爆するTIVTC24P2とか使わずautoVFRで超ラクチン 60iテロップを24p化する際、60iテロップの開始フレームと終了フレームを指定するにはどのようなavsを書けばよいのでしょうか? >>448
調べてから聞こうぜというか公開されてる他人のavsも見るようにしようぜ、いろいろ参考になるから
あと大抵の初歩的なことは1日2時間調べるのを10日くらいやれば解決するぞ
こっちのやり方だと
t01 = Trim(6667,7071).TIVTC24P2()
t02 = Trim(7072,7971).txt60mcHybrid_hol(2,bobtype=3,txt_t=960,txt_b=1030,debug=0)
t03 = Trim(7972,25367).TIVTC24P2()
t01++t02++t03
などとやっておいてからAudioDubで音声結合かな
基本的に連続区間最後のtrim以外は5の倍数範囲指定でやってる
まれに区間先頭終端が縞のときがあるけどそのときはtrim値修正したり
該当フレームだけを処理したりしてるな directshowsource("hoge.avi")
total_frames = FrameCount()
str = String(total_frames)
writefile("hoge_total_frames.txt",str)
こんな感じでデータを書き出したあと
Avisynthを呼び出したアプリをすぐに終了したい場合はどのようにしたらいいのでしょう?
検索すると、avs2avi a.avs -n o とか avsutil a.avs play などとヒットするのですが
avs2aviの方はコンバート設定のGUI画面が
avsutilの場合は、長々と動画を読み込んでしまいます
テキストファイルを出力して、さっさと終わる方法を教えてください
お願いします avs2pipemod使うなり、avs2aviでも4cc決め打ちで設定するなりすればできるはずだが・・・ あ、なるほど。いわれてみれば当たり前の話ですね
ありがとうございます
ただ何かちょっとすっきりしませんね…
例えば、return文を使うとか、何かお約束の方法があっていいような感じも 実行時に上からスクリプト読んで順次実行してるわけではないから
returnは目印にならない >>450 >>453
avs2pipemod.exe -info でいいんじゃないの。
あと、総フレーム数を書き出すだけなら、WriteFileStart()にしたほうがいいと思う。 aviutilやvirtualdubで開いてから、5〜10秒後にtaskkillコマンドで閉じるとか >>450
何でdirectshowsource使ってんの?
トラブルの元になるから、lsmashsource使ったほうがいいよ みなさんありがとうございます
>>454
"スクリプト"内では式を評価するのは上からですよね?
それとは別ですが、returnはすべてをまとめて最終的に何を返すか
というコマンドだと理解してるので、それを"無"にするとかの方法がないものか
と思った感じです
見当はずれだったらすみません
>>455
以前、ffprobeを試したときそれも試してみましたが、空のファイルが出力されて
ダメでした。ちなみに、ffprobeだとファイル自体が出力されません
>>456
実はそれ、今までffplayで使ってた方法です
killするタイミングを得るために、別の処理が必要になるのでスマートじゃないかと
もう一つ、ffmpeg -t でやる方法もあるんですけど、出力されるファイルの内容が
おかしくなる現象で現状使えない感じです
結局のところ、>>451が一番いい方法、ということになるようですね >>458
avs2pipemod _avs_ --benchmark -trim=1,1
これでいいんでない? >>455
先ほどは拙速な返事をしてしまい、すみませんでした
WriteFileStart()を使い、avs2pipemod.exe -info で、きれいに書き出せました!
こうやって挙動に違いが出るもんなんですね。勉強になりました
ありがとうございました >>460
これでもきれいにできました!
ありがとうございます あれ、別にWriteFile()でも問題ないと思ってたけど、試してみたらうまく出力されないな。
WriteFileStart()じゃないとダメだったのか。
勘違いしてたのでこちらも勉強になったw AvisynthNeo用に、以下のファイルに差し替えたらクラッシュ…
https://github.com/nekopanda/AviSynthPlus/issues/1
Traceback (most recent call last):
File "run.py", line 49, in <module>
File "./avsp.py", line 18897, in main
File "wx\_core.pyo", line 7981, in __init__
File "wx\_core.pyo", line 7555, in _BootstrapApp
File "./avsp.py", line 18884, in OnInit
File "./avsp.py", line 5227, in __init__
File "./avsp.py", line 6238, in LoadAvisynth
ImportError: No module named avisynth_cffi 32bit版では問題なし
64bit版はエラーが出るってってどういうことなんだ… と思ったらまたエラーが…
Traceback (most recent call last):
File "run.py", line 49, in <module>
File "./avsp.py", line 18897, in main
File "wx\_core.pyo", line 7981, in __init__
File "wx\_core.pyo", line 7555, in _BootstrapApp
File "./avsp.py", line 18884, in OnInit
File "./avsp.py", line 5227, in __init__
File "./avsp.py", line 6238, in LoadAvisynth
File "avisynth_cffi.pyo", line 784, in <module>
File "cffi\api.pyo", line 450, in verify
File "cffi\verifier.pyo", line 112, in load_library
File "cffi\verifier.pyo", line 201, in _write_source
IOError: [Errno 2] No such file or directory: 'ここまで省略\\lib\\library.zip\\avisynth_cffi_ext.c' AVSPのフォルダに
AviSynth.dll と DevIL.dll を入れてるけど
そういう使い方で良いんだよね? かまわんよ
あと、レジストリいじってプラグインフォルダ作るといい 一回全部消して入れ直したら、無事動作するようになった。
しかし、アイコンが真っ白いままだったので、フォルダの場所を変えざるを得なかった… Avusynth-CUDA-r2533でscriptclip系を使うとデッドロックしていたのを修正していましたが
AvusynthNeoではどうなんでしょうか? >>472
+CUDAの修正は全部入ってるよ
バージョンアップでプラグインのインターフェースが変わったから互換性がないってだけ >>473
ありがとうございます
+CUDAは使えない(PCが貧弱)のと+MTで極端に重くなるのでNeo入れてみようかと・・・ 某ファンクラブ会員向けDVDなのですが今年から担当がDTVに無知なものに変わったようで
23.976fpsで撮影→プルダウンで29.97fpsに→インターレース解除で二重化
という変な仕様になっています
5フレーム中2フレームづつ二重化で残像だらけの映像が現れる状態です
この残像が出てる連続したフレームの共通部分を抽出すればある程度まともな映像になるのではないかと考えていますが
うまいスクリプトがわかりません
どなたかお知恵を貸してくれませんか?
ソース抜粋
https://www.axfc.net/u/3917431 AvisynthNeoとAvisynthPlusCUDAは
なにが違うんでしょうか 日本語のあるパスだと、ScriptDir()の戻り値がうまくいかんのだが、なんかいい方法ない?
とりあえずバッファ不足っぽいので
function StrFromUtf8mod(string text){
len = StrLen(text)
return TrimRight(LeftStr(StrFromUtf8(text + FillStr(len * 3)), len))
}
scriptdir = StrFromUtf8mod(ScriptDirUtf8())
で逃げてはみたんだが >>479
ありがとう
今、Neoをインストールして確認した
radeonだけど乗り換えます 自ビルドしたNeoが使えないです
extern const AVSFunction Device_filters[] = {
{ "OnCPU", BUILTIN_FUNC_PREFIX, "c[num_prefetch]i", OnDevice::Create, (void*)DEV_TYPE_CPU },
{ "OnCUDA", BUILTIN_FUNC_PREFIX, "c[num_prefetch]i[device_index]i", OnDevice::Create, (void*)DEV_TYPE_CUDA },
{ "OnCPU", BUILTIN_FUNC_PREFIX, "n", OnDevice::Create, (void*)DEV_TYPE_CPU },
{ "OnCUDA", BUILTIN_FUNC_PREFIX, "n[device_index]i", OnDevice::Create, (void*)DEV_TYPE_CUDA },
{ 0 }
};
ここの "n" って文字がunknownだと怒られる >>481
すみません、AvsPmodの問題っぽいかもです AviSynthNeoはAviSynth+MTとは違うもの? >>484
改造版でエラー消えました!ありがたく使わせていただきます CPUでKFMDeint使おうとテストしているんだけど、内部で呼び出しているKFMのフィルタは
MT_MULTI_INSTANCE でいけるのかな?
MT_SERIALIZED の結果と比較しても、パッと見大丈夫そうではあったけど…
MT_NICE_FILTERではダメっぽかった 昔からの自作環境があるからAmatsukazeは使ってないけど、
中のスクリプトは参考になり、Neo、笑えるほど爆速で使えてます
VFRもやりたいけどどうもプレーヤー側が貧弱なのでCFR動画しか作ってないけど KTGMCを使ってx265で720pの動画を作るのに40fpsとか出るよ
neo凄すぎ 環境変数にセットした数値を読み込んで、その値をKNLMeansCLフィルタの"device_id"引数に
渡そうとしているのですが、環境変数の読み込みに使用しているGetSystemEnvフィルタが
値をString型で返してしまうので、Script errorになってしまいます。
Avisynth内蔵フィルタを調べてみたのですが、Stringをintに変換するフィルタが見つからず、
何かいい方法はありませんか? こっちも貼っておくか。
Internal functions - Avisynth wiki
http://avisynth.nl/index.php/Internal_functions >>492-493
すいません、そのページは読んでいたんですが見落としてました。
Value()でfloat型が得られたので、Int()に再度読み込ませて希望通りの結果になりました。
ありがとうございます。 AvisynthNeoはDGindexが動かないのでしょうか?
TSをLWLibavVideoSourceで読むと無事動くのですがDGindexだとエラーが出てしまいます >>495
もちろん *.d2v にして読ませてるよね?
たまに *.d2v 内に書かれているフルパスの位置が違ってたりして
読めなかったりする人がいる >>495
あと、Avisynth Plugin フォルダに DGDecode.dll を入れてなかったりとか
32bit版には32bit版のdll, 64は64のが必要だぞ >>496
パスを確認して読み直したら無事読めました
早とちりしてしまいました
ありがとうございました 逆テレシネをするのにKFMを使いたいんですが
どのように記述すれば良いのでしょうか
元のファイルはPVとか音楽の放送ものです
KFMDeint(mode=2)
こんな感じはダメかな
presetとかpassとか必要ないですか >>499
それで大丈夫だよ
ただCPUだと遅いから
LWLibavVideoSource("ソースパス").OnCPU(2)
KFMDeint(mode=2, cuda=true)
って感じでCUDAオンにすると速くなる
解析を2パスにしたい場合は、
KFMDeint(mode=2, cuda=true, pass=1)
で最後のフレームを呼び出した後、
KFMDeint(mode=2, cuda=true, pass=3)
でフレームを生成すると2パスになる
pass=1はどんな方法でも最後のフレームを呼び出せればOK
AvsPmodでいきなり最後のフレームを表示しようとすると
長時間固まるからあまりお勧めしないけど LWLibavVideoSource("ソースパス").OnCPU(2)
KFMDeint(mode=2, cuda=true)
をやってみたら無事動きました
詳しい説明ありがとうございました neo r2741 で
SetDeviceOpt(DEV_CUDA_PINNED_HOST)
を有効にすると
jpsdr/aWarpSharpMT v2.0.1 の aWarpSharp2 で access violation が出る
SetDeviceOptをコメントアウトすると問題ないんだけど、なんでだろ? >>503
ありがとう&なるほど
向こうの問題ですね
流石にasmの修正は素人には手に余る
速度を取るかaWarpSharpMT使うか…
まぁ、warpsharp使うケースは少ないから、そんときゃ速度あきらめるか おや?
エンコード結果で、途中で画像が停止するんで原因調べてたら
KFMかKTGMCかわからんけど
ログには
ERROR: [CUDA Error] 2: out of memory @366
が記録されるけど、エンコードは続いちゃうんだね >>500-501
KFMの2passのやり方がうまくいきません
AVSPModで最後のフレームを呼び出すって
どうやるんですか?
あと、解析結果ファイルやタイムコードみたいのは
出ないのですか?
できれば教えていただきたく >>505
それは後段フィルタ、もしくはavisynth呼び出し側の問題
CUDAメモリ確保に失敗したら、例外が出るはずで、
それを握りつぶして処理を継続させちゃう実装になってるとそうなる
amatsukazeで普通に使えばちゃんとエラーで止まる
まともな実装なら例外を握りつぶさないでちゃんとエラーで
停止するなりすると思うんだけど・・・
>>506
> AVSPModで最後のフレームを呼び出すってどうやるんですか?
シークバーを最後まで持っていく、もしくは、Run analysis passを最後まで実行する
シークバーでやると長時間GUIが固まるから、Run analysis passで進捗状況見ながらやるのがおすすめ
CLIだったらavs2pipemodとかで出力をnulに突っ込むようにして流せばいい
> 解析結果ファイルやタイムコードみたいのは出ないのですか?
解析結果はKFMDeintのfilepathで指定したファイルにバイナリで吐かれる
デフォルトファイル名は"cycle.dat" >>507
x264 r2901 + neo r2741 だから後続のフィルタかな、例外拾って無視してるの
まぁ、再生すればすぐわかる問題だし、気にしないことに
サンクス AviutlでAvisynthを使ってフレーム補完がしたいんですけど、MP4の動画を読み込むのにスクリプトにLSMASHVideoSourceを使ったらエラーが出て読み込めません。
DirectShowSourceでも同じくエラーが出ます。
aviの動画はAVIsourceで問題なく読み込めます。
Aviutlの入力プラグインの優先度でLSMASHを一番上にしてもダメでした。
LSMASHのAvisynthフォルダにあるdllをAvisynthのPluginsフォルダに入れる方法もLoadPluginを使う方法もエラーが出て読み込めませんでした。
LSMASHVideoSourceではScript error: there is no function named "LSMASHVideoSource"
DirectShowSourceではDirectShowSource:Could not open as video or audio
LoadPluginではLoadPlugin: unable to load "○○", Module not found. Install missing library?とそれぞれ出ます。
Avisynth2.6.0、L-SMASH_Works_r935_pluginsを使用してます。
PCのOSはWindows10 64bitです。
色々調べてみたんですが原因が分かりません、解決方法が分かる方いますか? >>513追加です。
LSMASHVideoSourceのスクリプトはLSMASHVideoSource("○○,mp4")
DirectShowSourceのスクリプトはDirectShowSource("○○.mp4")
LoadPluginを指定する方法のスクリプトは以下の様にしてみました。
LoadPlugin("〇〇")#〇の部分にLSMASHSource.dllのパス
file="○○.mp4" #〇の部分に動画のパス
LSMASHVideoSource(file)
AudioDub(LSMASHAudioSource(file)) AviUtilの、 l-smash worksの導入、avisynthの利用の設定を失敗している
ミスは自分で見つけること AviutlでAVSを読み込んでエラーって話だと思うけど
Avisynthはもちろん32bitだよね?
Aviutlは32bitなのにAvisynthのdllが64bitじゃ無理だからね。 >>513
L-SMASH_Works_r935_pluginsのAviSynthフォルダにある
Readme.txtを読んでVCのランタイムを入れる win10って標準だとvisual c++ 2013の ランタイム入ってないの? >>515さん >>516さん >>517さん >>518さん >>519さん
解決できました!初歩的な間違いをしてた様です。
自分のPCにインストールされてるランタイムはVisual C++ 2015(標準?)だったんですが、
ランタイムは最新のやつでいいと勘違いして2017をインストールしてました。
Readme.txtに書いてあるURLからVisual C++ 2013をインストールしたら問題なく読み込む事ができる様になりました。
皆さんありがとうございましたm(__)m pop氏のサーバーが見れなくなってるけど
何かあったのかな? rss履歴みるに
8月29日の午前3時から、サーバのメンテナンスだって書いてあった Its で24,30,60用の関数それぞれでKFMDeintを呼び出しているんだけど、
CUDA側のメモリ使い果たしてcache shrink してしまう
エンコードは進んでいるから無視する手もあるけど…
1050Ti の 4GB で足りてないんだけど、なんか上手い方法はないだろうか? >>524
KFMDeintに24p,30p,60pの3クリップを返すモード(mode=3)を追加した。
複数のクリップ返すからちょっと使い方が独特なので↓これ見て
https://github.com/nekopanda/AviSynthCUDAFilters/wiki/KFMDeint
あんまテストしてないから何か問題あった教えて >>525
多謝多謝
軽くテストしてみたけど、2.5GB以内で収まる感じでいけました
これからいろいろ試してみます 重複フレームを自動削除、フレームを解体して任意のFPSに
再構築できる? 1sec60fpsを解体して2sec30fpsで再構築とか 教えてチャソでスマソ。
24fpsのビデオの重複フレームをオートで検出して削除、
さらにfpsの概念を消去し、重複フレームを削除した後の、
fpsに拘束されていないフリーのフレームの集合体を新たに時間系列で
任意のfpsで再構築(re-packing)、ここまでAvisynthで出来るんじゃろか? >>532
よくわからんけど重複フレームを削除して可変フレームレートにしたいってこと? 同じ絵が続いても現代のエンコーダは効率よく圧縮してくれるのでやめたほうがいい
変態VFRは後で取り回しが非常にしづらい上に大して縮まない ■ このスレッドは過去ログ倉庫に格納されています