アスペクト比(縦横比)の必要性 †
ビデオキャプチャなどで作成したMPEG2やDVのソースファイルをエンコードする場合、たいていソース画像は720x480等の非方形画素になっています。これに対してAVIコンテナでは正方形の画素しか扱うことが出来ません。
そこで、ソース画像をMPEG4等にエンコードする場合はリサイズが必要になってしまいます。
リサイズは引き伸ばせばサイズが大きくなり、縮めれば解像度が犠牲になります。
再生時にリサイズをすることが出来れば無駄がありません。
アスペクト比を設定できればメリットがあるのですが、AVIコンテナはアスペクト比保持ができない為、AVI用に作られたコーデックもアスペクト比保持が出来ない場合が多いのです。
MKVのアスペクト比対応 †
DirectShow対応プレイヤーでアスペクト比保持で再生する為には、コンテナとコーデックの両方の対応が必要です。
MPEG2やDVなどはコンテナ及びコーデックともにアスペクト比の保持が可能です。
その為、非方形画素になる720x480でアスペクト比4:3(スクイーズだと16:9)なども一般的です。
これに対してAVIコンテナはアスペクト比の保持が出来ません。
この為、AVIを前提に作られたコーデックもアスペクト比保持に対応していない場合が多いです。
MKVコンテナはアスペクト比を保持できますが、アスペクト比を保持できる(AVI用に作られた)コーデックは限られています。
確認できている範囲ではffdshow("Overlay"オプションを有効にすること)とXviDのデコーダは対応しています。
アスペクト比に対応したデコーダがないとDirectShow対応プレイヤーで正常なアスペクト比で再生できません。
ただし、BSPlayerやZoomPlayerなどの一部のMKV対応プレイヤーでは、コンテナの情報を読み取ってコーデックに関係なく正しいアスペクト比で再生できるプレイヤーも存在します。
その他コンテナ †
- WMV(asf)
コンテナはアスペクト比対応、コーデックもWMV9など固定なのでアスペクト比未対応コーデックは使えない。
ただしプレイヤーによっては正常に再生できないことがある。(Windows Media Playerでは問題ありません)
アスペクト比の指定方法としては、MKVが再生画面のサイズを指定するのに対しWMVでは画素のアスペクト比を指定する。
再生画面サイズのアスペクト比を決めたい場合はちょっと計算が面倒。
- AVI
AVI2.0(OpenDML)には一応アスペクト比を設定することが出来るらしい。
ただし、試した範囲ではDirectShowのAvi Muxフィルタではアスペクト比保持のAVIは作れない。
Avi Splitterもアスペクト比保持できるVideoInfoHeader2形式でデータを出力しない。
DV-Type2は非方形ピクセルでAVIコンテナだが、コーデックIDでアスペクト比を決め打ちしているだけ。
というわけでDirectShowフィルタがアスペクト比に対応していないので使用不可能ということなのでしょう。(たぶん)