※2024/11/23 21:10追記[Amatsukaze 改造版 0.9.8.1]- MPEG2/H.264に対する挙動が変わってしまっていたのを修正。
[Amatsukaze 改造版 0.9.8.0]- 4Kに対応。 Win11 + EDCB + dantto4k beta16, beta22のtsファイルを入力ファイルとして検証。
4K HEVC 10bitなので圧倒的に重くて、需要があるのかかなり怪しいけど、とりあえず動くようになった。(エンコードだけじゃなくて、ロゴ解析/CM解析も重い)
なお、8Kは受信環境がないのですみませんが検証しません(動くかもしれないし、動かないかもしれないけれど、原則こちらでは対応できません)。
- HEVCのhwデコード設定欄を追加。HEVCのhwデコードもできるようにしたけど、速いかどうかは環境次第といった感じで、高速なCPUの場合にはCPUのほうが速いこともありそう。
なお、MPEG2/H.264のhwデコード状況はこれまでと変わっていません。
- OUT_PATH環境変数がピリオド以後がかけてしまうのを修正。- 同梱の実行ファイルを更新。 - x265_4.1+54_x64.exe
- SvtAv1EncApp_2.3.0-58_x64
Amatsukaze ダウンロード>>
いつも大変便利に使わせていただいております。今回の4K対応も、手元には環境はまだありませんが、興味を惹く内容でした。ありがとうございます。
さて、0.9.7.10から0.9.8.1にバージョンを上げ、テストで0.9.7.1で問題なくエンコードできたファイルを試してみたのですが、以下のエラーが出てエンコードできません。
Avisynthフィルタでエラーが発生: [SharpenFilter]: source filter returns unaligned frame
別の録画データは問題ないこともあるので、理由ははっきりしませんが、0.9.7.10に戻すと、エラーを吐かずにエンコードできます。
この情報だけで申し訳ないのですが、思い当たる点がありましたら、どうかよろしくお願いいたします。
正直わたしも思い当たることがありません(また手元では0.9.8.1でもこのエラーが出てはいないです)。
確認するとGPUフィルタでのメモリ確保関連のエラーなのですが、これを行っているのはAviSynth.dllのはずで、0.9.7.10→0.9.8.1ではAviSynth.dllも含めてGPUフィルタは更新していないです。なので、どうして0.9.8.1で出るようになったのかがわからない状況です。
ご面倒をお掛けしております。
もう一方のPCで0.9.8.1で同じTSをエンコしてみたところ、エラーなしで通りました。どうやら、今までのバージョンアップの積み重ねで、不要なファイルが残ってしまっているのが原因のような気がしています。
一度、新しいフォルダに一から入れて試してみます。お手数をお掛けしました。また何かわかりましたら、ご報告します。
ご面倒をお掛けしております。
もう一方のPCで0.9.8.1で同じTSをエンコしてみたところ、エラーなしで通りました。どうやら、今までのバージョンアップの積み重ねで、不要なファイルが残ってしまっているのが原因のような気がしています。
一度、新しいフォルダに一から入れて試してみます。お手数をお掛けしました。また何かわかりましたら、ご報告します。
Amatsukazeを便利に使わせてもらっています。
私だけのトラブルのようなので、相談すべきか迷ったのですが、
1日に1度位の頻度で、QueueThreadがエラー終了してしまうという謎現象が起きてしまいます。録画終了時にキューに追加するバッチを実行させているのですが、
そのタイミングで、こんなエラーが記録されていました。(改造版 0.9.8.1ですが、他も試しています。)
2024-12-21 00:45:08,644 クライアント(WS1:2446)と接続
2024-12-21 00:45:08,698 QueueThreadがエラー終了しました例外: オブジェクト参照がオブジェクト インスタンスに設定されていません。
2024-12-21 00:45:08,950 場所 Amatsukaze.Server.ServerSupport.ParseProfileName(String name, Boolean& autoSelect)
場所 Amatsukaze.Server.EncodeServer.GetProfile(List`1 tags, String fileName, Int32 width, Int32 height, List`1 genre, Int32 serviceId, String profileName)
場所 Amatsukaze.Server.EncodeServer.GetProfile(QueueItem item, String profileName)
場所 Amatsukaze.Server.QueueManager.UpdateProfileItem(QueueItem item, List`1 waits)
場所 Amatsukaze.Server.QueueManager.<AddQueue>d__27.MoveNext()
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
場所 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
場所 Amatsukaze.Server.EncodeServer.<QueueThread>d__162.MoveNext()
2024-12-21 00:45:38,695 クライアント(WS1:2446)との接続が切れました
2024-12-21 00:45:40,729 クライアント(WS1:2449)と接続
2024-12-21 00:46:10,748 クライアント(WS1:2449)との接続が切れました
いただいたログを見ると、はっきりとはわかりませんが、可能性としてはプロファイル名が適切に設定されていない or なんらかの理由で適切に取得できていないように見えます。
(EncodeServer.GetProfile → ServerSupport.ParseProfileName と呼ばれてエラー終了している、例外が「 オブジェクト参照がオブジェクト インスタンスに設定されていません。」なので、プロファイル名がnull?)
質問なのですが「録画終了時にキューに追加するバッチ」ではAmatsukazeAddTaskへのコマンドはどんな感じで指定されていますでしょうか。また変数等が使用されていたら、そのときどのように展開されているかもわかりますでしょうか? それがわかると再現につながるかもしれません。