ビデオCD作成〜VCDImager


はじめに

2001.11.14
 ビデオCD(以下VCD)を焼く機能は多くのCD-R焼きソフトにある。一般にCD-R焼きソフトのVCD作成機能は弱く、簡単に連続再生できるだけだったりすることが多い。なのにトラック送り・戻しができることからVCD2.0のPBC(プレイバックコントロール)対応とか言っていたりする。NEROでは定型ながらもメニューを作ることができ、よくは知らないがEasyCD Createrではちゃんとしたメニュー形式のものが作れるらしい。

 ここではVCDImagerを使ってCDイメージファイルを作って焼くことにする。VCDImager自体はコマンドプロンプトツールになっていて、MPEGファイルやXMLファイルからCDイメージを作り出せるもの。このようなコマンドプロンプトツールにありがちなことに、これにもVCD EASYというGUIツールが存在する。VCDImager自体は細かい指定が可能で、おそらくどのようなVCDも作れるような代物なのだが、VCD EASYは単純な連続再生のものしか作れない。がトラック1にISO9660ファイルを仕込めたり、XMLファイルでPBCをいじった後でもCDイメージのBINファイルを出力させることができたり、VCDからBINやMPEGを取り出せる他にもVCDの構造を読み取ってXMLを作り出せたりする。ISO9660部分にVCDプレイヤーを入れることでWindowsの自動再生を使ってVCD再生をさせてPBCを使った操作ができるようになるし、VCDImagerではイメージのBINとCUEファイルを出力するので、DaemonToolsでそのまま再生することも可能。いちいち焼く必要がないので確認が楽。更にはVCD EASYとCDRDAOがリンクしていて、CUE+BINをCD-R/RWに焼くことまで可能である。


VCDEASYで単純に作る

 (S)VCDでVcd2.0、xml Fileのディレクトリ指定、Ordered MPEG1...にMPEGファイルをドロップする。OptionsでPBCにチェックを入れる。Advanced ModeにチェックしてISO FilesでWINの下とAUTORUN.INFをドロップ。GO。BINとCUEができる。これを焼けばビデオCDになる。が、なぜか最後のトラックの再生が不能。どうもVCDImagerのバグのように思える。取りあえず最後に不要なトラックを挿入しておき、最後のトラックは再生しないようにすることで対処。(このダミートラックは4秒以上の長さが必要だったりする。)


PCでのプレイヤー

 その辺のDVDプレイヤーソフトで再生できればいいが、VCD2.0のPBCが使えないようなDVDプレイヤーもある。世間のVCDではWINディレクトリの下にVPPLAY.EXEとかVCDVIEW.EXEとかが入っていて、これによってVCD再生を行うようになっていたりすることがよくある。だが、VPPLAY.EXEを入れて適当なMPEGとともに焼いてもオリジナルと違うことをチェックされて実行できない。VCDVIEWの方は入れてしまえば使える。VPPLAY.EXEの方は何とかして動かせるようにしちゃえば使えるが、そこまでして使うべきかは?である。インデックスが使えたり最初から全画面で起動できたりするのだが。(私はシークバーの使えるものが欲しい)

XMLをさわる

 VCD EASYでXMLのみを作るチェックを入れてGOを押すと、XMLファイルのみができる。このファイルは、VCDの構造を記述したもので、VCDImagerはこれを元にBINイメージを作っている。これはメモ帳などで編集可能で、元データのありかや、ISO9660ファイルのディレクトリとファイル名、CDIディレクトリの内容、PBCの指定などが入っている。このPBCの部分を書き換えることで、メニュー付きのものが作れたりもする。まあXMLを直で書き換えるのはなかなかつらいものがあるのだが...以下勝手に、止め絵状態で番号やカーソルで選択できる画面を「メニュー」、MPEGファイル再生中の場面を「動画画面」と呼ぶことにする。

 ここで簡単にXMLのタグの説明。詳細はVCDImagerのMANUAL.TXTに書かれているのだが、XMLの文書型定義方法(これはDTDなのか?)を知らないと実際にどう書くべきかがさっぱりわからないと思う。

<FILESYSTEM>コンテナ
<FOLDER>コンテナ/エレメント
  ISO9660ファイルに関して書かれる。

<SEGMENT-ITEMS>コンテナ
  PBCで使われる、止め絵のありかに関して書かれる。これはメニューのバックに使われる。実際にはSEGMENTフォルダの中にある〜.DATになる。ちなみにこれはMPEGAVフォルダの〜.DATと同じくMPEGファイルもどきになっていて、1フレームしかない。

