DVD Ripping and Burning Tips ---------------------------- I usually use 1 of 2 methods for finding out what's on a dvd. First, I run lsdvd to see how many titles & chapters are on the dvd, & I look for the main title. More often than not, it's the first one, but not always. Good example was one I ran across that had five 24 minute episodes and then one large file with all 5 in it. When I played the dvd with mplayer, I saw on the menu you could choose each individual episode, or you could choose the menu listing 'play all'. The combined file was too large for a single-layer dvd, but I could rip each individual episode & put 3 on one dvd & the other 2 on a 2nd dvd. Here's how I did it, starting with episode 1: mplayer dvd://1 -dumpaudio -dumpfile episode1.ac3 mplayer dvd://1 -dumpvideo -dumpfile episode1.m2v mplex -f 8 -o episode1.vob episode1.ac3 episode1.m2v So, in the above scenario, title one was just one episode, not the main movie file with all the episodes in it. The other program I use to check the dvd is streamanalyze, part of the streamdvd package, which includes lsdvd, at least in the OpenBSD version of it. Do this: streamanalyze -i /dev/rcd0c -t 1 (assuming title 1 is the main title) That'll show you what's in title 1. The file formats look like: Videostream id's always start with '0xen' where n is the track number. In most cases a video dvd contains only one video stream '0xe0' but multiangle videos might contain more video streams. Audiostream id's always start with '0x8n' where n is the track number. Most video dvd's contain multiple audiostreams in different languages, director comments, etc. There's a special case for mpeg audiostreams that are pretty rare for find. If you have a dvd containing mpeg audiostreams and want to select one of them, use '0xcn' as an identifier where n is the tracknumber (also special, counting starts from 1). Subpicturestream id's always start with '0x2n' where n is the track number. Most video DVDs contain multiple subpicture streams in different languages. The above info on streamanalyze and streamdvd can be found in readme files installed with the programs. On my OpenBSD 4.1 box, the readme are in: /usr/local/share/doc/streamdvd/README.streamanalyze /usr/local/share/doc/streamdvd/README.streamdvd * NOTE * You can use streamdvd to rip and shrink a dvd movie, but be forewarned, YMMV! I did okay with it on smaller movies, and even on shrinking some larger ones, but when it came to extracting particular streams rather than just everything, the program choked up on me more often than not. It may have something to do with the way it interfaces with dvdauthor: dvdauthor -t -o /path/to/save -f 'streamdvd -i /dev/rcd0c -t 1 \ -s 0xe0,0x80,0x20 -c 1-9 |' That's a good example. It's trying to get title 1, the main video, the first audio, and the first subtitle, chapters 1 through 9. That's what the docs say. But, it always seems to run into problems. That's why I turned to mplayer in the first place. Before leaving this section, tcprobe deserves mention. It's part of transcode but can be used independently for medium and print information. The command tcprobe -i foo.avi will print interesting information about the avi file itself and its video audio content. It has some interesting switches you can tack onto the command. As always in the 'nix' world, try man 1 tcprobe. Yep, READ THE FINE MANUAL! ;) Before doing any ripping, if you see the main title is really a whopper, like 8GB or so, you can rip the movie in 2 parts with mplayer. Let's say lsdvd reports there are 24 chapters in the main title. To split the dvd: mplayer dvd://1 -chapter 1-12 -dumpstream -dumpfile movie1st.vob mplayer dvd://1 -chapter 13-24 -dumpstream -dumpfile movie2nd.vob But, if you see your movie will fit on a single-layer dvd, or that it looks close anyway, just do this: mplayer dvd://# -dumpstream -dumpfile movie.vob To play the movie with english subtitles, do this: mplayer -sid 0 movie.vob If your movie won't fit on a single-layer dvd, but it doesn't look too awfully big, after you've ripped it, do the following: Extract audio: tcextract -i movie.vob -t vob -x ac3 -a 0 > audio.ac3 Extract video: tcextract -i movie.vob -t vob -x mpeg2 > movie.m2v If you need subtitles use spububmux from dvdauthor and ifo_dump from libdvdread-utils. Check for color palette: ifo_dump /dev/rcd0c 1 |grep Color |sed 's/Color ..: 00//' > palette.yuv Generate picture PNG in format 4.12 spuunmux -s 1 -p palette.yuv movie.vob This command generates PNG files and command file sub.xml Calculate the exact shrinkage factor with this formula: requant_factor = (video_size / (4700000000 - audio_size)) * 1.04 * NOTE: This worked perfectly for me first time out. YMMV * Now use the factor derived from the formula above to shrink the video: tcrequant -i movie.m2v -o new.m2v -f (shrinkage factor) *NOTE* From everything I've read on shrinking, you shouldn't go larger than a 1.5 factor. It degrades the quality too much. If after running the formula above you find the factor exceeds 1.5, you should probably split the movie. Now recombine new.m2v with the audio file audio.ac3: mplex -f 8 -o new.mpg new.m2v audio.ac3 At this point, you can insert subtitles. spumux sub.xml < new.mpg > new.vob Now that you've got your movie ripped and/or shrunk, you setup the dvd file structure with dvdauthor. First, create dvd.xml: (Name it whatever you want. Just be sure to have an .xml extension) Pass the xml file to dvdauthor for authoring: dvdauthor -o /path/you/saved/to -x dvd.xml Dvdauthor creates 2 subdirectories below where you're at, AUDIO_TS & VIDEO_TS. Let's say you're in /data/dvdfiles. * NOTE * I don't know if I can stress the value of dvd rewritables enough! Catch some on sale and get them. They'll save you coasters and frisbees, for sure. I got some half-priced recently by watching the Sunday ads. Of course, you can take your changes on eBay. I haven't run into hardly any problems in three years. 'X' Those are crossed fingers. ;) Anyway, here's some info on rewritables: To blank a dvd-rw that already has been written to, and really wipe everything off of it, do: dvd+rw-format -blank=full /dev/rcd0c That does a full blanking. This will take about one hour on 1x media. A fast blanking can be done by: dvd+rw-format -blank /dev/rcd0c On to the burning. To create an image to burn, do this: mkisofs -dvd-video -udf -o new.iso /data/dvdfiles/ To burn the image, do this: growisofs -dvd-compat -Z /dev/rcd0c=new.iso You can stick speed=? in there too. It ain't a bad idea. Burning video dvd's is a lot different than data dvd's. To skip the last 2 steps and burn directly to dvd, do this: growisofs -dvd-compat -dvd-video -udf -Z /dev/rcd0c /data/dvdfiles (Assuming /dev/rcd0c is your burning device & /data/dvdfiles is the output directory of dvdauthor) Or, you can do this, assuming you're in the /data/dvdfiles and your movie is directly below in the subdirectory VIDEO_TS: growisofs -dvd-compat -Z /dev/rcd0c -dvd-video . (don't forget the . on the end) On other 'nix' type systems, your burning device might be and probably is something other than /dev/rcd0c but I'm writing as an OpenBSD user, and that's what my device is. VLC A most amazing video program, to say the least. I recently found out you can rip a dvd with it. I first started reading about it at: http://digg.com/software/How_to_Rip_DVDs_with_VLC There's also a huge amount of info on using the command line with it at: http://wiki.videolan.org/index.php/VLC_command-line_help Back to the first link. The main part I read is past all the comments towards the bottom of the page. I popped in a dvd, cranked up vlc and tried to follow the instructions, but apparently I've got a different version than the person who wrote the article. So, I started looking into the menu options and came up with this: 1) THIS PART NOT FINISHED YET - NOT IN ONLINE VERSION @ gopher://sdf.lonestar.org/00/users/dancer68/multimedia/dvdripping.txt.txt (the double extension's NOT a typo) As a side note, here's an alternative to streaming with vlc using nc or netcat: On your streaming client, type this first. $ nc -l 1234 | mplayer -cache 8192 - Then walk to your streaming server and push the file down the network's throat. Filename is just an example. $ cat Aerosmith-Amazing.mpg | nc 192.168.1.5 1234 If the streaming client IP is 192.168.1.5... That is all. It works. Really cool. :) If you're on the client end, you could still use vlc to do the same thing I just outlined with vlc to save the stream. Some links that helped me: http://www.brandonhutchinson.com/Burning_Video_DVDs_in_Linux.html http://www.ericdugas.com/howtos/ripDVDWithMplayer/ripDVDWithMplayer.php http://www.dizwell.com/prod/node/47 http://forum.freespire.org/archive/index.php/t-2978.html http://www.linuxquestions.org/linux/answers/Applications_GUI_Multimedia/DVD9_to_DVD5_guide http://wiki.videolan.org/index.php/VLC_command-line_help http://digg.com/software/How_to_Rip_DVDs_with_VLC =================================================================