<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://linupedia.org/wiki/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Puppe</id>
	<title>Linupedia.org - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://linupedia.org/wiki/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Puppe"/>
	<link rel="alternate" type="text/html" href="https://linupedia.org/opensuse/Spezial:Beitr%C3%A4ge/Puppe"/>
	<updated>2026-04-03T19:08:10Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://linupedia.org/wiki/mediawiki/index.php?title=Animiertes_DVD-Menu&amp;diff=8378</id>
		<title>Animiertes DVD-Menu</title>
		<link rel="alternate" type="text/html" href="https://linupedia.org/wiki/mediawiki/index.php?title=Animiertes_DVD-Menu&amp;diff=8378"/>
		<updated>2006-11-27T08:09:19Z</updated>

		<summary type="html">&lt;p&gt;Puppe: geändert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Script zum Erzeugen eines animierten DVD-Video-Menu ==&lt;br /&gt;
&lt;br /&gt;
Dieses Script erzeugt aus Videodateien ein animiertes Video-Menü, welches Mittels '''dvdauthor''' zum Erstellen von Video-DVD benutzt werden kann. Es kommen dabei verschiedene Techniken zum Einsatz. Zum einen werden Filterfunktionen des '''transcode''' Befehles benutzt, und zum anderen werden die Videosequenzen komplett in Einzelbilder zerlegt und mittels '''scriptgesteuerter Grafikbearbeitung''' bearbeitet. Mit solchen Techniken lassen sich auch selber kleine Videoeffekte erzeugen, für die es noch keine greifbaren Programme oder Tools gibt. &lt;br /&gt;
&lt;br /&gt;
Bei der manuellen Erstellung solcher Menüs gibt es immer wieder Probleme mit der Erstellung der Masken für '''spumux'''. Das Script erzeugt diese speziellen Bilddateien gleich mit und führt den spumux-Befehl auch gleich aus. Das Ergebniss ist eine Datei Namens ''menu_finale.vob'' welche innerhalb von dvdauthor als Menü bei der Video-DVD Erstellung verwendet werden kann. &lt;br /&gt;
  &lt;br /&gt;
