OGM動画をAVIに変換する


http://www.geocities.co.jp/SiliconValley-SanJose/5108/ogm2avi.html

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で記述しないと動作しないようである。
 注意していただきたい。









VDMでのOGM→AVI変換
http://www.faireal.net/articles/8/14/#d31017
OGM形式の動画を、音声部分がMP3のAVI形式に変換。

まず音声部分がOgg Vorbisである典型例を詳しく説明し、次にAC3とAACの場合とSRT字幕がある場合を簡単に説明します。

GraphEdit を使ったより高度な方法については、別記事「OGG/OGM動画の再編集、OGM→AVI変換」をごらんください。

VDMにロード
変換元のOGMファイルを、VirtualDubModに読み込みます。このツールについてご存じないかたは、 DVD・TV→AVI・OGM・MKV入門のステップ4を見てください。ノーマル版のVirtualDubではなく、OGMを処理できるMod版を使います。

音声をWAVで保存
Streams | Stream List を開き、使用したい音声トラックの上で右クリック Full processing mode を選択します。(もし音声がMP3であれば、何もしないでDirect stream copyでAVI化できますが、ここでは音声がOgg Vorbisと仮定しています。)

もう一度右クリック、Compression を選び、 が選択されていることを確認します。

Select Audio CompressionダイアログをOKで閉じ、 Save Wavボタンをクリックして、名前を付けてWAV形式で保存します。

音声の準備
保存したWAVファイルに、必要ならノーマライズやノイズ除去の加工を行うこともできます。また外部ツールでMP3に変換することもできます。

Remux
同じSteam Listで、既にWAV保存したVorbis音声トラックを選択して、Disableをクリックします。

選択されたトラックに斜線が入り、そのトラックは無視されます。

Addボタンをクリックして、さきほど保存した音声成分を読み込みます。

もし外部ツールでMP3化してある場合には、そのまま映像と合体させて終了です。

そうでなくて抜き出したWAVのまま読み込んだときは、そのWAVトラックの上で右クリックして、そのトラックをFull processing modeにします。もう一度右クリック、Compression を選び、MPEG Layer-3 を選択します(Fraunhofer [FhG] IIS 、またはLame ACM CBR)。 Vorbis→MP3は劣化変換で、どんなにしても音質が多少犠牲になります。ビットレートが元と同じくらいでも、音質は劣化します。少しでもマシにしたければ、元より高めに(96Kbps Vorbis→128Kbps MP3、160Kbps Vorbis→192Kbps MP3など)。ただ、どんなに高くしても、変換元よりは向上しようがありません。

Stream Listを閉じ、メインのメニューで Video を Direct stream copy にします。

[F7] を押して、AVI形式で保存します。

結果を確認して、問題がなければ、中間で使ったWAVファイルは削除してかまいません。

補足
Compressionの設定ダイアログでMP3が56Kbpsまでしか選択できない場合
「MPEG2(DVD・TV)→AVIでMP3を簡単に使う方法」参照。