HOME

立体動画ファイルの編集 AVI編

元の記事は立体動画ファイルの編集 AVI編です。 不具合の指摘、質問、コメント等はそちらにお願いします(簡単な不具合しか私には直せないと 思いますが)。
2台のカメラで撮影した動画ファイルから平行法/交差法の動画ファイルを作成するプログラムを書いてみた。 今さらながらVideo for Windowsを使う。
Video for Windowsについて を参考にした。特に動画を圧縮するルーチンと、ストリームをコピーするルーチンはそこにある サンプルほぼそのまま。
動作条件は元の動画ファイルが8bppまたは16bppまたは24bppであること。
ではあるがFinePix40iのファイル(16bpp)を念頭に置いて書いたので他にもいろいろ 条件があるかも。Caplio GXのファイル(24bpp)を回転してみたら(mrotate)音声が出なくなった。 オーディオストリームがあることは認識しててコピーのルーチンも正常に終了するのだが。。

mstereo

2つの動画を90度回転しつつくっつける。オーディオストリームは左の動画(1番目の引数)のが コピーされます。
37l.avi、37r.aviがそれぞれ左、右の動画だとすると
  mstereo 037l.avi 037r.avi 037.avi
で037.aviというファイルが出来上がる(交差法のファイルを作る場合は左右の動画ファイルを 入れ替えればいい)。回転方向を反時計回りにする場合
  mstereo - 037l.avi 037r.avi 037.avi
とする。

mcomp

mstereoで作られたAVIファイルは動画が圧縮されていないので圧縮する。
  mcomp 037.avi 037c.avi
で037c.aviという圧縮された動画ができる。エンコーダーを選択するダイアログボックスが表示されるが、 ものによってはうまく変換できないこともある。 サンプルではMicrosoft MPEG-4 Video Codec V2を使っている。

動画の回転 AVI編

mrotate

mstereoの機能のうち動画を回転する部分だけ取り出したもの。
  mrotate test.avi test_.avi
でtest.aviが時計回りに90度回転されたtest_.aviが作られる。反時計回りに回転する場合は
  mrotate - test.avi test_.avi
とする。

その他

mmerge

2つの動画ファイルをくっつける。mrotate+mmerge=mstereoである。
  mmerge test1.avi test2.avi testm.avi

ファイルたち

サンプルファイル

037l.avi
037r.avi
037c.avi

実行ファイル(Borland C++ Compiler 5.5でコンパイル)

mstereo.exe
mcomp.exe
mrotate.exe
mmerge.exe

ソースファイル

mstereo.c
mcomp.c
mrotate.c
mmerge.c