'''Beschreibung und Erklärungen :''' [[Mastering per Script]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== videomenu.sh ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# Scriptname: videomenu.sh&lt;br /&gt;
# Script zum Erzeugen eines DVD-Menus aus mehreren Videosequenzen&lt;br /&gt;
# Beschreibung und Dokumentation: http://www.linux-club.de/faq/Mastering_per_Script&lt;br /&gt;
&lt;br /&gt;
#-------manuelle Konfiguration des Scriptes ----------#&lt;br /&gt;
TIME=25                        #Zeit in Sekunden fuer Menu (12-120)&lt;br /&gt;
TEXT1=&amp;quot;Linux-Club&amp;quot;             #Titel der DVD nach 3 Sekunden im ersten Drittel&lt;br /&gt;
TEXT2=&amp;quot;DVD-Authoring&amp;quot;          #Titel der DVD in Mitte &lt;br /&gt;
TEXT3=&amp;quot;DEMO DVD-Menu&amp;quot;          #Titel der DVD in letzem Drittel bis 3 Sekunden vor Ende&lt;br /&gt;
LOGO=&amp;quot;/home/user/bilder/Musterlogo.png&amp;quot;               #Logo 64x64&lt;br /&gt;
G=&amp;quot;120x90&amp;quot;                                            #Framegroesse 200x152;160x120;120x90&lt;br /&gt;
ORGINAL=&amp;quot;/media/cdrecorder/video_ts/vts_05_1.vob&amp;quot;     #Hintergrundvideo&lt;br /&gt;
FRAME[1]=&amp;quot;/media/cdrecorder/video_ts/vts_02_1.vob&amp;quot;    #Framevideo 1&lt;br /&gt;
FRAME[2]=&amp;quot;/media/cdrecorder/video_ts/vts_14_1.vob&amp;quot;    #Framevideo 2&lt;br /&gt;
FRAME[3]=&amp;quot;/media/cdrecorder/video_ts/vts_03_1.vob&amp;quot;    #Framevideo 3&lt;br /&gt;
FRAME[4]=&amp;quot;/media/cdrecorder/video_ts/vts_07_1.vob&amp;quot;    #Framevideo 4&lt;br /&gt;
FRAME[5]=&amp;quot;/media/cdrecorder/video_ts/vts_09_1.vob&amp;quot;    #Framevideo 5&lt;br /&gt;
FRAME[6]=&amp;quot;/media/cdrecorder/video_ts/vts_08_1.vob&amp;quot;    #Framevideo 6&lt;br /&gt;
SOUND=&amp;quot;/home/user/sound/soundfile.ac3&amp;quot;                #Soundfile AC-3&lt;br /&gt;
FILMNAME[1]=&amp;quot;Film Nr. 1&amp;quot;       #Frame-Name 1&lt;br /&gt;
FILMNAME[2]=&amp;quot;Film Nr. 2&amp;quot;       #Frame-Name 2&lt;br /&gt;
FILMNAME[3]=&amp;quot;Film Nr. 3&amp;quot;       #Frame-Name 3&lt;br /&gt;
FILMNAME[4]=&amp;quot;Film Nr. 4&amp;quot;       #Frame-Name 4&lt;br /&gt;
FILMNAME[5]=&amp;quot;Film Nr. 5&amp;quot;       #Frame-Name 5&lt;br /&gt;
FILMNAME[6]=&amp;quot;Film Nr. 6&amp;quot;       #Frame-Name 6&lt;br /&gt;
ZAHL=6          #Anzahl der Frames  im Videomenu&lt;br /&gt;
A[1]=&amp;quot;81x80&amp;quot;    #Pos Frame 1 bei 120x90&lt;br /&gt;
A[2]=&amp;quot;227x80&amp;quot;   #Pos Frame 2 bei 120x90&lt;br /&gt;
A[3]=&amp;quot;373x80&amp;quot;   #Pos Frame 3 bei 120x90&lt;br /&gt;
A[4]=&amp;quot;519x80&amp;quot;   #Pos Frame 4 bei 120x90&lt;br /&gt;
A[5]=&amp;quot;81x380&amp;quot;   #Pos Frame 5 bei 120x90&lt;br /&gt;
A[6]=&amp;quot;519x380&amp;quot;  #Pos Frame 6 bei 120x90&lt;br /&gt;
FONT=&amp;quot;/usr/X11R6/lib/X11/fonts/truetype/SUSESerif-Bold.ttf&amp;quot;&lt;br /&gt;
#----- Ende fuer manuelle Konfigurationseingaben------#&lt;br /&gt;
&lt;br /&gt;
#----------- Scriptinterne Konfiguration -------------#&lt;br /&gt;
BORDER=&amp;quot; -frame 5 -geometry +0+0 &amp;quot;&lt;br /&gt;
COLOR=&amp;quot; -mattecolor grey &amp;quot;&lt;br /&gt;
M[1]=&amp;quot;3x3&amp;quot;    #Maske1&lt;br /&gt;
M[2]=&amp;quot;0x0&amp;quot;    #Maske2&lt;br /&gt;
ANZAHL=$[$TIME*25] &lt;br /&gt;
RANGE1=75-$[$ANZAHL/3]&lt;br /&gt;
RANGE2=$[$ANZAHL/3]-$[$ANZAHL-$ANZAHL/3]&lt;br /&gt;
RANGE3=$[$ANZAHL-$ANZAHL/3]-$[$ANZAHL-75]&lt;br /&gt;
&lt;br /&gt;
#-------- Videos als Bilder einlesen -----------------#&lt;br /&gt;
transcode -i $ORGINAL -o backr -Z 720x576  -y ppm -c 0-$ANZAHL&lt;br /&gt;
for i in `seq 1 $ZAHL`&lt;br /&gt;
do&lt;br /&gt;
transcode -i ${FRAME[i]} -o frame$i -Z $G -y ppm -c 0-$ANZAHL&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#------- Videobilder bearbeiten ----------------------#&lt;br /&gt;
montage  $BORDER -label &amp;quot;Test&amp;quot; frame1000000.ppm geotest.png&lt;br /&gt;
GEO=`identify -verbose geotest.png | grep Geometry: |cut -d: -f2`&lt;br /&gt;
D=$[(${GEO%x*}-${G%x*})/2]x$[(${GEO#*x}-22-${G#*x})/2]&lt;br /&gt;
for i in `seq 1 $ZAHL`&lt;br /&gt;
  do&lt;br /&gt;
  X0[$i]=$[${A[$i]%x*}-${D%x*}]&lt;br /&gt;
  Y0[$i]=$[${A[$i]#*x}-${D#*x}]&lt;br /&gt;
done  &lt;br /&gt;
for i in {0,1,2}{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9} &lt;br /&gt;
  do&lt;br /&gt;
  if [ -f backr00$i.ppm ]; then&lt;br /&gt;
   echo -n &amp;quot;frame $i&amp;quot;&lt;br /&gt;
   for j in `seq 1 $ZAHL`&lt;br /&gt;
    do   &lt;br /&gt;
     montage -quality 100 $BORDER $COLOR -label &amp;quot;${FILMNAME[$j]}&amp;quot; -font $FONT \&lt;br /&gt;
      frame${j}00${i}.ppm frame${j}00${i}.png&lt;br /&gt;
    done&lt;br /&gt;
 &lt;br /&gt;
     mogrify -quality 100 \&lt;br /&gt;
    -draw &amp;quot;image over ${X0[1]},${Y0[1]} 0,0 frame100$i.png&amp;quot; \&lt;br /&gt;
    -draw &amp;quot;image over ${X0[2]},${Y0[2]} 0,0 frame200$i.png&amp;quot; \&lt;br /&gt;
    -draw &amp;quot;image over ${X0[3]},${Y0[3]} 0,0 frame300$i.png&amp;quot; \&lt;br /&gt;
    -draw &amp;quot;image over ${X0[4]},${Y0[4]} 0,0 frame400$i.png&amp;quot; \&lt;br /&gt;
    -draw &amp;quot;image over ${X0[5]},${Y0[5]} 0,0 frame500$i.png&amp;quot; \&lt;br /&gt;
    -draw &amp;quot;image over ${X0[6]},${Y0[6]} 0,0 frame600$i.png&amp;quot; \&lt;br /&gt;
     backr00$i.ppm 2&amp;gt;/dev/null&lt;br /&gt;
    rm frame?00$i.png  frame?00$i.ppm &amp;amp;&lt;br /&gt;
   echo -en '\r'&lt;br /&gt;
  else break&lt;br /&gt;
  fi &lt;br /&gt;
done&lt;br /&gt;
ls backr00*.ppm | sort &amp;gt; bilder-list&lt;br /&gt;
&lt;br /&gt;
#--Bilder Schrift und Sound  zu Video zusammensetzen -------#&lt;br /&gt;
transcode -H 0 -i bilder-list -g 720x576 --use_rgb -x imlist,null -o menu0.avi -y raw,null \&lt;br /&gt;
  -F RGB --import_asr 2  --export_asr 2  &lt;br /&gt;
rm backr*.ppm &amp;amp;&lt;br /&gt;
transcode -i menu0.avi --use_rgb -o menu1.avi -y raw,null  -F RGB \&lt;br /&gt;
  -J text=string=&amp;quot;$TEXT1&amp;quot;:font=&amp;quot;$FONT&amp;quot;:posdef=5:points=44:fade=2:range=$RANGE1:color=00FF00&lt;br /&gt;
rm menu0.avi &amp;amp;&lt;br /&gt;
transcode -i menu1.avi --use_rgb -o menu2.avi -y raw,null\&lt;br /&gt;
  -J text=string=&amp;quot;$TEXT2&amp;quot;:font=&amp;quot;$FONT&amp;quot;:posdef=5:points=44:fade=2:range=$RANGE2:color=FFFFFF \&lt;br /&gt;
  -J logo=file=$LOGO:pos=592x480:range=0-100&lt;br /&gt;
rm  menu1.avi &amp;amp;&lt;br /&gt;
transcode -i menu2.avi --use_rgb -o menu3.avi -y raw,null\&lt;br /&gt;
  -J text=string=&amp;quot;$TEXT3&amp;quot;:font=&amp;quot;$FONT&amp;quot;:posdef=5:points=44:fade=2:range=$RANGE3:color=FF0000 &lt;br /&gt;
rm  menu2.avi &amp;amp;&lt;br /&gt;
transcode -z -k --use_rgb --pre_clip 0,0,0,0 -i menu3.avi -o menu3 -y mpeg2enc,null \&lt;br /&gt;
 -F 8 --export_prof dvd-pal  -w 9800 --encode_fields t  &lt;br /&gt;
rm menu3.avi &amp;amp;&lt;br /&gt;
mplex -f 8 -l $TIME -o menu.mpg menu3.m2v &amp;quot;$SOUND&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#-------- Masken fuer Menu erzeugen -----------------#&lt;br /&gt;
for i in `seq 1 $ZAHL`&lt;br /&gt;
do&lt;br /&gt;
 X1[$i]=$[${A[$i]%x*}-${M[1]%x*}] ; Y1[$i]=$[${A[$i]#*x}-${M[1]#*x}]&lt;br /&gt;
 X2[$i]=$[${A[$i]%x*}+${M[1]%x*}+${G%x*}]  ; Y2[$i]=$[${A[$i]#*x}+${M[1]#*x}+${G#*x}]&lt;br /&gt;
 X3[$i]=$[${A[$i]%x*}-${M[2]%x*}] ; Y3[$i]=$[${A[$i]#*x}-${M[2]#*x}]&lt;br /&gt;
 X4[$i]=$[${A[$i]%x*}+${M[2]%x*}+${G%x*}] ; Y4[$i]=$[${A[$i]#*x}+${M[2]#*x}+${G#*x}]&lt;br /&gt;
done&lt;br /&gt;
for FILE in highlight.png select.png&lt;br /&gt;
 do&lt;br /&gt;
 if [ $FILE = &amp;quot;select.png&amp;quot; ];then BORCOL=&amp;quot;red&amp;quot; ;else BORCOL=&amp;quot;yellow&amp;quot; ;fi&lt;br /&gt;
 convert -size 720x576 xc:white -fill $BORCOL \&lt;br /&gt;
 -draw &amp;quot;rectangle ${X1[1]},${Y1[1]} ${X2[1]},${Y2[1]}&amp;quot; \&lt;br /&gt;
 -draw &amp;quot;rectangle ${X1[2]},${Y1[2]} ${X2[2]},${Y2[2]}&amp;quot; \&lt;br /&gt;
 -draw &amp;quot;rectangle ${X1[3]},${Y1[3]} ${X2[3]},${Y2[3]}&amp;quot; \&lt;br /&gt;
 -draw &amp;quot;rectangle ${X1[4]},${Y1[4]} ${X2[4]},${Y2[4]}&amp;quot; \&lt;br /&gt;
 -draw &amp;quot;rectangle ${X1[5]},${Y1[5]} ${X2[5]},${Y2[5]}&amp;quot; \&lt;br /&gt;
 -draw &amp;quot;rectangle ${X1[6]},${Y1[6]} ${X2[6]},${Y2[6]}&amp;quot; \&lt;br /&gt;
 -fill white \&lt;br /&gt;
 -draw &amp;quot;rectangle ${X3[1]},${Y3[1]} ${X4[1]},${Y4[1]}&amp;quot; \&lt;br /&gt;
 -draw &amp;quot;rectangle ${X3[2]},${Y3[2]} ${X4[2]},${Y4[2]}&amp;quot; \&lt;br /&gt;
 -draw &amp;quot;rectangle ${X3[3]},${Y3[3]} ${X4[3]},${Y4[3]}&amp;quot; \&lt;br /&gt;
 -draw &amp;quot;rectangle ${X3[4]},${Y3[4]} ${X4[4]},${Y4[4]}&amp;quot; \&lt;br /&gt;
 -draw &amp;quot;rectangle ${X3[5]},${Y3[5]} ${X4[5]},${Y4[5]}&amp;quot; \&lt;br /&gt;
 -draw &amp;quot;rectangle ${X3[6]},${Y3[6]} ${X4[6]},${Y4[6]}&amp;quot; \&lt;br /&gt;
 -transparent white $FILE 2&amp;gt;/dev/null&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
#---------- spumux.xml erzeugen ---------------------#&lt;br /&gt;
cat &amp;gt; spumux.xml &amp;lt;&amp;lt;EOF&lt;br /&gt;
&amp;lt;subpictures&amp;gt; &lt;br /&gt;
    &amp;lt;stream&amp;gt; &lt;br /&gt;
       &amp;lt;spu start=&amp;quot;00:00:00.0&amp;quot; end=&amp;quot;00:00:00.0&amp;quot; &lt;br /&gt;
           highlight=&amp;quot;highlight.png&amp;quot; &lt;br /&gt;
           select=&amp;quot;select.png&amp;quot; &lt;br /&gt;
           autooutline=&amp;quot;infer&amp;quot; &lt;br /&gt;
           autoorder=&amp;quot;rows&amp;quot;/&amp;gt; &lt;br /&gt;
    &amp;lt;/stream&amp;gt; &lt;br /&gt;
&amp;lt;/subpictures&amp;gt;&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
#------------- Menuvideo maskieren ------------------#&lt;br /&gt;
spumux spumux.xml &amp;lt; menu.mpg &amp;gt; menu_finale.vob&lt;br /&gt;
rm spumux.xml menu3.m2v menu.mpg geotest.png bilder-list highlight.png select.png&lt;br /&gt;
echo -e &amp;quot;\nDas DVD-Menu ist jetzt fertig\n\n\tmenu_finale.vob\n\nScript ENDE&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripte]]&lt;br /&gt;
[[Category:Multimedia]]&lt;/div&gt;</summary>
		<author><name>Puppe</name></author>
		
	</entry>
</feed>