When shooting friends’ wedding, I decided it would be “way cool” to give them – beside an album (of course) – a DVD with a slideshow of the best pictures of D-Day. This is so simple to send to friends abroad, you just need a TV or a computer to play it and you can also include higher definition pictures if someone wants to have prints.
Now there is a set of tools that allows to do just that on Linux: dvd-slideshow. You start with preparing your slideshow (defining pictures, timing, transitions…) then create a DVD menu and generate an ISO which you burn on a DVD.
Linux being Linux, dvd-slideshow is command line based. And no, it is not as bad as it looks. However, this entry is based on a several months old successful experience with dvd-slideshow, so there may be some inaccuracies…
Preparing your slideshow
Before generating a slideshow, you need to produce an input file which specifies which pictures to use, how long each picture stays on the screen and which transition effect is applied.
The simplest way to do it is to put all of your pictures in one directory and run dir2slideshow. This will create the input file for the next step. Although there are many configuration options, this command should give you acceptable defaults:
dir2slideshow -n 'test slideshow' -t 5 -c 1 slideshow_pictures
This asks to take all the (JPEG or PNG) pictures from slideshow_pictures, show them for 5 seconds and then crossfade to the next picture for 1 second. It generates a test_slideshow.txt input file. Pretty standard defaults, but the link above gives you a description of all the options available.
An interesting switch is -p if you want to generate a PAL slideshow instead of default NTSC.
You have then a file describing your slideshow’s characteristics. Its syntax is fairly straightforward; you can hand-edit it if needed.
Generating the slideshow
Once you are happy with your input file, generating the slideshow is something as simple as typing:
dvd-slideshow -n 'test slideshow' -f test_slideshow.txt
If you add the switch:
it will add an audio track to the slideshow. The result will be 2 files: test_slideshow.xml and test_slideshow.vob. You can try playing your slideshow with mplayer:
If you are happy with it, you can move to defining the menu.
Making DVD menus
In my case, I needed a menu to allow people to either watch part of the images (church, group pictures, portraits) or all of them. So for each entry menu, I generated a new slideshow – yes that means that I ended up having pictures twice but given how much room there is on a DVD and the definition of the images, this wasn’t a problem (the final ISO was 600 Mb).
Once you have decided which menu entries you need and have a .vob and .xml file for each of them, you can move to the next utility: dvd-menu
Now you can chose which theme you want to use for your menu. You can download a few standard ones here. You can use a theme throughout your slideshow – including printing photo titles with a matching font and color or theme matching transitions.
I like to have rather simple design, so I just to adapted the image, font and menu title from the wedding theme – more info on theme format is available here. The goal was to present photo the best possible way, not to show off all of dvd-slideshow’s bells and whistles. So I ended up with this command:
dvd-menu -p \
-t ' Toutes les photos - Všechny fotky' \
-t ' Cérémonie - Svatební obřad' \
-t ' Photos de groupes - Skupinové fotky' \
-t ' Portraits des Mariés - Potrét manželů' \
-t 'Soirée aux 3 Barbus - Večer u třech vousatých' \
-t ' Portraits des invités - Portrét hostů' \
-f 'Toutes_les_photos.xml' \
-f 'Ceremonie.xml' \
-f 'Photos_de_Groupes.xml' \
-f 'Portraits_des_maries.xml' \
-f 'Repas_aux_3_Barbus.xml' \
-f 'Portraits_des_invites.xml' \
-n 'Florian & Anna' \
-theme wedding -fadein -fadeout
This basically connects .xml files to the buttons (labeled in French / Slovaquian). I used the -p switch to use the PAL standard. -n gives the DVD title and -theme, well, you guess it. This command creates a subdirectory “dvd_fs” where which now also has menus. You can test it with xine by typing:
xine -g -u 0 dvd:"`pwd`/dvd_fs/"
Generating an ISO file
At that stage, you may want to include a few extras to your DVD. I added high definition JPEG of the images, in case anyone wanted to have prints. Just drop them in your dvd_fs directory.
From there, typing:
mkisofs -dvd-video -udf -o dvd.iso dvd_fs
will create the dvd.iso file which you can burn on your DVD.
What about GUI?
There are 3 GUI tools for dvd-slideshow. Basically, they allow you to chose your images, duration, effects, transitions and will invoke dvd-slideshow for you. Unfortunately, none of them is really mature, simple and easy to use – hence this entry based on using the command line tools.
- The first one is slideshow creator which is a KDE application based on Gambas. It does a good job, although its last update was from June 2006, so it doesn’t pick the latest additions to dvd-slideshow (version 0.80).
- There also is jDVDSlideshow which is java-based. I got it running with sun-java(32bits). It didn’t like me changing any slideshow preferences (PAL / NTSC, etc) having dvd-slideshow complaining about a malformed line. Still, it does a decent job at generating a simple slideshow.
- Lastly, there is Q DVD-author which is more than a slideshow creation program. It will allow you however to create slideshow, although it doesn’t offer a front end for all the options available in dvd-slideshow. You can also use it to generate the menus, apparently.
Last bullet points
- In high-quality mode, dvd-slideshow will resize your images to JPEG of 720×480 possibly applying a bit of unsharp (if given the -sharpen parameter). A good alternative (if you are as picky as me) is to create your images directly at the right size using Phatch or an ImageMagick / bash script (with proper sharpening)
- From a photographer’s perspective, the images quality on TV is quite appalling. Still, a DVD is a nice give-out that isn’t expensive and that anyone can enjoy.
- I can only recommend that you pay a visit to the dvd-slideshow site where you will find lots of details a more information about how to make most of this set of utilities. This entry is mainly a rip-off of the complete example you find on their site.
- One last thing: if your dvd-slideshow complains about “error during ffmpeg execution” when generating the .vob files, try changing ac3=1 to ac3=0 in /usr/bin/dvd-slideshow, line 561. It did the trick for me.
Here is what my DVD menu looked like:
and one of my favorite images from the wedding: