# Examples

## Running the tools

### Creating the DVD filesystem with dvdauthor

In these examples, `dvdauthor` is run as:

    rm -r test && dvdauthor -o test -x dvdauthor.xml

It will create or append to the directory specified, so it is a good idea to remove the directory before running `dvdauthor`, otherwise the resulting structure will not be playable.

### Adding subtitles with spumux

`spumux` takes an mpeg2 program stream as input and spits one back out, with subtitles multiplexed in. It is run as:

    spumux spumux.xml < input.mpg > output.mpg

### Creating a movie source from video and audio with mplex

`mplex` comes from the mjpegtools package, available at http://mjpeg.sourceforge.net. It can take independent video and audio streams and create a single mpeg2 stream.

    mplex -f 8 -o output.mpg video.m2v audio.m2a

### Creating video from bitmap images with mpeg2enc

When creating menus, it is necessary to create an mpeg2 video stream from one or more bitmap images. For NTSC you can do:

    ppmtoy4m | mpeg2enc -a 2 -n n -f 8 -o output.m2v

and for PAL you can do:

    ppmtoy4m | mpeg2enc -a 2 -n p -f 8 -o output.m2v

### Creating a blank audio track with toolame

When creating menus with no sound, it is necessary to multiplex in an empty sound file. At 48kHz, NTSC has 1601.6 audio samples per frame while PAL has 1920 audio samples per frame. Determine how many samples you need, and run:

    dd if=/dev/zero bs=4 count=number-of-samples | toolame -b 128 -s 48 /dev/stdin output.m2a

## Creating a title

### One chapter, one source

This forms the most basic DVD. THe DVD player will start playing the movie when the disc is inserted and will stop at the end.

    <dvdauthor>
        <vmgm />
        <titleset>
            <titles>
                <pgc>
                    <vob file="video.mpg" />
                </pgc>
            </titles>
        </titleset>
    </dvdauthor>

### Two chapters, two sources

Adding a second chapter is quite simple if it is in a separate file.

    <dvdauthor>
        <vmgm />
        <titleset>
            <titles>
                <pgc>
                    <vob file="video1.mpg" />
                    <vob file="video2.mpg" />
                </pgc>
            </titles>
        </titleset>
    </dvdauthor>

### One chapter, two sources

DVDAuthor normally creates one chapter per file. This can be overridden using `chapters="`foo`"`. The parameter is a comma separated list of timestamps of the form `[[`HH`:]`MM`:]`SS``.

    <dvdauthor>
        <vmgm />
        <titleset>
            <titles>
                <pgc>
                    <vob file="video1.mpg" chapters="0" />
                    <vob file="video2.mpg" />
                </pgc>
            </titles>
        </titleset>
    </dvdauthor>

### Two chapters, one source

This will create a movie with two chapters, one at the beginning (which is always required) and one five minutes into the video.

    <dvdauthor>
        <vmgm />
        <titleset>
            <titles>
                <pgc>
                    <vob file="video1.mpg" chapters="0,5:00" />
                </pgc>
            </titles>
        </titleset>
    </dvdauthor>

### Looping

Having `<post>`commands will alter what happens when playback reaches the end of your title. You can repeat the current title by jumping to the first chapter.

    <dvdauthor>
        <vmgm />
        <titleset>
            <titles>
                <pgc>
                    <vob file="video1.mpg" />
                    <post>
                        jump chapter 1;
                    </post>
                </pgc>
            </titles>
        </titleset>
    </dvdauthor>

### Pausing

Having `pause="`foo`"` will cause playback to pause for either the specified number of seconds or indefinitely (`inf`). This can be used either at the end of the title (by supplying it as an attribute to `pgc` or at the end of a particular source, as an attribute to `vob`. The following will pause indefinitely at the end of the title:

    <dvdauthor>
        <vmgm />
        <titleset>
            <titles>
                <pgc pause="inf">
                    <vob file="video1.mpg" />
                </pgc>
            </titles>
        </titleset>
    </dvdauthor>

while the following will pause for 5 seconds after the first chapter:

    <dvdauthor>
        <vmgm />
        <titleset>
            <titles>
                <pgc>
                    <vob file="video1.mpg" pause="5" />
                    <vob file="video2.mpg" />
                </pgc>
            </titles>
        </titleset>
    </dvdauthor>