H265 のご時世なのに、端末やら何やらの都合で x264 にしがみついてるわけですが、昨秋に入ったコミット 7ab4c928 で、 x264 がいろいろエラーを出すようになったのでメモ。
commit 7ab4c928ef4511ea5753a36a57c3506d9fd5086b Author: Henrik Gramner <henrik@gramner.com> Date: Sat Sep 12 19:24:00 2020 +0200 Add support for long filenames on Windows 10
何があったかというと、manifest ファイルが追加されてその中で activeCodePage UTF-8 という指定が付いたので、x264 プロセスのデフォルト文字コードが UTF-8 になったというそういうことです。
正道の対応策は「x264 が読むファイルは全てUTF-8にする」です。
直前のコミット d198931a63 でも「GPAC が UTF-8 サポートしてるから~」とかあるので UTF-8 統一が方針に則った方向と思います。
この変更で出るようになったエラーがこんなのです↓ (現行の master fa264466 のビルドで SJIS なファイルを読んだ場合のエラー)
中身にSJIS(非ASCII)を含む avs ファイルを入力にした場合。例えば日本語パスから Import した場合のエラーメッセージ。
avs [error]: Import: couldn't open "文字化け化け" (Enc.avs, line 11) x264 [error]: could not open input file `Enc.avs'
avs の中で (DGIndex で Demux した) d2v を読んでいて、d2v の中に日本語パスがあった場合のエラーメッセージ。
avs [error]: Avisynth open failure:MPEG2Source: Could not open one of the input files. (Enc.trim.avs, line 4) (Enc.avs, line 13) x264 [error]: could not open input file `Enc.avs'
対策としては以下のどれかで、上から順におすすめです(上で書いたとおりUTF-8化路線なので)。
- x264 が読むファイルは全て UTF-8 にする。
- バッチの途中とかでファイルの文字コード変換かけるようにする。など。
- x264 が読むファイルをASCIIに統一する。
- 上の亜種。日本語パスなど使わず全てASCIIで通せば自動的に UTF-8 対応に。
- 7ab4c928 を含まないビルドを作る。
エンコードチェーン見直さないと。。