General Information (from README)


This tarball contains a script and some helper functions that tie together a whole slew of packages to create copies of double-layer DVDs. This is not a replacement for Kb3 or similar packages, but it fills a need that isn't really filled with any other Linux package.

The goal with this script is to tie together the right Linux packages so that a double-layer DVD can be copied to a single-layer DVD±R(W) disc. Now that double-layer DVD burners can be had for ~$40.00, it may seem to some as "why don't I just copy my DVD in entirety, verbatim to similar medium"?

Good question. As long as you don't mind paying ~$2.25 per disc, there is no reason to copy double-layer to single-layer (unless you don't own a double-layer DVD burner). However, if you're like me, and you like using discs that you can get for ~0.12 cents, then you will like this script.

The principal foundation, or methodology, used in the script is to rip out the main section of a DVD (the actual movie in most cases), and compress it (if necessary) just enough so that it will fit on the single-layer DVD±R(W). For those that don't know, the typical DVD of your favorite movie is on a double-layer DVD and with all the "extras", "frills", and other stuff on the DVD it contains about 7-9 GB of data.

A single-layer DVD±R(W) will only hold 4.4 GB (4.7 in salesman talk) of data. So to copy the movie from the double-layer DVD to a single-layer takes a bit of creativity. Note that at the time of this writing, K3b (http://www.k3b.org/) nor any other Linux GUI package will copy double-layer DVDs to single-layer medium. M$ products can do it, there just isn't a Linux one yet.

So, here you have this script. It simply ties the necessary packages together so that you can copy the main content of a double-layer DVD to a single-layer disc. The process is simple (condensed for simplicity):

  1. Rip the main portion (typically the entire movie) from a double-layer DVD to a file on the hard disk.
  2. Extract the audio and video streams from this file into two different files on the hard disk.
  3. Requantisize (make smaller) the video stream so that after combining it with the audio, it will fit on a single-layer DVD±R(W).
  4. Multiplex (combine) the (now smaller) audio and video streams back together into one file.
  5. Create a DVD file structure from the new (smaller) mpeg file.
  6. Create an ISO file from the DVD file structure. This step could probably be eliminated, but I've had trouble doing this and it only takes about five more minutes in any fairly recently-made computer.
  7. Burn the DVD±R(W).

The result is the entire main feature (typically the movie) of the original DVD burned to a new one with a compression factor small enough so that the perceptable difference is negligable.


Of course, you'll need a DVD burner installed in the machine you intend to use. This machine will need adequate disk space as well. At a minimum the machine needs at least 18 GB of free disk space to copy a DVD with a long movie on it. If the machine has 2 physical disk drives, each with at least about 9 GB of free disk space, you can use both disks to enhance performance just a bit as much of the DVD copy process is reading from disk and writing to disk simultaneously.

The script was developed on a machine containing a (B)LFS-installed GNU-Linux operating system. The machine has an Athlon 2400+ CPU, 756 MB of RAM, and two fairly decent physical disk drives. The script was tested using the machine with just a DVD burner (4x) installed and also with the burner and a DVD-ROM reader (16x) installed also.

On this machine it takes roughly 1 hour to do the entire process of copying and burning a two-hour DVD movie. Almost one-third of that time (20 minutes) is spent ripping the data from the source DVD, and about one-quarter (15 minutes) is spent burning the new DVD±R(W). The remaining 25-30 minutes is spent processing the video and audio streams.

The list of software tools required to do all this isn't small, but it isn't something that is difficult either. Here's what you need for this script to be functional.

  1. Cdrtools (http://www.linuxfromscratch.org/blfs/view/svn/multimedia/cdwriteutils.html#cdrtools)
  2. dvd+rw-tools (http://www.linuxfromscratch.org/blfs/view/svn/multimedia/dvd-rw-tools.html)
  3. Transcode (http://www.linuxfromscratch.org/blfs/view/svn/multimedia/transcode.html)
  4. BC (http://www.linuxfromscratch.org/blfs/view/svn/general/genutils.html#bc)
  5. vobcopy >= 1.0.0 (http://linux-programming-newbie.org/)
  6. MJPEG Tools (http://mjpeg.sourceforge.net/)
  7. DVDAuthor (http://dvdauthor.sourceforge.net/)
  8. Eject (http://ca.geocities.com/jefftranter%40rogers.com/eject.html)

Some of the packages listed above will have prerequisites such as libdvdread (http://www.linuxfromscratch.org/blfs/view/svn/multimedia/libdvdread.html), libdvdcss (http://www.linuxfromscratch.org/blfs/view/svn/multimedia/libdvdcss.html) and more.

You may also want to install these additional packages:

  1. dvd::rip (http://www.exit1.org/dvdrip/) which requires installing the GTK-Perl Perl module (http://www.cpan.org/modules/by-module/Gtk/). The dvd::rip package is not required. The GTK-Perl Perl Module is somewhat tricky to install. Instructions to install this module can be found at http://www.mcmurchy.com/rmlcopydvd/index.shtml#gtk-perl-install.
  2. A DVD movie player such as MPlayer (http://www.linuxfromscratch.org/blfs/view/svn/multimedia/mplayer.html), Xine (http://xinehq.de/) or Totem (http://www.linuxfromscratch.org/blfs/view/svn/gnome/totem.html). The player is used to view the newly created MPEG file before burning it to the DVD±R(W). A player is not required, however.

If you already have the K3b package installed, chances are most of the dependency packages listed above are already installed.


You should only have to simply run the script. The typical --help and --version parameters can be passed. You can provide a parameter on the command line and this will be used as the prefix name for all the files created during the copy process. If --help is passed to the script on the command line, usage instructions will be provided.

There are many parameters you can tweak to modify the behavior of the script. These parameters are identified in the rmlcopydvdrc configuration file. You'll want to review this file and make any adjustments to the parameters to suit your individual needs. All the parameters are well-described in the file.


See the INSTALL file.


Like any program/package they are there, the problem is discovering them. However, I've used this script extensively to copy many (close to 100) DVDs. The auto discovery of the DVD hardware (burners, readers) may not work correctly. I do not have access to all the possible combinations of DVD equipment to ensure that the discovery works as intended. There is much I can do to improve this auto-discovery, and I'm hoping that folks who actually use this script (if there are any) will provide input so that I can make the auto-discovery better.

This script is not designed to make exact duplicate copies of DVDs. There are many programs (such as K3b) which do this already. I've used this script for a couple of years as I have not found any other way to copy double-layer DVDs with more than 4.7 GB of data to a single-layer DVD±R(W) disc. I have good success with the script. YMMV.

There are many M$ programs that will make duplicate copies of double-layer DVDs to single-layer discs, however, these copies are significantly compressed and the resulting compressed video may be of poor quality.

If you discover a Linux package that will copy double-layer DVDs to single-layer medium in full (complete duplicates, the only difference being the single-layer as compressed data), I would appreciate you letting me know about it.

Problems You May Encounter (from PROBLEMS)

This script has only been tested and used with a couple different kinds of DVD ROM/Burners. Unfortunately, I don't have access to very much DVD hardware. It has been tested in a single DVD Burner machine and also in a machine with two DVDs, one reader and one burner.

The auto-discovery in the script is admittedly weak. It could be much better, however, without the hardware to check it out, I really cannot test it. If the auto-discovery of your DVD drives does not work properly, you can use the settings in the rmlcopydvdrc file to identify your DVD device.

Also, if you could please run the following command and send the results to me at <rmlcopydvd**AT**mcmurchy**DOT**com> I would appreciate it. With known information about additional DVD hardware I can promptly update the script and create a new distribution. Here is the command:

dvd+rw-mediainfo /dev/hdc

Of course, use a valid device file for your DVD. You don't have to have a DVD mounted or even one inserted in the drive. The first INQUIRY: line should contain the relevant information about your drive(s). Here are a couple of examples:

INQUIRY:                [YAMAKAWA][DVR-Y08         ][1.19]
INQUIRY:                [DVD-16X ][DVD-ROM BDV316E ][0052]

If you find a need to make a change to the scripts so that it will correctly function with your DVD device(s), please send your changes to <rmlcopydvd**AT**mcmurchy**DOT**com> so I can incorporate them into the distribution.

Porting Issues (from PORTING)

This script has only been tested and used on a GNU Linux operating system using bash as the shell. More testing using additional shells is necessary.

If you find a need to make a change to the scripts so that it will correctly function on other platforms, please send your changes to <rmlcopydvd**AT**mcmurchy**DOT**com> so I can incorporate them into the distribution.

Installation Instructions (from INSTALL)


Installation is straightforward and simple:

tar xf rmlcopydvd-x.x.x.tar.gz
cd rmlcopydvd-x.x.x
./configure --help

A couple configuration options of interest:

--with-player=player    where player is one of totem, mplayer, xine, etc.
--with-guiripper=ripper where ripper is a GUI DVD ripper (default=dvdrip)

You should consider setting SYSCONFDIR unless $prefix/etc is acceptable to you. There is one file (rmlcopydvdrc) which will be installed there. The default installation prefix is /usr/local. Then:

make install

There is no test suite for this package.


The complete list of installed files is as follows:



$prefix/etc (recommended to change this to /etc/rmlcopydvd via --sysconfdir):










Creating a New Distribution (from AUTOFOO)

This distribution is created using the GNU Autotools: autoheader, aclocal, autoconf and automake. If you find a need (or desire) to recreate the configure script or Makefile in this distribution, the steps are as follows:

  1. Start with a freshly unpacked tarball.
  2. Make any desired modifications to the source files.
  3. Modify configure.ac and/or any of the Makefile.am files as required (if necessary)
  4. Run the following commands:

autoheader -f
aclocal --force
autoconf -f
automake -a -c

This should create a new configure script and Makefile.in files. If you wish to create a distribution, issue:

make distcheck

Note that these instructions won't create new documentation files. You must run the 'create-docs' make target in the 'docs' subdirectory by issuing "make -C docs create-docs" to rebuild the docs. This requires the txt2html and txt2man converters. Dependencies and download URLs for these packages can be found in the autogen.sh file.

GNU Autotools Commentary (from README.TOO)

What is this you say? Why all these directories, extra files and man pages? This entire package could be condensed down to one shell script. Isn't this a bit of overkill?

Of course it is. The purpose of this package is not to deliver a script you can use to copy DVDs (well, it does serve that purpose), the purpose of this package was for me to learn how to distribute a package using the GNU Autotools.

And I feel successful in that endeavor. The entire distribution (the parts that aren't original code or documentation) is created essentially from two files: configure.ac and Makefile.am. After learning how to use autoconf and automake language, I think they are wonderful tools.

Suppose I want to update something in the distribution (code or docs). All I need to do is make my changes to the sources, update the version in the configure.ac AC_INIT line, run the make target to create the documentation and then issue a 'make distcheck' command. That's it. Autotools does the rest. Very cool.

The distribution is thoroughly checked that it is entirely self-contained and that it will build in vpath mode (using a build directory separate from the source directory). The distribution is then automatically packaged in a tarball with the correct name and version and is ready for upload to an FTP server.

And, for what it is worth, I feel the Autotools are very easy to learn, use and maintain. Definately worthwile to learn if you have any thoughts of distributing software.

Things Still To Do (from TODO)

RMLCopyDVD 'things TO DO' file

  1. The entire idea needs to be ported to C++ to provide a GUI tool, but then it would just be another K3b wannabe. There is no sense reinventing the wheel, so for the time being, we'll just have to hope that K3b will eventually provide the capability to copy double-layer DVDs to single-layer media. But that may never happen, as double-layer drives and media may become so inexpensive that there will be no need to use single-layer media.
  2. The man pages suck. They are nothing more than the documentation and config files duplicated into man format.
  3. I'd like to figure out some kind of test suite so that I can check the Autotools running of it. However, before installation after the 'make', there isn't much I can do. I haven't yet tried to discover any DVD hardware and I don't know how many of the dependency programs are installed. Therefore, there just isn't much I can do to test anything. Suggestions are welcome.


Created by HTML::TextToHTML v2.43 on Friday, July 21 2006 at 4:04 pm

Valid XHTML 1.0 Transitional Valid CSS!