Nueva dirección - New location

Script para la creación de dvds

Este script acompaña al post anterior para crear un dvd-video con solo el poster y el video.

#!/bin/bash
#TODO: -subtítulos
# -pelicula en varias partes
# -elegir texto/posicion para el botón de play

#Formato del comando:
# script.sh pelicula.avi poster.jpg [velocidad]
#No se comprueba si es o no un video/imagen por ahora

#Usamos home que estamos seguros de poder escribir ahí
dir="$HOME/dvd/"

#Comprobación de los parámetros
if [ $# -lt 3 ] || ! [ -f "$1" ] || ! [ -f "$2" ]; then
echo " Uso: $0 pelicula.avi poster.jpg unidad_grabadora [velocidad]"
echo " velocidad es un entero"
if ! [ -f "$1" ]; then echo "Archivo: $1 no encontrado."; fi
if ! [ -f "$2" ]; then echo "Archivo: $2 no encontrado."; fi
exit 1
fi


#Si no existe lo creamos y luego al final se borrará
if [ -e "$dir" ]; then
rm -rfv "$dir"
mkdir "$dir"
else
mkdir "$dir"
fi


#Convertimos la película a mpeg2 ac3-192-4.0
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -vf \
scale=720:-2,expand=720:576,harddup -srate 48000 -af \
lavcresample=48000 -lavcopts \
vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=\
5000:
keyint=15:acodec=ac3:abitrate=192 -ofps 25 -channels 4 \
-o
"$dir""pelicula.mpg" "$1"


#Creación del menú
#1.Convertimos el poster a algo PAL con fondo negro
convert "$2" -resize 720x576 -gravity center -crop 720x576-0-0!\
-background
"#000000" -flatten "$dir""menu.jpg"
#2.Creamos la capa transparente
convert -size 720x576 xc:transparent "$dir"\
"fondo_transparente.png"

#3.Creamos el menu.xml para spumux
echo "<subpictures>
<stream>
<spu force=\"yes\" end=\"00:00:00.0\" start=\"00:00:00.0\" \
highlight=
\""$dir"fondo_transparente.png\" >
<button x0=\"0\" y0=\"0\" x1=\"719\" y1=\"575\" name=\"1\"/>
</spu>
</stream>
</subpictures>" > "$dir""menu.xml"
#4.Creamos un video sin sonido a partir de menu.jpg
jpeg2yuv -n 1 -I p -f 25 -j "$dir""menu.jpg" | mpeg2enc -n p -f 8 -o "$dir""menu.m2v"
#5.Creamos el silencio para el menú
dd if=/dev/zero bs=4 count=1920 |toolame -b128 -s 48 /dev/stdin "$dir""menu.mp2"
#6.Multiplexamos
mplex -f 8 -o "$dir""menu.mpg" "$dir""menu.m2v" "$dir""menu.mp2"
#7.Y finalmente con spumux
spumux "$dir""menu.xml" < "$dir""menu.mpg" > "$dir""Main_Menu_VMGM_menu.mpg"
#====================


#Creación del sistema de archivos
#1.Creamos el directorio que albergará el "sistema de archivos"
if ! [ -e "$dir""fs" ]; then
mkdir "$dir""fs"
fi
#2.dvdauthor.xml
echo "<dvdauthor dest=\""$dir"fs\" jumppad=\"yes\" >
<vmgm>
<menus>
<video format=\"pal\" resolution=\"720x576\" />
<pgc entry=\"title\">
<vob file=\""$dir"Main_Menu_VMGM_menu.mpg\" pause=\"inf\" />
<button name=\"1\" >jump title 1 chapter 1; </button>
<post> jump vmgm menu 1; </post>
</pgc>
</menus>
</vmgm>


<titleset>
<menus>
<pgc>
<post> jump vmgm menu 1; </post>
</pgc>
</menus>
<titles>
<pgc>
<vob file=\""$dir"pelicula.mpg\" chapters=\"00:00, 10:00\"/>
<post> call vmgm menu 1; </post>
</pgc>

</titles>
</titleset>

</dvdauthor>" > "$dir""dvdauthor.xml"
#2.Arrancamos dvdauthor
dvdauthor -x "$dir""dvdauthor.xml"


#Y a grabar
if [ $# -eq 3 ]; then
velocidad="-speed=$4"
else
velocidad=""
fi
growisofs -dvd-compat -Z "$3" -dvd-video "$dir""fs" $velocidad

rm -rfv "dir"