Extract DVD
This describes how to convert a DVD to OGG video using:
- libtheora for video
- libvorbis for audio
- srt subtitles
Installation
Install the packages
apt-get install lsdvd ffmpeg mplayer oggz-tools
For using encrypted DVDs build and install libdvdcss from http://download.videolan.org/pub/libdvdcss/last
./configure --prefix=/usr make make install
Prepare
Use lsdvd to see what's on DVD. Determine the stream you would like to extract as well as the aid for audio and the sid for subtitles.
lsdvd -x
Write the stream to the harddrive so the next steps will go faster.
mplayer dvdnav://<stream> -dumpstream -dumpfile <title>.vob
Investigate the VOB file and note the numbers for the videostream and the audiostream
avprobe <title><stream>.vob
Some VOB files report the wrong duration so just in case rebuild the vob file but only with the required videostream and audiostream.
avconv -y -i <title><stream>.vob -map 0:<videostream> -c:v copy -an -sn -f vob <title>.vob avconv -y -i <title><stream>.vob -map 0:<audiostream> -c:a copy -vn -sn -f ac3 <title>.ac3
Audio
Get the bitrate
bitrate=`avprobe -show_format <title>.ac3 2>/dev/null | grep bit_rate | cut -d= -f 2 | cut -d. -f 1 `; echo $((${bitrate}/3/1000))
Now extract audio from the stream and convert to OGG.
avconv -y -i <title>.ac3 -c:a libvorbis -q:a 4 -ar 44100 -vn -sn -f ogg <title>.audio
Video
Detect the amount to crop.
avconv -y -i <title>.vob -t 600 -vf cropdetect -an -sn -f rawvideo /dev/null 2>&1 | tail | head -n 1 | sed 's/^.*crop=//'
Get the bitrate
bitrate=`avprobe -show_format <title>.vob 2>/dev/null | grep bit_rate | cut -d= -f 2 | cut -d. -f 1 `; echo $((${bitrate}/3/1000))
Convert the video stream to ogv
avconv -y -pass 1 -i <title>.vob -vf crop=<cropvalues> -g 250 -bf 16 -b: <video_bitrate>k -c:v libtheora -an -sn -f ogg <title>.video avconv -y -pass 2 -i <title>.vob -vf crop=<cropvalues> -g 250 -bf 16 -b: <video_bitrate>k -c:v libtheora -an -sn -f ogg <title>.video
Subtitles
Extract the subtitles from the stream.
To do!!!
Merging
Combine everything in a ogg container
oggz-merge -o <title>.ogv <title>.video <title>.audio