LinuxでDVDビデオを扱う

自宅のHDD内蔵 DVDレコーダで記録したビデオを何とかLinux上のファイル にしたいなぁ。

環境

DVD-Videoのフォーマット

DVD-RAMをマウントしてみると、メディアの構成がわかります。 ファイルのオーナーが違ったので、rootユーザでのみアクセスができました。

# mount -t udf /dev/scd0 /mnt/dvdram
# ls /mnt/dvdram/
DVD_RTAV/  TS_MANGR/  TS_THMNL/
[root@brain root]# ls /mnt/dvdram/DVD_RTAV/
VR_MANGR.BUP  VR_MANGR.IFO  VR_MOVIE.VRO

このVR_MOVIE.VROが映像ファイルなようです。複数のコンテンツをまとめ てDVD-RAMに入れると、全部このファイルに入ってしまうようです。

再生

MPlayerで再生したところ、うまくできました。

# mplayer /mnt/dvdram/DVD_RTAV/VR_MOVIE.VRO
MPlayer 1.0pre7-3.3.2 (C) 2000-2005 MPlayer Team
CPU: Intel Pentium 4/Xeon/Celeron Foster (Family: 8, Stepping: 7)
Detected cache-line size is 64 bytes
CPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled for x86 CPU with extensions: MMX MMX2 SSE SSE2


85 audio & 196 video codecs
Failed to open /dev/rtc: Device or resource busy (it should be readable by the user.)
Playing /mnt/dvdram/DVD_RTAV/VR_MOVIE.VRO.
MPEG-PS file format detected.
VIDEO:  MPEG2  352x480  (aspect 2)  29.970 fps  6000.0 kbps (750.0 kbyte/s)
==========================================================================
Opening audio decoder: [liba52] AC3 decoding with liba52
Using SSE optimized IMDCT transform
AC3: 2.0 (stereo)  48000 Hz  192.0 kbit/s
Using MMX optimized resampler
AUDIO: 48000 Hz, 2 ch, s16le, 192.0 kbit/12.50% (ratio: 24000->192000)
Selected audio codec: [a52] afm:liba52 (AC3-liba52)
==========================================================================
vo: X11 running at 1280x1024 with depth 24 and 32 bpp (":0.0" => local display)
==========================================================================
Opening video decoder: [mpegpes] MPEG 1/2 Video passthrough
VDec: vo config request - 352 x 480 (preferred csp: Mpeg PES)
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
The selected video_out device is incompatible with this codec.
VDecoder init failed :(
Opening video decoder: [libmpeg2] MPEG 1/2 Video decoder libmpeg2-v0.4.0b
Selected video codec: [mpeg12] vfm:libmpeg2 (MPEG-1 or 2 (libmpeg2))
==========================================================================
Checking audio filter chain for 48000Hz/2ch/s16le -> 48000Hz/2ch/s16le...
AF_pre: 48000Hz/2ch/s16le
[AO OSS] audio_setup: Can't open audio device /dev/sound/dsp: No such file or directory
[AO ESD] latency: [server: 0.28s, net: 0.00s] (adjust 0.28s)
AO: [esd] 44100Hz 2ch s16le (2 bps)
Building audio filter chain for 48000Hz/2ch/s16le -> 44100Hz/2ch/s16le...
Starting playback...
VDec: vo config request - 352 x 480 (preferred csp: Planar YV12)
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is 1.33:1 - prescaling to correct movie aspect.
VO: [xv] 352x480 => 640x480 Planar YV12 
A:   4.7 V:   4.7 A-V: -0.014 ct:  0.189 134/134  9%  1%  0.9% 0 0              
Exiting... (Quit)
フォーマット MPEG-PS
Video MPEG2 352x480 (aspect 2) 29.970 fps 6000.0 kbps (750.0 kbyte/s)
Audio AC3 2.0 (stereo) 48000 Hz 192.0 kbit/s

変換

ffmpegで動画ファイルが変換できるので、試してみた。 ffmpegのマニュアルを見ながら、上記で得られたデータ形式を当てはめると、 次のようにすればよいと思う。画像サイズは変更することになるが、指定しな いと縦長352x480になってしまう。

# ffmpeg -i /mnt/dvdram/DVD_RTAV/VR_MOVIE.VRO -s 352x264 -vcodec mpeg4 -acodec mp3 -b 750 -g 300 -ab 192 /tmp/test.avi

-f avi を入れても良いみたい。-g 300は29.970fpsの10倍、つまり10秒間 のフレーム数を指定する。画像サイズは 640:480=352:264より決めた。

課題

複数のコンテンツを別々にするにはどうすればよいか? 当面、DVD-RAMに1つずつ入れて、ファイル化していくしかない。


関連ソフトウェア

Vine Linux 3.2上で以下のソフトウェアを使用しています。 tarからコンパイル&インストールするので、apt-get等では入手できません。

MPlayer

LAME

ffmpegをコンパイルするのに必要

プロジェクトページ http://lame.sourceforge.net/ バージョン 3.96.1-1

$ ./configure --enable-nasm --enable-shared --with-vorbis --disable-debug
$ make
$ su
# make install

ffmpeg

プロジェクトページ http://ffmpeg.sourceforge.net/ バージョン 0.4.9-pre1

$ ./configure --prefix=/usr --enable-shared --enable-pthreads --enable-gpl --enable-a52 --enable-vorbis --enable-mp3lame
$ make
$ make -C doc
$ su
# make install

Last modified: Wed Oct 5 13:58:44 JST 2005