<SEQUENCE-ITEMS>コンテナ
  MPEGファイルに関して書かれる。途中にINDEXを打ってそれをプレイリストなどに利用することも可能。

<PBC>コンテナ
  プレイバックコントロールに関して書かれる。
 <SELECTION>エレメント
  メニューに関して書かれる。バックにどのSEGMENTを出し、どこをクリックしたらどこのSELECTIONあるいはPLAYLISTに飛ぶか、NEXT,PREV,RETURNを押したときにはどこに飛ぶかを記述する。
 <PLAYLIST>エレメント
  動画画面に関して書かれる。再生するSEQUENCEの他、<SELECTION>と同様にNEXT,PREV,RETURN時にどうするかも記述する。

  たとえば、先の例で最後のトラックにシークしないようにするには、XMLを編集して、最後のファイルのファイル名(たとえばdummy.mpg)のある<SEQUENCE-ITEMS>を探し、そのID="〜"が使われている<PLAYLIST>を見つけ、PLAYLISTのID="〜"を使っているところ(PREVとNEXTとSELECT)を適当に書き換えればよい。

メニューに関して

 ここからが本題。ここでは再生すると1階層目のメニューを出し、選択すると2階層目のメニューを出し、選択するとMPEGファイルの再生を行うものを作ることにする。

1.まずメニューの絵は352*240で適当に用意し、1フレームのMPEG1ファイルとして作成する。ここではtitle-top.mpgとtitle-01.mpg...という名前にしておく。
2.この絵を256*256に縮小し、クリックされる範囲をドット位置で求める。全メニュー画面の全ボタンで決定する。選択して次へ進むボタンと共に、「戻る」や「ALL」が用意されていたりすることもよくある。
3.VCD EASYで再生すべきMPEGファイルを入れてXMLファイルを作る。バグ回避のdummy.mpgも最後に入れておく。必要ならばAUTORUN.INFとWINディレクトリも入れる。
4.ここでXMLファイルを編集する。
 (1)SEGMENT-ITEMS
 メニュー用のMPEGファイルを登録する。例えば次のようになる。参照
 (2)PBC
 全て書き換える。元になるテンプレートはこれを参照。テンプレート
 このテンプレートでは、SEGMENT(メニュー画面の映像)には"TITLEx"、SEQUENCE(動画映像)には"SEQUENCE-xx"(VCD EASYで作られるものそのまま)、SELECTION(メニュー画面の設定)には"TITLE-xx"、PLAYLIST(動画時の設定)には"PLAYLIST-xx"というIDを付けている。
 またメニューのボタンは単純に画面を4等分し、右上をRETURN、左2つを次のメニューまたは動画再生として1〜2の番号指定で飛べるように指定している。
 (2-1)SELECTION
  メニューに関して前後関係を付ける。クリックすべきボタンは範囲指定でX1,Y1,X2,Y2で指定する。ただし画面全体を256*256の座標とする。飛ぶ先は別のSELECTION(メニューの時)またはPLAYLIST(映像の再生)のIDを指定する。
 (2-2)PLAYLIST
  再生するものを指定する。PLAY-ITEMでは再生するものをSEQUENCEのIDで指定する。
  またNEXT,PREV,RETURN時にどこに飛ぶかをSELECTIONまたはPLAYLISTのIDで指定する。
5.できたXMLを、VCD EASYのToolsのBUILDで指定し、作るBINファイル名を指定してEXECUTEすると、BINファイルが作られる。
6.DAEMONTOOLSで動作確認。
7.このイメージをToolsのCDRDAOを使って焼く。その前にOptionsのCDRDAOでデバイスとドライバーを選んでおく。私はgeneric-mmcでOKだった。

ちなみに世間の市販ものはもっとずっと凝ったものが多い。メニュー選択時に選択されたものを2秒間反転させたり、1つのMPEGファイル中で途中にINDEXがあってメニューから飛ばして再生できたり。どちらもがんばれば可能だが、実際にはかなりつらいものがある。(楽なツールを使っているのだろう)

ALLの例

 先の例の他に、順に再生するPLAYLISTを追加する。メニューのボタンは単純に画面を4等分し、右下をALL、右上をRETURN、左り2つを次のメニューまたは動画再生に指定している。そして左側を順に1〜2の番号指定を可能にする。(ALLは3)
IDはALL-xx(トップメニューからすべてを順に再生)とALL-01-xxなど(2段目のメニューでメニュー内の映像を順に再生)と付けている。
テンプレート
 とはいえ20〜30ファイル分もこんなのを書こうと思うとえらく大変だよなぁ。

http://www10.plala.or.jp/p205tb16/vcd.html

坂井瑞穂