OGM動画をAVIに変換する

MediaWizはOGMに対応してないので、再生するにはAVIに変換する必要がある。
その方法について調べてみた。

変換対象となるファイル
映像がMediaWizで対応しているコーデック(DivX,XviD等)で圧縮されており、音声がOgg Vorbisのファイルを対象とする。
VP3やWMV9等の未対応コーデックは映像の再エンコが必要なので、ここでは考慮しない。

音声はMP3に変換
一番の問題点は、OggVorbis音声がAVIで使えないということ。
VorbisACMで多重化しても、INVALID OGG STREAM になるので、ACMは使えない。
MP3かWAV(PCM)に変換する必要がある。
確実なのはMP3なので、MP3に変換する事にする。

以下に3通りの方法をまとめてみた。
これ以外にも方法はあるが、大まかな手順が分かれば、どれも同じようなものである。


変換方法 その1「VirtualDubModだけで変換する」

妖精現実 フェアリアル(
http://www.faireal.net/)に、OGM→AVI変換の手順が丁寧に解説されている。
VDMでのOGM→AVI変換 http://www.faireal.net/articles/8/14/#d31017

変換手順を理解するには最適なので、とりあえずはこの方法から試してみると良い。


変換方法 その2「GraphEditを使う」

「妖精現実 フェアリアル」に、GraphEditを使って、OGM->AVI にするやり方が載っている。
OGG/OGM動画の再編集、OGM→AVI変換
http://www.faireal.net/articles/6/18/#d21105
この方法ならば、OGMからVorbis音声を取り出し、MP3に再エンコして、AVIに書き出すまでを一度に行える。

しかし、作成されるファイルは、必ずAVI 2.0形式のファイルになってしまうようだ。
そのままだと、MediaWizで再生できない (ガタガタになる)。
AuiUtl や VirtualDubMod 等で再MUXすると、MediaWizで再生できるようになる。

必要なソフト
 GraphEdit 
http://www.digital-digest.com/dvd/downloads/graphedit.html
 AviUtl 
http://ruriruri.zone.ne.jp/aviutl/
良い点
 OGMからAVIに一発変換できる。(実際にはさらに再MUXが必要なので、一発ではないが)
悪い点
 DirectShow の知識がないと難しい。
 バッチ処理できないので、変換したいファイルがたくさんある時、変換するのが面倒。


変換方法 その3「複数のツールを組み合わせる」

オーソドックスにDemux、音声MP3化、再Muxの手順で行う。
GUIを使わないコマンドラインツールで変換できれば、変換するファイルが多数有ってもバッチ処理が可能になるので、コマンドラインツールを選んでみた。

例として、元のファイルが hoge.ogm という名前だったとして説明する。(斜体の部分がファイル名)

1)元ファイルから音声(OggVorbis)ストリームを取り出す ( .ogm -> .ogg)
・OGMDemuxer を使う
 コマンドラインから
  OGMDemuxer -n 1 -p hoge.ogm
 を入力すると
  hoge_1.ogg
 が出力される。オプションの意味は
  -n 1 No.1のストリーム(最初の音声ストリーム) を取り出す
  -p  進捗状態を表示する

2)その音声をwavに変換する。( .ogg -> .wav)
・oggdec を使う
 コマンドラインから
  oggdec hoge_1.ogg
 を入力すると
  oggdec hoge_1.wav
 が出力される。

3)wavをMP3に変換する。( .wav -> .mp3)
・LAME を使う
 コマンドラインから
  LAME -cbr hoge_1.wav
 を入力すると
  hoge_1.wav.mp3
 が出力される。オプションの意味は
  -cbr CBRのMP3を作成する。

4)元ファイルの映像と、MP3音声をMUXする。
・VirtualDubMod をコマンドラインで使う
 ジョブ定義ファイルを作って、VirtualDubModに読ませると、コマンドラインからバッチ処理ができる。
4-1)
 メモ帳などで以下の内容を書いて、remux.jobs という名前で保存する。
 ---------------------------------------------
 VirtualDub.Open( "hoge.ogm", 0, 0);
 VirtualDub.video.SetMode( 0 );
 VirtualDub.audio.SetSource( "hoge_1.wav.mp3" );
 VirtualDub.audio.SetMode( 0 );
 VirtualDub.SaveCompatibleAVI( "hoge.avi" );
 ---------------------------------------------
 簡単に説明すると
  Openで、映像ストリームが入っているファイルを開く。
  video.SetMode で、映像を Direct Stream Mode にする。(再圧縮しないモード)
  audio.SetSource で、音声ストリームが入っているファイルを指定する。
  audio.SetMode で、音声を Direct Stream Mode にする。(再圧縮しないモード)
  SaveCompatibleAVI で、AVI形式で保存する。
4-2)
 上記で作ったジョブ定義ファイルで、VirtualDubModを実行させる。
 コマンドラインから
  VirtualDubMod /sremux.jobs /x /r
 を入力すると
  hoge.avi
 が出力される。オプションの意味は
  /s ジョブ定義ファイルの指定
  /r ジョブ定義に従って処理する
  /x 処理が終わったらVirtualDubModを終了する
 ECHOや、VBスクリプトを使ってジョブ定義ファイルを自動作成すれば、バッチ処理が可能。

必要なソフト
 OGMDemuxer 
http://cyrius.bunkus.org/
 oggdec 
http://www.vorbis.com/download_win.psp  ここの vorbis-tools に入っている
 LAME 
http://mitiok.cjb.net/
 VirtualDubMod 
http://sourceforge.net/projects/virtualdubmod
良い点
 コマンドライン版なので、バッチファイルを作れば一括変換できる。
悪い点
 demux、wav化、mp3化、再muxの手順が面倒。
 多くのWindowsユーザは、コマンドラインの使い方を知らない。

上記の手順で変換するバッチファイルを用意してみた。(Windows2000/XP専用)
パス名などは自分の環境に合わせて書き換えて使っていただきたい。
OGM2AVI.LZH

※VirtualDubModをジョブ定義ファイルで動作させる場合、ファイル名はUTF-8で記述しないと動作しないようである。
 注意していただきたい。


戻る