Graeme's Wiki

convert any video to dvd using linux

Convert any video file to DVD with open source tools

You've just downloaded the new episode of your favourite video podcast, and you'd like to watch it on your big-screen TV. Unfortunately, the video is encoded in XviD or QuickTime format, which your DVD player doesn't support. Don't worry -- here's how you can convert any video file to DVD using dvdauthor and MPlayer.

Packages for both programs are available for most Linux distributions and BSDs, so you can install them on your favourite OS easily. Compiling the programs from source isn't difficult, as long as you get their dependencies right. Both programs provide adequate documentation about the installation. You can burn the final files to a DVD disc with the help of the growisofs utility from the dvd+rw-tools suite.

Converting the files to MPEG-2


First, you must convert your file to MPEG-2 for the video and to AC3 for the audio, in order to be compliant with the DVD video specifications. If the audio on your file is already encoded in AC3 format, you can use it as is without re-encoding it. Run this command to check the audio format of the file:
mplayer -vo dummy -ao dummy -identify your_video.avi 2>&1 | grep AUDIO_FORMAT | cut -d '=' -f 2
If it returns hwac3, the audio part of your file is encoded in AC3, and you can convert the file to MPEG-2 with the following command:
mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd -vf scale=720:576,harddup \
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:aspect=16/9 \
-ofps 25 -o your_video.mpg your_video.avi
If it isn't encoded in AC3, run this command:
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -vf scale=720:576,harddup \
-srate 48000 -af lavcresample=48000 \
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:aspect=16/9:\
acodec=ac3:abitrate=192 -ofps 25 -o your_video.mpg your_video.avi
The previous commands create an MPEG-2 file in phase-alternating line (PAL) format with an aspect ratio of 16:9. PAL is used in most of Europe (except France). If you want to create a National Television System Committee (NTSC) DVD, which is the North American video standard, replace scale=720:576 with scale=720:480 , keyint=15 with keyint=18 , and -ofps 25 with -ofps 30000/1001 . If you don't have a wide-screen TV, you should encode your file with an aspect ratio of 4:3 by replacing aspect=16/9 with aspect=4/3 .

For more information, check the MPlayer's man page, which provides detailed explanations about each option used in these commands.

This process should take some time to finish. My 1.5GHz Centrino laptop took about 25 minutes to convert a file with a one-hour runtime that was encoded in XviD.

Creating the DVD structure


Now you can use dvdauthor to create the layout of the DVD from the MPEG-2 file of your video. Although you can pass any options to dvdauthor directly from the command line, it's easier and more flexible to create an XML file with the appropriate options instead. Open your favorite editor and create a file called dvd.xml with the following contents:
<dvdauthor>
  <vmgm />
    <titleset>
      <titles>
        <pgc>
          <vob file="your_video.mpg" chapters="0,10:00,20:00,30:00,40:00,50:00" />
        </pgc>
      </titles>
    </titleset>
</dvdauthor>
I split my hour-long video into six 10-minute chapters. Adjust the chapters= option for your video, or remove the option from your XML file if you don't want chapters.

dvdauthor -o dvd -x dvd.xml

The above command will create the layout of the DVD. The -o switch defines the output directory, and -x is used for the XML file. This command takes five to 10 minutes, depending on your video size and your CPU speed. Once it completes, you'll have a directory named dvd with two sub-directories: AUDIO_TS and VIDEO_TS. Before burning the video to a disc, you can verify that everything is correct by running the following command. This will play the video directly from the 'dvd' directory, as if it is a actual DVD disc, to make sure the format and layout is correct.

mplayer dvd:// -dvd-device ./dvd

If the video plays correctly, you can burn it onto a DVD disc with growisofs, as follows.

growisofs -dvd-compat -Z /dev/dvdrw -dvd-video ./dvd/

Make sure to replace /dev/dvdrw with the device name of your DVD recorder.

The only thing left is to make some popcorn, get your favorite beverage, and enjoy the show.

Original article appeared at http://www.linux.com/articles/53702. I put it here for archiving purposes.