6月
22
ソースやエンコード後のサイズが2GBを超えていると、圧縮率まわりの表示がおかしくなるので修正しました。
で、本題。vctest を使っていろんなソースでいろんなコーデックを計測してましたが、MSU Lossless 0.6.0 で稀に化ける症状が見られました。ググっても化けたって話は出てこないので、よっぽど稀な現象なのかもしれません。ググり方が悪いだけかもしれませんが。
こんなソース(アイマスのOP画面を320×180に縮小したものの一部)を、コーデックの設定を
Quality: Absolutely lossless
Mode: Maximize speed
Format: Always suggest RGB for output も Compressing interlaced movie もチェック「しない」
にしてエンコードさせます。CPU は Q6600。
C:\>vctest D:\エンコード比較\横幅テスト\320.avi -c dwLength = 20 dwScale=166833 dwRate=10000000 Lossless Checking is enabled YUY2 statesize=88 msud 0/ 20 4.077735ms 4.255507ms 109bytes ( 0.1%) KEY (中略) 18/ 20 13.672683ms 6.129988ms 16682bytes (14.5%) KEY 19/ 20 7.796078ms 8.452022ms 16873bytes (14.6%) NOT LOSSLESS!!! - aborting
vctest に問題でもあるのかと思って AviUtl でエンコードしてみましたが、やはり化けて以下のようになります。
オリジナル
エンコード後
上の方が化けてます。途中で RGB など他の形式に変換してしまう編集ソフトを経由した場合は、このソースでは化けないかもしれませんが、他のソースで化けるかもしれません。なお、手元の別のマシン(Pen4 630)でも同じなので、CPU アーキテクチャに起因する問題でもなさそうです。
MSU Lossless は「かなり遅い代わりに高圧縮」な数少ない?可逆コーデックなのですが、稀とはいえ化けるとなると怖くて使えませんねぇ…残念です。
縦の解像度が16の倍数でないってのが怪しくないですか。そういう仕様であるとかのドキュメントがあるのかどうか調べてませんが。手元で軽くいくつかのソースで試したところ320×176では解消されました。
むむっ、確かに<16の倍数
と思ってAviUtlでトリミングして縦のサイズを変更しつつテストしようと思ったら、どんなサイズにしてもエンコードエラーになって「ビデオ圧縮に失敗しました。画像サイズやフレームレートを適正に設定しないと使用できないコーデックの可能性があります。」というメッセージが。夕方にはエンコードできたのに何が起きたんだ…(T_T
あ、ところで MSU Lossless のページ http://www.compression.ru/video/ls-codec/index_en.html には解像度の制限に関する記述はありませんね。インストールしてもドキュメントがインストールされるわけでもないようですし、制限はどこにも書いていないのでは。
制限を書いていないことに関して言えば私も大きなことは言えませんが…