How to Create a Video DVD from the CLI

It is very easy to create a video DVD out of your existing video files, using only command line tools.

Universal solution using ffmpeg

The original video files can be in any format that ffmpeg supports, so that includes just about everything.

The tools you will need for this are ffmpeg and dvdauthor, so make sure you have them first (run as root):

slapt-get -i ffmpeg dvdauthor

Using ffmpeg you can convert any video file to an mpg file, that dvdauthor can use later:

ffmpeg -i video.avi -aspect 16:9 -target pal-dvd dvd.mpg

You might want to change the aspect ratio to 4:3 or the target to ntsc-dvd, depending on your preferences and region. If you need to define video bitrate use the -b bitrate option:

ffmpeg -i video.avi -aspect 16:9 -target pal-dvd  -b 1800000 dvd.mpg

I’m not sure what units are used but the above example gives bitrate ca. 2300kbits/s which is usually enough for typical avi. Bigger bitrate gives better quality but a larger file. Just test the output and adjust the bitrate according to your needs.

Now add the mpg file to your project using dvdauthor:

dvdauthor -o dvd/ -t dvd.mpg

You can convert and add any number of files this way. After you’ve added all of them, run:

export VIDEO_FORMAT=PAL 
dvdauthor -o dvd/ -T

You might want to set VIDEO_FORMAT=NTSC instead.

And then you can create an iso with mkisofs:

mkisofs -dvd-video -o dvd.iso dvd/

which you can burn to a DVD disc with any DVD burning software. cdrecord from the command line will do just fine.

Advanced usage of dvdauthor

One can generate an XML file in order to define loops, pauses or create chapters, once the file is ready the usage is as follows:

export VIDEO_FORMAT=PAL 
dvdauthor -x dvd.xml -o dvd/

Examples of the XML are here

Mencoder as alternative to ffmpeg

If ffmpeg fails to convert properly one can use mencoder (PAL version example)

 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=2400:keyint=15:aspect=16/9:acodec=ac3:abitrate=192 \
 -ofps 25 -o output-filename source-filename

What can be adjusted here is:

#vbitrate - up to 9800 (the bigger bitrate the better quality but the larger the file)
#aspect - 16/9 or 4/3

Detailed description of DVD authoring with mencoder

one can use all filters available for mplayer, i.e. deinterlace (several methods for this) by modifying the -vf section :

-vf pullup,softskip,scale=720:576,harddup

another method

-vf pp=fd,scale=720:576,harddup 

one can crop the image by modifying the line

-vf crop=720:470:0:50,scale=720:576,harddup

Mplayer manual gives detailed description of available filters The usage may not be very straightforward but once learnt allows many operations on the image and sound.