Create a pal dvd with a menu using dvdauthor in Slackware Linux

tuesday 2016 november 01

 

For starters a picture of what your main working directory, /home/user/dvd-project/projectname/ looks like when everything is done and burned;

dvdauthor directory content

 

Project directory layout;

/home/user/dvd-project/projectname/dvd
/home/user/dvd-project/projectname/video-sources
/home/user/dvd-project/projectname/image-sources

 

video-sources

vhs tape vcr, scart out
scart to composite adapter
ivtv pvr150 tv-card composite in

After pressing play on the vcr i run This bash shell script; ~ivtv/script/capture/# ./capture-composite01.sh

#!/bin/sh

V4L2CTL="/usr/local/bin/v4l2-ctl"

NAME="projectname"

NOW="$( date +%Y%m%d%H%M%S )"

$V4L2CTL --set-input=2 --set-standard=pal # Composite 1

cat /dev/video0 > /home/user/capture/$NAME-$NOW.mpg

exit 0

The script tells the ivtv card which input to use and where to write the .mpg video file to. Using the cat command, yes it does. What a great device this capture card is. When i am done captureing video i press ctrl-c to end capture script.

To start the work towards a dvd with a menu using dvdauthor; keeping video source files as .mpg is a good choice.
I use Openshot video editor to review and cut downloaded-from-video-tape .mpg video files into .mpg video files.
part01.mpg, part02.mpg etc Or w/e you will use in your dvdauthor.xml title definitions.
These files go into /home/user/dvd-project/projectname/video-sources/ directory.
The files downloaded from the capture card can be kept in ~video-sources/ProjectName/ directory.

 

image-sources

menu background image
PAL Standard
width: 720
height: 576
x-axis: 75dpi
y-axis: 80dpi

cd /home/user/dvd-project/projectname/video-sources/
mplayer -vf screenshot part01.mpg

Press 's' writes screenshot0000x.png in current directory
Make all the screenshots you need.
cd ..
Open file manager.
Move the screenshots to /home/user/dvd-project/projectname/image-sources/ directory.
Review and throw away what is not needed.
load screenshot image in Gimp. It might be a 720x1024 image.
Select 720x576 relevant pixels, copy to new image, autocrop. Set dpi resolution to 75x80.
Export to menubg-720x576.jpg, save as menubg-720x576.xcf.

