FAQ Infinite Pause

From DVD-Slideshow
Jump to: navigation, search

Slideshow with multiple vobs

Normally, a slideshow will pause a finite duration at each slide, then it will move on to the next. Sometimes, this is not the desired effect - instead, an "infinite" pause might be more appropriate to some projects. This will require the user to press the "Prev" or "Next" buttons on the remote control, and the DVD player will never advance by itself to the next slide, nor will go back by itself to the previous.

One way to accomplish that is to create a small VOB file for each slide, then "stitch" them together in the big XML file that defines the structure of the whole DVD. I created two scripts that do just that.

The first script, "make-text-multi", creates the .txt files used by dvd-slideshow to build the .vob files. The script assumes all pictures of this slideshow are in the same directory and the script is being run in the parent directory.


# Change this to 1 to render subtitles directly on picture.
# This feature is currently in SVN only.
# Will be included in version 0.8.0.
# With ver 0.7.* leave it at 0.

if [ $# -ne "1" ]; then
    echo "Usage: $0 picture-dir"


# strip trailing "/" if necessary

for i in `ls $dir`; do
    echo "$dir/$i:1:" > $dir-$i.txt
    if [ $render_subs -eq "1" ]; then
        echo "subtitle_type=render" >> $dir-$i.txt

echo "Done. Now you can edit the $dir-*.txt files"
echo "and add subtitles at the end of the first row."

After running this script, if you wish you can edit the .txt files and add subtitles for each slide. Then you will have to run the "make-slide-multi" script to build the actual VOBs and the XML chunk that describes them.


# by default the pause between slides is infinite
# (requires to push Prev/Next to navigate)
# replace it with value in seconds for a finite pause

if [ $# -ne "1" ]; then
    echo "Usage: $0 picture-dir"


# strip trailing "/" if necessary

for i in `ls $dir-*.txt`; do
    dvd-slideshow -f $i

cat /dev/null > $dir.xml
for i in `ls $dir-*.vob`; do
    echo -e "\t<vob file=\"$i\" pause=\"${pause}\"></vob>" >> $dir.xml

echo "Done. Now grab the $dir.xml file and integrate it into your DVD .xml"

This is it. Now you have all the VOBs that constitute the slideshow, plus an XML chunk that describes them. Get the XML part and paste it into the bigger XML file that describes your entire DVD. This is very similar to creating a normal one-VOB slideshow, except in that case you only had one XML line to integrate in the big XML file. Now there's one line for each image, otherwise it's the same. Example:

<dvdauthor dest="moto2005">
    <video />
    <pgc entry="root">
      <vob file="root.mpg" />
        <button>jump title 1;</button>        <button>jump title 2;</button>
      <vob file="TheYoungAndTheHopeless.mpg" chapters="00:00:00" />
      <post>call menu;</post>
        <vob file="2005_11_05-PB050002.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050003.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050004.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050005.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050009.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050010.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050011.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050012.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050013.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050014.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050015.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050016.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050017.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050018.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050019.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050020.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050021.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050022.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050023.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050024.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050025.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050026.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050027.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050028.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050029.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050030.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050031.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050032.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050033.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050034.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050035.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050036.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-PB050037.jpg.vob" pause="inf"></vob>
        <vob file="2005_11_05-00.vob"></vob>
      <post>call menu;</post>

This DVD has two titles: one movie and one slideshow. Please notice how the list of XML lines describing the slideshow is contained in its own pgc section. At the end, there's a jump to the menu.

Another thing to notice, the last image in the slideshow has no pause. It's best to use a dummy image, such as an empty black one (add it to the images directory before running the scripts), as the last image in the slideshow and don't define any pause for it. This way, the DVD player won't get stuck at the end and it will jump back to the menu when pushing the "Next" button. If the last image has pause="inf" like the rest, some DVD players may not jump back to the menu when pushing "Next" at the end.

Finally, it is believed that you can only include up to 99 pictures in such a slideshow, due to limitations of the DVD format specification. I am not sure if this is true, I never tested this limit. Anyway, 99 should be plenty for most purposes.