非常に単純な問題のように見える問題がありますが、予想よりもはるかに難しいことが証明されています。問題は次のとおりです。
番号が付けられたフレームで構成されるかなり大きなイメージ シーケンスがあります (Maya からの出力です)。画像は現在 Targa (.tga) 形式ですが、必要に応じて PNG やその他の任意の形式に変換できます。重要なことは、アルファチャンネルがあることです。
私がやりたいことは、プログラムでそれらをビデオ クリップに変換することです。形式は特に問題ではありませんが、ロスレスでアルファ チャネルが必要です。Quicktime コンテナ内の圧縮されていないビデオは、おそらく理想的です。
私の最初の考えは ffmpeg でしたが、ほとんどの 1 日を無駄にした後では、アルファ チャネルがまったくサポートされていないようです。何かが足りないか、基礎となるlibavcodecがそれをしていないだけです。
それで、ここで正しい方法は何ですか?ffmpeg のようなコマンド ライン ツールは便利ですが、Windows で実行され、スクリプトから呼び出すことができるソリューションであれば問題ありません。
注: ビデオにアルファ シャネルを使用することは、実際にはそれほど珍しいことではなく、別のビデオ クリップや静止画像の上に合成する場合に非常に便利です。私の知る限り、非圧縮ビデオ、Quicktime Animation コーデック、および Sorenson Video 3 コーデックはすべて透明性をサポートしており、H.264 も同様にサポートしていると聞いています。私たちが実際に話しているのは 32 ビットの色深度だけであり、これはかなり広くサポートされています。Quicktime .mov ファイルと Windows の .avi ファイルの両方で処理できますが、おそらくそれ以上のファイルも処理できます。
Quicktime Pro は、イメージ シーケンスを 32 ビットの .mov ファイルに変換できます。エクスポートを押し、色深度を「Millions of Colors+」に変更し、アニメーション コーデックを選択し、品質を 100 まで上げると、アルファ シャネルを使用して可逆圧縮されたビデオが作成され、コーデック以降のほぼすべての場所で再生されます。はバージョン 1.0 から Quicktime に含まれています。問題は、Quicktime Pro にコマンドライン インターフェイスがまったくないことです (少なくとも Windows では)。ffmpeg は、Quicktime アニメーション コーデック (qtrle と呼ばれる) を使用したエンコードをサポートしていますが、24 ビットのビット深度しかサポートしていません。
問題は、アルファ チャネルをサポートするビデオ形式を見つけることではありません。Quicktime アニメーションが理想的ですが、圧縮されていないビデオでも動作するはずです。問題は、それをサポートするツールを見つけることです。