昨年末から今年にかけて家庭用 DVD レコーダのラインナップが増え、一気に普 及していきそうです。また PC 用の書き換え用DVD (±R/RW, RAM) の値段も 一気に下がり搭載 PCも増えています。PCだとオリジナル DVD 作成の際に凝った 編集が出来、最近雑誌等で特集が組まれることも増えています。ただ、そういっ た記事は当然のごとく Windows での作業です。そこで、いろいろ調べたところ、 Linux でも DVD ビデオが作成できることが分かったので早速 DVD-R/RW ドライ ブを購入し試してみました。DVD メニューもチャプター分けもできます。(メニュー 作成の解説はこちら と こちら (新バージョン))
購入した DVD-R/RW ドライブはメルコ の DVR-R42FB です (東芝製の SD-R5112 の OEM)。今の話題は DVD マルチドライブや ±R/RW ドライブですが、マルチドライブはまだ -R の速度が 2 倍だし、+ も - も両方 使うわけもないと思って値段も 2万円を切るこのドライブにしました。RAM の読み込みも可能と言う ことで (OS さえ対応していれば) 全てのタイプのメディアの読み込みは出来る わけです(多分)。ちなみに Linux で動作するかどうか調査する前に買いましたが結 果として動きました(笑)。
以下の手順で行います。
1. DVD-R/RW ドライブの認識
2. dvdauthor、dvdrtools 他、ソフトインストール
3. ビデオの DV カメラからの取り込み
4. DV カメラ映像の DVD 用 MPEG2 エンコーディング
5. オーサリング
6. DVD イメージ作成、確認、書き込み
ATA/IDE/MFM/RLL support ---> IDE, ATA and ATAPI Block devices ---> <*> SCSI emulation support再構築したら lilo の設定などをして PC を立ち上げ直します。
dvgrab: DV カメラからビデオ映
像を IEEE1394 経由でキャプチャするソフト。詳しくは IEEE1394 カードでデジタルビデオ取り込み参照。
MJPEG Tools: MPEG2 ファイルを
作る際に使用。DVD ビデオ作成には 1.6.x が必要。どのマイナーバージョンから可能になったかチェックしてないが最新版を使うといい。詳しくは MPEG ビデオファイルの
作り方参照。
transcode:
MPEG2 ファイルを作る際に使用。詳しくは transcode で DivX 作
成 参照。
libdvdread:
DVD を読み込むのに必要なライブラリだが、次の dvdauthor もこれを使ってい
る。
dvdauthor: 作成した
MPEG2 映像から DVD ビデオに必要なファイル (IFO, VOB, BUP ファイル) とディ
レクトリ構造を作るソフト。
dvdrtools: DVD ビデオ書き
込み用イメージファイルを作成する mkisofs、それを書き込み型 DVD ドライブ
に書き込む dvdrecord 含む、書き込み型 DVD ドライブの総合ツール。上の
dvdauthor の機能も取り込まれている。
ここではこれらのうち、libdvdread、dvdauthor、dvdrtools のインストール方 法を解説します。
$ rpm -ivh libdvdread-0.9.4-fr3.src.rpm $ cd ~/rpm/SPECS/このディレクトリにある libdvdread.spec を以下の様に編集します。
%{_libdir}/*.a
%exclude %{_libdir}/*.la
%{_libdir}/*.so
を
%{_libdir}/*
に置き換えちゃいます。そして、
$ rpm -ba libdvdread.specとコンパイルします。 すると ~/rpm/RPMS/i386 に以下のファイルができます。
libdvdread-0.9.4-fr3.i386.rpm libdvdread-devel-0.9.4-fr3.i386.rpmこれらをインストールします。
$ sudo rpm -ivh libdvdread-0.9.4-fr3.i386.rpm $ sudo rpm -ivh libdvdread-devel-0.9.4-fr3.i386.rpm
$ rpm -ta dvdauthor-0.5.3.tar.gzとするだけで、~/rpm/RPMS/i386/ に dvdauthor-0.5.3-1.7.2.i386.rpm が作成 されます。インストールしましょう。
$ cd ~/rpm/RPMS/i386/ $ sudo rpm -ivh dvdauthor-0.5.3-1.7.2.i386.rpm
$ rpm -ivh dvdrtools-0.1.5-1ark.src.rpm $ cd ~/rpm/SPECS/このディレクトリにある dvdrtools.spec を以下の様に編集します。
%configureという行を
./configure --prefix=/usr --exec-prefix=/usr \ --bindir=/usr/bin --sbindir=/usr/sbin \ --sysconfdir=/etc --datadir=/usr/share \ --includedir=/usr/include --libdir=/usr/lib \ --libexecdir=/usr/libexec --localstatedir=/var/lib \ --sharedstatedir=/usr/share --mandir=/usr/share/man \ --infodir=/usr/infoに置き換えます。そして、
$ rpm -ba dvdrtools.specとコンパイルします。 すると ~/rpm/RPMS/i386 に以下のファイルができます。
cdda2wav-0.1.5-1ark.i386.rpm dvdrtools-video-0.1.5-1ark.i386.rpm mkisofs-0.1.5-1ark.i386.rpm dvdrecord-0.1.5-1ark.i386.rpm競合する cdrecord をアンインストールしてからインストールしましょう。
$ sudo rpm -e cdrecord $ sudo rpm -ivh cdda2wav-0.1.5-1ark.i386.rpm $ sudo rpm -ivh dvdrtools-video-0.1.5-1ark.i386.rpm $ sudo rpm -ivh mkisofs-0.1.5-1ark.i386.rpm $ sudo rpm -ivh dvdrecord-0.1.5-1ark.i386.rpmこのままだと dvdrecord コマンドを実行したときにアクセス不可になってしま うので、
$ sudo chmod u+s /usr/bin/dvdrecordとして実行時の root の ID を設定します。
$ mkdir dv $ dvgrab --autoplit --size 1024 --format dv2 dv/video--autosplit は一定取り込み画像が一定サイズに達したら分割する指定です。 --size ではそのサイズを MB で指定します。--format は DV 取り込み AVI の フォーマットを指定します。あとで transcode で変換するには dv2 を指定して おきます。最後にベースとなるファイル名を指定します。最初は dv/video001.avi から始まって、dv/video002.avi、dv/video003.avi …と --size で指定したファイルサイズごとに分割して取り込まれます。
[transcode を使う方法]
$ transcode -x dv -i dv/ -y mpeg -F d -b 224 -o video-x dv で映像ソースが DV であることを指定します。-i dv/ は映像ソースファ イルまたはソースの入ったディレクトリを指定します。dvgrab で取り込んだファ イルが番号順に読み込まれます。-y mpeg で MPEG-1/2 エンコード指定します。 transcode で MPEG-1/2 エンコードするには複数の方法が -y オプションで指定 できますが、ここでは bbMPEG の Linux への移植を使った mpeg を指定します。-F はコーデックごとに違うエンコードプロ ファイルを指定します。エンコードプロファイルはエンコードの各パラメータ (フレームレート、ビットレート、アスペクト比等) をまとめたものでここでは mpeg オプションの DVD 用プロファイルである、-F d を指定します。 -b 224 はオーディオのビットレートを指定します。-o でファイル名のベースを 指定します。-F d を指定すると -w オプションの指定値に関わらず映像のビッ トレートが自動的に最大値の 9800 kbps になってしまいます。それより小さい ビットレートを指定したい場合は、dvd.prof と言うファイル (ファイル名は任 意) を用意して、
max_bitrate=4000000.0という内容にします。そして -F d,,dvd.prof と指定します。ここがちょっとめ んどくさいですね。
エンコードが終わると、video.m2v (ビデオストリーム) と video.mpa (オーディ オストリーム) が出来るので、以下のようにして合体させます。transcode に入っ ているツールの tcmplex を使い、
$ tcmplex -o video.mpg -i video.m2v -p video.mpa -m dとします。-o はアウトプットファイル名 -i はビデオストリームのファイル名、-p はオー ディオストリームのファイル名、-m は DVD 用プロファイルです。
[MJPEG Tools を使う方法]
MJPEG Tools では以下のようにします。
$ lav2yuv dv/* | mpeg2enc -F 4 -n n -a 2 -b 9200 -f 8 -o video.m2v $ lav2wav dv/* | mp2enc -b 224 -o video.mpa -r 48000lav2yuv は AVI を YUV 形式で標準出力に出力します。それをエンコーダの mpeg2enc に渡してエンコードします。mpeg2enc のオプションは以下のものを使っています (詳しくは man mpeg2enc で)。
-F: フレームレート。4 は 29.97。 -n: ビデオの形式。n は NTSC。 -a: アスペクト比。2 は 4:3。 -b: ビットレート -f: MPEG の形式。8 は DVD (dvdauthor 用だそうです)。 -o: 出力ファイル名。その他、画質を向上させるためのオプションがいくつかあります。また、間に yuvdenoise と言うのを噛ませても画質を向上させることもできます。
-b: ビットレート -r: サンプリング周波数 -o: 出力ファイル名mplex を使って映像と音声を合体させましょう。
$ mplex -f 8 -o video.mpg video.m2v video.mpa-f 8 は DVD 用であることを示します。-o でアウトプットファイル名を指定し 続けてビデオストリーム、オーディオストリームのファイル名を指定します。 (順不同なよう)
tcmplex よりも mplex のほうが音声の同期が正確なようです。
なお、オーディオストリームの video.mpa は MP2 (MPEG1 Audio Layer II) な のですが、これは全ての家庭用 DVD プレーヤーでサポートされているわけでは なさそうです。(自宅の AIWA のプレーヤーでは再生できた) 全ての DVD プレー ヤーでサポートされている AC3 (ドルビーデジタル)形式でも FFMPEG と liba52 の組合せでエンコードで きるようですが、ドルビーラボラトリーにライセンス料を支払う必要があるかも しれないためここでは割愛します。少し試したところ、Linux 上で AC3 音声で作成した DVD はうちの上記の家庭用プレーヤーでは再生できましたが、Windows PC では音が出ませんでした。(2004/1/2)
$ dvdauthor -o dvd/ video.mpgするとそのディレクトリに dvd というディレクトリができ、その中には VIDEO_TS、AUDIO_TS というディレクトリが出来ます。元々 dvd というディレク トリがあった場合、中身は上書きされますので注意しましょう。
簡単にチャプター分けしたい場合は、
$ dvdauthor -o dvd/ -c 0,5:00,10:00,15:00 video.mpgとします。これによって 5分毎にチャプター分けされ、DVD プレーヤーのスキッ プボタンで先に飛ばすことが出来ます。 次にビデオマネージャ (VMG) を作成します。ビデオマネージャは DVD ビデオ全 体の情報です。
$ dvdauthor -T -o dvdすると、dvd/VIDEO_TS/ に VIDEO_TS.IFO、VIDEO_TS.BUP というファイルが出来 ます。
$ mkisofs -dvd-video -o dvd.img dvd/-dvd-video で DVD ビデオ用の UDF ディスクイメージを指定します。DVD ビデ オでは各ファイルのディスク上の物理的順番が決まっており、このオプションは そこら辺を考慮してくれます。-o で作成するイメージファイルのファイル名を 指定します。最後は先ほど作成した DVD ビデオ関連ファイルの入ったディレク トリを指定します。
作ったイメージファイルの確認は XINE で行えます(XINE のインストール方法は 割愛します。tar ball を rpm -ta すれば RPM を作成できます)。XINE の Setting 画面の gui タブで configuration experience leve を Advanced 以上 にし Apply ボタンを押します。そして、input タブの device used for dvd drive で dvd.img を直接指定します。そして OK で閉じて GUI で DVD をクリッ クするとあたかも DVD を再生しているように DVD を再生します。
書き込みは dvdrecord で行います。
$ dvdrecord -scanbusとすると以下のように SCSI バスにつながっている装置の一覧が出ます。
scsibus0: 0,0,0 0) * 0,1,0 1) * 0,2,0 2) * 0,3,0 3) * 0,4,0 4) * 0,5,0 5) * 0,6,0 6) 'MELCO ' 'MCR-S ' '1.15' Removable Disk 0,7,0 7) * scsibus1: 1,0,0 100) 'TOSHIBA ' 'DVD-ROM SD-R5112' '1M30' Removable CD-ROM 1,1,0 101) ' ' 'DVD/CDRW RW9200 ' '1.30' Removable CD-ROM 1,2,0 102) * 1,3,0 103) * 1,4,0 104) * 1,5,0 105) * 1,6,0 106) * 1,7,0 107) *scsibus0 は本物の SCSI カードです。scsibus1 が SCSI エミュレーションをし た ATAPI 装置の一覧で、DVD-R/RW ドライブは 1,0,0 につながっている TOSHIBA の DVD-ROM SD-R5112 です。(なぜか DVD-ROM)
$ dvdrecord -v dev=1,0,0 speed=4 -dao dvd.imgとします。dev=1,0,0 で -scanbus でスキャンしたデバイスの指定、speed=4 で 書き込みスピード、-dao で Disk at Once 書き込みを指定します。
出来たディスクは PC 上では XINE 等で再生できますが (上記の device used for dvd を実際の DVD デバイスにするのを忘れずに)、何と言っても家電 の DVD での再生をしたいものです。DVD-RW に記録したものでも家の AIWA の XD-DV380 では再生できました。また近くのサトームセンに行って勝手に再生さ せてもらったところ TOSHIBA の DVD 付きテレビデオ、ONKYO の DVD ミニコン ポで再生できました。SHARP の DVD 付きテレビデオは使いかたが悪かったのか、 うまく再生が出来ませんでした。その他は試していません。
dvdauthor を使って DVD メニューも作成できます。DVD ビデオ作成 その2:DVD メニューを作るを参照下 さい。