- Written by Wolfgang Wershofen
- Category: Documentation
dvdwizard is a wrapper-script which incorporates a fully automated creation of a DVD-structure with Chapters and menus from one or more mpeg-streams. This is done by several "sub-scripts" and various freely available tools.
Needless to say, that dvdwizard is distributed under the GPL as well.
Here's the idea: Just issue
#> dvdwizard my_movie.mpg
and go grab yourself a beer, have lunch oder whatever you like to do for about half an hour (depending on your machine's speed - for me it's 30 minutes on an Athlon 1.4 GHz, 512 MB).
Come back, issue
#> xine dvd://`pwd`/dvd/
and watch your DVD or burn it and take it to your stand-alone DVD.
dvdwizard Step by Step
dvdwizard takes the MPEG-streams specified on the command line and create a DVD structure in a directory. This directory can be burned on a DVD and should run on a stand-alone DVD-player. The following steps will be done to accomplish this task:
1. Create Chapter-Screenshots for the Chapter-Selection Menu
To create a nice and graphical Chapter-Selection menu (see 3. below), a frame from the beginning of every chapter is captured, which will be converted to a thumbnail and shown as a button for the menu. To produce this screenshots, dvdwizard creates a temporary DVD-structure, which will not yet have any menus but will have chapters.
The definition of the chapter-timecodes may either generated by dvdwizard (Default: a chapter every 5 minutes) or specified manually on the commandline (dvdwizard -c <interval|string|file>). Here are the three possibilities:
- Specify a fix interval in seconds(e.g. dvdwizard -c 600 - a chapter every 10 minutes)b. Specify a string with the desired timecodes in the same format, dvdauthor expects them: [h:][mm:]ss[.frac], where <frac> are ms, to make frame accurate specifications. This frac must be a multiple of 40 (1 Frame = 40 ms for PAL), e.g. dvdwizard -c 39.400,5:12.640,1:10:42.080 starts a chapter at 39 seconds and 10 frames, 5 minutes, 12 seconds and 16 frames and the last at 1 hour, 10 minutes, 42 seconds and 2 frames.
- dvdauthor may not be frame accurate, if the specified frame is not an I-Frame. In this case, dvdauthor puts the chapter boundary on the most recent I-frame before the specified timecode.c. Specify a text file containing the timecodes as described unter b. this way, you may note down your chapter breakpoints in a file and pass it to dvdwizard.
- Chapter specification will be syntax-checked, because dvdauthor simply ignores misfigured timecodes and you end up with less chapters than specified. Will be noticed too late in most cases.
The temporary DVD-structure, which will be build with these chapters, is used for speeding up the process. With this DVD, transcode can extract the frames in DVD-chapter-mode, which is much faster than seeking through the whole mpeg-stream for the desired frames. On my box (Athlon 1.4 GHz), transcode seeks with about 35 to 40 fps. With this rate, it would take approx. 90 minutes to get through a 2 hour movie. In chapter-mode, transcode doesn't need more than 5 minutes for the same task, so the 10 minutes to create the DVD structure are a good investment.
To extract the best possible screenshot from the beginning of each chapter, 10 frames out of the first 200 frames of the chapter are transcoded to jpegs. The frame with the largest filesize is selected as the chapter-screenshot. This is done to avoid having black screenshots if a chapter starts with a fade-in. the larger the jpeg is, the more different colors and forms must be in the frame. Works perfect in my opinion.
2. Create the DVD-Main-Menu (VMGM, Title-Menu)
The VMGM menu normally shows the Titel of the DVD and lets you choose some options like running a movie from start or go to the movies selection menus. The vmgm created by dvdwizard will be just like this, but since dvdwizard-0.5 it holds one menu page for every titleset on the DVD.
On each page, there will be at least two options: Start the movie from the beginning or go to the chapter selections menu. More options may be available, if the movie has more menus to choose from (e.g. Audio, Subtitle, Info).
dvdwizard creates a background-Picture for the menu internally, however there is a possibility customize the looks via config file and command line options. Additionally, you may specify the title of the movie with (dvdwizard -T <string>) or let dvdwizard guess the title from the filename of the first mpeg-file. However, the result of this title-guessing may be poor depending on the name of your files. dvdwizard replaces all underscores to whitespace and removes every uppercase words at the beginning and all fully numeric words at the end of the filename. This is due to the way, I use dvdwizard to operate the DVB-streams of my digital Satellite Set-Top-Box. The streamed files have names like TV_STATION_This_is_the_movie_title_20030321_201502.mpg, so I get rid of the TV-station name at the beginning and the timestamps at the end.
3. Create Titleset-menus (VTSM, root, ptt, audio, subtitle)
Just as the vmgm menu, also vtsm menus will be created for each titleset. On the bottom of the menu, you'll find text buttons for navigating within the menus. If multiple pages are used for one menu, you may navigate through the pages by pressing the left and right keys on your remote control. The rest of the menu is used for the chapter thumbnails, with which one can directly jump to a desired chapter.
In the same manner, audio and subtitle selection menus will be produced, if the input mpeg stream has more than one audio and/or subtitle tracks.
4. Create xml-file for dvdauthor
During the described steps before, the commands for dvdauthor are written into an xml-file "on-the-fly", which will be used for authoring the final DVD structure. As default, this file is named dvdwizard.xml but you may specify a different name on the command-line (dvdwizard -x <file>).
5. Create final DVD-structure
As the last step, the final DVD structure is authored with all menus, chapters and things into a subdirectory called ./dvd, if not specified otherwise on the command-line (dvdwizard -o <dir>).
After finishing these steps, the DVD can be played directly from that directory, for instance with xine. Just issue
#> xine dvd://"`pwd`"/dvd/
in the directory you called dvdwizard in and check, if everything went well. If you're satisfied with the result, you can burn this directory onto DVD.
After successfully running dvdwizard, you'll find the following objects in your working directory (as long as no other target directories or filenames have been specified in the config file or command line):
|./dvd||Created DVD structure|
|./vmgm||Holds the main menu (VMGM) pages|
|./vtsm/vts[1-9]||Holds the titleset menus (one subdirectory for every titleset)|
|./cpics/VTS[1-9]||Holds the created Chapter Screenshots (one subdirectory for every titleset)|
|dvdwizard.cmd||All calls to dvdwizard-scripts including all parameters|
|dvdwizard.log||Logfile with all program output|
|dvdwizard.xml||XML-definition for dvdauthor|
The vmgm and vtsm subdirectories not only hold the ready-made menu mpeg-files but also the objects neccessary to create them (spumux xml, background ppm, button masks). This way, you may easily adjust the looks of each menu to your liking.
dvdwizard tries in general not to add further restrictions beyond the DVD specifications, but there are a few limitations, which are caused by dvdwizard and have nothing to do with the functionallity of e.g. dvdauthor or the DVD specs. These are the points:
- max. 9 titlesets per DVD (according to DVD-specs up to 99 titlesets possible)
- only 1 title within a titleset (according to DVD-specs up to 99 titles per titleset)
- only 8 subtitle tracks per titleset (according to DVD-specs up to 32 titles per titleset)
- no multi-angle DVDs
All these restrictions are in place due to the graphical presentation and/or the missing Know-How or interests of the author. There are no plans to get rid of these limitations in future releases.