更新しました。
ver.1.1.0になります。
追記:バグ1件見つけたので1.1.1を上げました。
バイナリ
変更/追加
- avisynth+の追加色空間のサポート
- y4mbitsオプションの削除
- filtersオプションの追加
昨晩、avisynth+にあらたに10/12/14bitおよびPlanarRGBが追加されました。
これを見てもらえば、だいたいどんな感じになったのかなんとなくわかってもらえるのではないかと思います。
いや、もう、なんというか、やりすぎじゃありませんかね?
14bitとかYUV420でアルファに対応とか、基地外沙汰というかFFmpeg脳というか、まじで勘弁してほしいんですが。
Ver1.0.0からなのですがAutoVfr.exeへのログを作成にて
返信削除バッチで
avs2pipemod.exe -benchmark "log_temp1.avs" | avs2pipemod.exe -benchmark "log_temp2.avs" | avs2pipemod.exe -benchmark "log_temp3.avs" ・・・・
と連続で実行させるのですが、その際に
”output various data from avs to stdout”とエラーで停止するようになりました。
ただavs2pipemod.exe -benchmark "log_temp1.avs"単体では通ります。
なので不具合ではないかもしれないのですが、
解決のためのヒント等ありましたらよろしくお願いします。
とりあえず以下のようなbatを走らせてみましたが、問題は起こりませんでした。
削除cd /d %~dp0
.\avs2pipemod.exe -benchmark .\test.avs
.\avs2pipemod.exe -benchmark .\test.avs
.\avs2pipemod.exe -benchmark .\test.avs
.\avs2pipemod.exe -benchmark .\test.avs
.\avs2pipemod.exe -benchmark .\test.avs
pause
1.0.0以降は、自分がC++に慣れてきたこと、avisynth/avisynth+のC APIは色々面倒なこと、avisynth+の更新に柔軟に対応したいなどの点から、ほぼ丸ごとC++で書き直し、コンパイラもmingw-w64からMSVCに変更したため、中身はまったくの別物になっています。
よって従来と全く同じ使い方ができないということもあるかもしれませんし、あるいは前のバージョンだとうまくいっていたこと自体がバグだったのかもしれません。
とりあえず手元で再現しないことには、直すことも調べることも出来ませんので、情報が足りないとしか回答できません。
あるいはAutoVFR(これもよく知らないんですが)用に使うときは0.4.2を使うとかでもいいのかもしれませんけど。
Chikuzenさんのコメントを受けてバッチを見直したところ
返信削除バッチからavs2pipemod64.exeを呼び出していました。
そのうえで確認したところバッチから
avs2pipemod64.exe -benchmark "log_temp1.avs"
単体でも”output various data from avs to stdout”でエラーで停止することを確認しました。
ということで1.0.0以降ではavs2pipemod64.exeからavs2pipemod.exeに変更することで問題を解決することができました。
ご回答ありがとうございました。
とりあえず32bitであれば問題はないようですね。
削除64bitのほうで問題が起こるのはなんででしょうかね?
参考までに64bitのほうのavisynth.dllのバージョン及びプラグインとかを教えてもらえると嬉しいのですが。
報告の手際が悪くて申し訳ないです。
返信削除環境ですがWindows10 pro 64bit(rev1607 rev1511から症状は確認していました)
avisynth.dll r2043
(Groucho2004氏のr2085インストーラからいれてからr2043に戻しています。
r2082~r2151だとx86とx64にてScriptClipがaccess violationが起こしているようなので
Code:
c.ScriptClip("SubTitle(String(current_frame), size=90)")
を追加するだけで発生します。)
映像入力(.ts):LWLibavVideoSource (L-SMASH-Works-r901 r903 plugins64+フォルダ)
音声入力(.aac):AACFaw(2012.06.19 plugins64フォルダ)
Auto_Vfr.avs:TIVTC(IsCombedTIVTC)(1.0.5 http://avisynth.nl/index.php/TIVTCから plugins64フォルダ)
(パラメータによっては追加で)MaskTools2(mt_motion)(2.0b1 plugins64+フォルダ)
関係するかわかりませんが、.avsファイルの文字コードはShift-JISです。
x86も同様の環境です。疑わしいのはTIVTCあたりでしょうか?
ふむむむ
削除r2043だとx86では発生しないエラーがr2085だと発生するのですか?
もしそうであれば、なるべく短く、できるだけ必要なプラグインも少ないスクリプトがあれば、ultim氏に直させることができるんですが難しいでしょうか?
L-SMASH-Worksはmukenさんが色々忙しいのとavisynth版はビルドが難しいことやその他諸々であまり期待できる状況ではないですし、TIVTCも64bitのほうはソースコードをどう弄ったのかすらよくわからないので怪しいといえば怪しい。
あと自分はテレビはほとんど見ないのでTSエンコ事情とかもさっぱりで、そこら辺のツール類はまったく知らないのですね。
だれか詳しい人がDoom9あたりで報告してくれるとありがたいんですが。
code:
削除SetMemoryMax(2048)
LWLibavVideoSource("AAA.ts")
ScriptClip("SubTitle(String(current_frame), size=90)")
Prefetch(4)
return last
最低限でこれですがいかがでしょうか?
必要なのは映像入力のL-SMASH-Worksのみです。
r2161において
AvsPmod&AvsPmod64にてAccess Violationが出ることを確認しました。
ScriptClipをコメントアウトすれば不具合解消します。
r2043ではAvsPmod&AvsPmod64にて問題ないことも確認しています。
ああ、なるほど。
削除次のスクリプトで確認できました。
SetLogParams("stderr", LOG_INFO)
ColorBarsHD()
ScriptClip("SubTitle(String(current_frame))")
prefetch(4)
ベンチマーク走らせると真っ赤なエラーログでコマンドプロンプトがえらいことになってます。
再現性100%なので、これならバッチリですね。
ありがとうございました。
あ、あとScriptClipですが、現状でもSetFilterMTMode("DEFAULT_MT_MODE", 3)をスクリプトにいれておけば、クラッシュは回避できます。
削除このコメントは投稿者によって削除されました。
返信削除クラッシュ回避の情報ありがとうございます。
返信削除横からですがありがとうございます
返信削除Sresotre関数をMTで動かすとエラー文が表示され困ってたんですが、同様の対処法でエラー文なしで動くようになりました
ありがとうございました
avs2pipemod64.exeでのAuto_Vfrの件ですが、
返信削除Auto_Vfr.avs内の
IsCombedTIVTCからIsCombed(ChikuzenさんのCombMask)に変更したところ
1.1.1のavs2pipemod64.exeで正常に動作することを確認しました。
どうもお騒がせしました。
上のほうのAutoVFRのエラーと同じだと思うんですが64bit版avs2pipemodが「output various data from avs to stdoutは動作を停止しました」というエラーが出て止まります
返信削除色々と調べたところ↓のようなテキストを同時に吐き出す行でつまづいてるようです(消すと完走する)
TFM(output="tfm.txt")
---
TDecimate(mode=4, output="tdec.txt")
---
its(def="F:\temp\AutoVfr.def", fps=-1, output="F:\temp\encode_time.txt")
---
its(def="F:\temp\AutoVfr.def", fps=-1, output="F:\temp\encode_time.tmc")
テストしたavisynth+バージョン r2172、r2290、r2347
テストしたavs2pipemodバージョン 1.1.1
テストしたMpeg2dec バージョン plus0.1.1、plus0.0.0、Mpeg2dec x64
補足1:私の場合は-Benchmark モードでも止まります
補足2:AvsPmodでのレビューは可能です
よろしくお願いします
前回の報告ではテキストを吐き出す行でと書きましたが"yadifmod2(mode=0).TDecimate()もダメでした
返信削除素人の間違った推論を書いてすいませんでした
そして補足に追加です
Avisynth+を使ってますがMTは有効にしていません
今後UTF-8対応の余地ありますか?
返信削除%avs2pipemod64% -audio "AutoVFR01.avs" > "G:\movie\_AutoVFR_temp\%~n1\Audio.wav"
返信削除%qaac% --cvbr 203 "G:\movie\_AutoVFR_temp\%~n1\Audio.wav" -o "G:\movie\_AutoVFR_temp\%~n1\Audio_m.m4a
上の記述があるbatに*.avsをD6Dしてエンコードしようとすると
G:\movie\_AutoVFR_temp\2024-09-01_18-56-40[L-SMASHw]>"C:\Program Files2\DTV_cli\avs2pipemod\avs2pipemod64.exe" -extwav "AutoVFR01.avs" 1>"G:\movie\_AutoVFR_temp\2024-09-01_18-56-40[L-SMASHw]\Audio.wav"
avs2pipemod[error]: System exception - Access Violation
(AutoVFR01.avs, line 59)
となって音声エンコードできません
エラー文読むと32bit版のavs2pipemodが動いてるみたいだけど理由が不明
:SET ”avs2pipemod”
とSETを無効にしてもダメ
-audioや-extwavにしても変わらず
59行目は↓で、頭#で無効にしたらwav出力されるみたい
ColorYUV(levels="TV->PC", showyuv=false, analyze=false, autowhite=false, autogain=false)#色空間の変更
なお32bit版はset's(名前違うかもしれないけどご容赦を)のavisynth MTで64bit版はplusという変則なれど、32bit版のavs2pipemodが動く理由が分かりません
なにかわかることがあればアドバイスよろしくお願いします
一つ上のColorYUVについて書いた人です
返信削除なにかのバグかと思い報告したのですが、改めて見ると"TV->PC"の変換に対応しているのがplus版のColorYUVだけというオチでした
対応表の[avs+]ロゴを見落としてましたすいません