Linux ムービー・動画環境

Video CD の作り方

2001年11月14日

MPEG に変換したビデオはそのまま PC 用ファイルとして保存したり他人にあげたりしてもいいんですが、PC を使わない人には渡せませんので家電で再生できるようにしておきたいですね。DV の映像はそのまま VHS にダビングすればいいじゃん等の意見も出てきそうですが、VHS テープは送るのが面倒そうだし、(これからやろうとしている) CD-R などより割高です。また、せっかくだからデジタルなことやりたいですね。

デジタル映像メディアと言えばなんといっても DVD でしょうが、書き込み可能 DVD はまだ装置もメディアも高価です。(プレーヤすら持っていないし) そこで今回は Video CD 作成に挑戦です。Video CD なら大抵の DVD プレーヤで再生できます。

1. MPEG1 ファイルの作成
2. VCDImager のインストール
3. VCD イメージの作成
4. CDRDAO のインストール
5. VCD イメージの焼き込み
6. 再生の確認

1. MPEG1 ファイルの作成

Video CD を作成するにはまず、MPEG1 ファイルを作成する必要があります。MPEG ファイルの作成の方法はこちらで解説していますが、Motion JPEG 形式の AVI ファイルから Video CD 用 MPEG を作成するには MJPEG Tools で以下のように特定のオプションを指定する必要があります。ここでは abc.avi を abc.mpg に変換するとします。

$ lav2wav abc.avi|mp2enc -V -o temp.mp2
$ mplex -f 1 temp.mp2 temp.m1v -o abc.mpg
$ lav2yuv abc.avi|yuvscaler -O VCD|mpeg2enc -o temp.m1v

[一行目 mp2enc の -V オプション]
mp2enc の -V オプションは、-b 224 (ビットレート 224kbps)、-r 44100 (サンプリング周波数 44100Hz)、-s (ステレオ) という Video CD で必須のパラメタをまとめたものです。この場合、-b オプションで 224 以外を指定すると、224 以外ダメだ、と怒られ音声を作ってくれません。強制 224bps なので、-b オプションは必要有りません。

[二行目 mplex の -f 1 オプション]
mplex の -f 1 オプションは Video CD の Format Code で映像と音声を合体します。

[三行目の yuvscaler]
lav2yuv と mpeg2enc の間に yuvscaler を -O オプション付きで咬ませてサイズを Video CD 用の 352x240 にします。 yuvscaler は縮小のみで拡大はできないため、これより小さいサイズの映像を yuvscale を咬ませて変換させようとすると、拡大はできません、と怒られて終了してしまいます。xawtv などでキャプチャする場合はサイズを 352x240 以上にしておきましょう。

以上のことを自動化するため、自作の Motion JPEG → MPEG1 変換スクリプトでは Video CD 用に以下のオプションを用意しました。

-v: mp2enc に -V オプションを、mplex に -f 1 を入れる
-yv: lav2yuv と mpeg2enc の間に yuvscaler -O VCD を咬ませる

要するに、以下のようにします。

$ avi2mpg -i abc.avi -v -yv -o abc.mpg

これで、Video CD 用 MPEG1 のでき上がりです。

2. VCDImager のインストール

そのまま MPEG ファイルを CD にファイルとして書き込んでも Video CD にはならず、単なる MPEG ファイルが入った CD-R になり、DVD プレーヤなどで再生できません。Video CD を作るには特別なファイル構造が必要なようで、ここでは VCDImager というツールを使います。

GNU VCDImager のページから、vcdimager-0.6.2-1.i386.rpm をとってきてインストールします。

# rpm -ivh vcdimager-0.6.2-1.i386.rpm

それだけ。

3. VCD イメージの作成

これも簡単です。abc.mpg があるとして、

$ vcdimager --bin-file=abc.bin --cue-file=abc.cue --iso-volume-label="Test VCD" abc.mpg

とすると、abc.bin と abc.cue ファイルができます。--bin-file と --cue-file を指定しないとそれぞれ、videocd.bin、videocd.cue というファイルができます。

4. CDRDAO のインストール

VCDImager で作ったファイルは CDRDAO で CD に焼きます。バイナリもありますが、ソース rpm を rpmfind.netここら辺 からとってきます (どのファイルを取ってきたかは失念)。コンパイルには PCCTS が必要だそうで、これも rpmfind.net のここからソース rpm をとってきます。

# rpm --rebuild pccts-1.33mr22-1.src.rpm (ソースのビルド)
# rpm -ivh /usr/src/redhat/RPMS/i386/pccts-1.33mr22-1.i386.rpm (できたバイナリのインストール)
# rpm --rebuild cdrdao-1.1.5-2.src.rpm (ソースのビルド)
# rpm -ivh /usr/src/redhat/RPM/i386/cdrdao-1.1.5-2.i386.rpm (できたバイナリのインストール)

5. VCD イメージの焼き込み

最後に、CDRDAO でイメージを焼き込みます。

$ cdrdao write --device 1,0,0 --driver generic-mmc abc.cue

私の持っている CD-R ドライブは CDRDAO のドライバリストに入っていないので --driver オプションで generic-mmc を指定しています。しばらくすると書き込まれます。
でき上がった CD は ISO9660 ファイルシステムとしてもマウントできます。マウントすると cdi、ext、mpegav、segment、vcd というディレクトリがあります。mpegav の中の *.dat と言うファイルが MPEG ファイルです。拡張子を mpg に変更すると、Windows で再生できます。

6. 再生の確認

Linux 上で確認するには Mpeg TV で行います。Linux x86 glibc 2.0 パッケージを持ってきてインストールします。

# rpm -ivh mtv-1.2.5-1.i386.rpm

このうち GUI の mtv はシェアウェア、コマンドラインの mtvp (ただ再生するだけ) はフリーウェアです。再生するには、

$ mtvp vcd:

とします。

しかしこれでは真の確認とは言えません。家電で再生できなければ。そこで近くの電気屋の DVD プレーヤで再生させてもらいました。ばっちり再生できました。しかし画質はさすがに良くないです。352x240 という解像度は VHS 並みということですが、圧縮のためブロックノイズが目立ちます。やっぱ DVD まで作りたいですね。来年あたりは DVD+/-RW ドライブでも買って挑戦してみたいです。


関連リンク:


戻る | Linux ページに戻る | real-baishi に戻る