The menu background need not be an image from the video.
On top of the background could be a bunch of smaller images (former screenshots) each depicting a chapter.
Buttons could be around or next to these in order to select them using the dvd player`s remote control.

Load menubg-720x576.xcf in Gimp, use this image to lay out the dvd menu buttons on top of it.
Lay out the buttons on top of menubg-720x576.xcf in new separate layers.
A layer for each button.
then delete everything but not the layers in which the buttons are and save as buttons.xcf.
Then i use buttons.xcf to make the three buttons_ images from, by color select, fill.

buttons_select --> 00FF00 GREEN
buttons_highlight --> 0000FF BLUE
buttons_red --> FF0000 RED

The buttons_ image is like the menubackground image 720x576 dpi75x80.
The buttons_ image must have a background (or bottom) layer that must be transparent.
The buttons_ image itself must be transparent, only the pixels making up the buttons must be opaque.
Set image mode to Indexed to 3 .. (or if that doesnt work .. 4) colors
export to png, with
Save background color
Save resolution
Checked.

That was a lot of work. More to be done.
Copy (or move, you choice) menubg-720x576.jpg, buttons_select.png, buttons_highlight.png, buttons_red.png
from ~projectname/image-sources/ to ~projectname directory.

Make sure your command line terminal is in /home/user/dvd-project/projectname directory.
cd /home/user/dvd-project/projectname/

 

Create menu background movie menubg_final.mpg

Convert the background JPG file into a M2V video file;

jpeg2yuv -n 50 -I p -f 25 -j menubg-720x576.jpg | mpeg2enc -n p -f 8 -o menubg.m2v

Add a silent sound stream to the menubg.m2v and convert to .mpg;

mplex -f 8 -o menubg.mpg menubg.m2v silent.ac3

Add the button images to the menubg_final.mpg;

spumux spumux.xml < menubg.mpg > menubg_final.mpg

DVDAuthor::spumux, version 0.7.1.
Build options: gnugetopt imagemagick iconv freetype fribidi fontconfig
Send bug reports to <dvdauthor-users@lists.sourceforge.net>

INFO: no default video format, must explicitly specify NTSC or PAL
INFO: Picture buttons_red.png had 2 colors
INFO: Picture buttons_highlight.png had 2 colors
INFO: Picture buttons_select.png had 2 colors
INFO: Autodetect 0 = 439x90-468x114
INFO: Autodetect 1 = 470x88-485x110
INFO: Autodetect 2 = 490x88-495x94
INFO: Autodetect 3 = 550x88-555x94
INFO: Autodetect 4 = 490x94-495x110
INFO: Autodetect 5 = 498x94-512x110
INFO: Autodetect 6 = 525x94-547x110
INFO: Autodetect 7 = 550x94-555x110
INFO: Autodetect 8 = 558x88-573x110
INFO: Autodetect 9 = 577x94-592x110
.....................................
INFO: Autodetect 45 = 263x428-278x442
INFO: Autodetect 46 = 281x428-294x442
INFO: Autodetect 47 = 296x428-309x442
INFO: Autodetect 48 = 312x428-323x442
INFO: Autodetect 49 = 324x428-339x442
INFO: Autodetect 50 = 342x428-357x442
INFO: Autodetect 51 = 361x428-375x442
INFO: Pickbuttongroups, success with 1 groups, useimg=1
INFO: Found EOF in .sub file.
INFO: Max_sub_size=3708
INFO: 1 subtitles added, 0 subtitles skipped, stream: 32, offset: 0.16
user@slackware# ~/dvd-project/projectname <

Above you can see spumux detecting 52 buttons (0 to 51) and adding them to menubg_final.mpg.
spumux counts the buttons from zero but dvdauthor count the titles from one.
so in dvdauthor.xml button0 -> plays the 1st title in your dvdauthor.xml.
What is important for spumux to be able to see buttons is it detecting 2 colors in each of the buttons_ images.

Here is a spumux.xml example;

<subpictures>
<stream>
<spu
force="yes"
start="00:00:00.00"
image="buttons_red.png"
select="buttons_select.png"
highlight="buttons_highlight.png"
autooutline="infer"
autoorder="rows"
outlinewidth="30"
>
</spu>
</stream>
</subpictures>

outlinewidth="30" <---- PLAY WITH THIS if spumux detects too many or too few buttons!

When your menubg_final.mpg was written by spumux then
Copy menubg_final.mpg to /home/user/dvd-project/projectname/video-sources directory.

Be your command line terminal in /home/user/dvd-project/projectname directory from here on.

Edit your dvdauthor.xml

<!-- dvdauthor20160928.xml -->
<!-- <video format="pal"></video> -->
<dvdauthor dest="/home/user/dvd-project/projectname/dvd/">

<vmgm>
<menus>
<pgc>
<post>jump title 1;</post> <!-- here we tell the dvd player to play ch01.mpg when vob file menubg_final.mpg ends -->
<button>jump title 1;</button>
<button>jump title 2;</button>
<vob file="video-sources/menubg_final.mpg" pause="120" />
</pgc>
</menus>
</vmgm>

<titleset>

<titles>

<pgc>
<!-- <post>jump title 2;</post> --> <!-- here we tell the dvd player to play ch02.mpg after playing this title -->
<post>call vmgm menu 1;</post>
<vob file="video-sources/ch01.mpg" chapters="00:00:00,00:05:00,00:10:00,00:15:00,00:20:00,00:25:00,00:30:00,00:35:00" />
<!-- the above chapters divisions are for the skip buttons on the dvd remote; a press forwards 5 minutes into the video -->
</pgc>

<pgc>
<!-- <post>jump title 3;</post> -->
<post>call vmgm menu 1;</post> <!-- here we tell the dvd player to play the menu after playing this title -->
<vob file="video-sources/ch02.mpg" chapters="00:00:00,00:00:30,00:01:00" />
</pgc>

</titles>

</titleset>

</dvdauthor>

The above example dvdauthor.xml will result in a dvd with a menu showing 2 chapters that can be chosen from using 2 buttons. On the dvd player`s remote one can select and then press Enter or Play. The dvd player will return to the menu after player a chapter.

 

Run dvdauthor

Create the dvd files;

dvdauthor -x dvdauthor.xml

Test the dvd files;

xine dvd:/home/user/dvd-project/projectname/dvd/

test buttons and all dvd player functions for correct operating using the mouse of your computer.

Prep for burning the dvd.iso;
As root for remainder or this document;

cd /home/user/dvd-project/projectname/dvd/
chown -R root:root AUDIO_TS/ VIDEO_TS/
chmod 500 AUDIO_TS/ VIDEO_TS/
chmod 400 VIDEO_TS/*
cd ..

Make dvd.iso;

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

Burn;

growisofs -dvd-compat -Z /dev/dvd=dvd.iso

--------------------------------------

resources;

How to author a DVD in Linux
http://www.kaybee.org/kirk/dvdauthor.html

Creating a DVD with a menu
https://www.mythtv.org/wiki/Creating_a_DVD_with_a_menu

Creating DVD Video with Linux
http://radagast.ca/linux/dvd_authoring/dvd_authoring.html