#!/bin/bash
#Convierte un video al formato para LG Viewty (400x240) con varios
#niveles de calidad/tamaño.
#Este script necesita tener instalado ffmpeg y sus librerias unstripped
#Autor: Sergio Garcia Mondaray
#Visita www.YakiBoo.net

zenity --info --title="Bienvenido" --text="YakiViewty recodifica videos al formato de pantalla del LG Viewty (400x240), con varios niveles de calidad.\nNOTA: Recuerda que cuanto mayor sea la calidad elegida, mayor sera el tamano del fichero resultante."
if [ $? == 0 ]; then
#Definimos los parametros de video para ffmpeg
#Para el video origen:
PARAMIN=""
SINPERDIDAS=1
#Para el video destino:
P_SIZE="400x240"
P_FORMAT="avi"
P_VCODEC="mpeg4"
P_VTAG="DX50"
P_ACODEC="libmp3lame"
P_AC="2"
P_FREQ="44100"

#Definimos unas constantes para la calidad y el tamano
CALIDAD_ALTA="Calidad alta (mayor tamaño)"
CALIDAD_MEDIA="Calidad media (tamaño medio)"
CALIDAD_BAJA="Calidad baja (menor tamaño)"
CALIDAD_MUYBAJA="Calidad muy baja (nanovideo)"

#Seleccionamos el archivo origen
FILEIN=$(zenity --file-selection --title="Seleccione video original")

#Si no se pulsa CANCELAR, pedimos el archivo destino
case $? in
	0) FILEOUT=$(zenity --file-selection --save --title="Cree un archivo destino" --confirm-overwrite)
	#Si no se pulsa CANCELAR, continuamos con el script
	case $? in
		0) #Ya tenemos fichero origen y destino, elegimos calidad:
			QUALITY=$(zenity --list --text="Seleccione la calidad de conversion" --title="Calidad/tamaño" --column="Nivel de calidad" "$CALIDAD_ALTA" "$CALIDAD_MEDIA" "$CALIDAD_BAJA" "$CALIDAD_MUYBAJA")
			case $QUALITY in
				$CALIDAD_ALTA)
				    P_VBITRATE="1000k"
				    P_ABITRATE="128k"
				    EXTRA=""
				;;
				$CALIDAD_MEDIA)
				    P_FPS="30"
					P_VBITRATE="500k"
					P_ABITRATE="96k"
					EXTRA="-r $P_FPS"
				;;
				$CALIDAD_BAJA)
				    P_FPS="15"
					P_VBITRATE="100k"
					P_ABITRATE="64k"
					EXTRA="-r $P_FPS"
				;;
				$CALIDAD_MUYBAJA)
				    P_FPS="7"
					P_VBITRATE="50k"
					P_ABITRATE="30k"
					EXTRA="-r $P_FPS"
				;;
			esac
			PARAMOUT="-f		$P_FORMAT
		      	      -vcodec 	$P_VCODEC
		  	          -b		$P_VBITRATE
		  	          -vtag		$P_VTAG
                      -acodec	$P_ACODEC
                      -ab		$P_ABITRATE
                      -ar       $P_FREQ
                      -ac       $P_AC
		  	          -s 		$P_SIZE
		  	                    $EXTRA"
	        #echo ffmpeg  $PARAMIN -i $FILEIN $PARAMOUT -y $FILEOUT
	        zenity --info --title="YakiViewty" --text="YakiViewty iniciara la conversion solicitada.\nDependiendo de las opciones elegidas, y del peso del video a convertir, esto puede llevar algun tiempo. Se paciente..."
	        ffmpeg  $PARAMIN -i "$FILEIN" $PARAMOUT -y "$FILEOUT"
	        if [ $? -eq 0 ]; then
	            zenity --info --title="YakiViewty" --text="La conversion ha concluido. Se ha creado el fichero $FILEOUT satisfactoriamente."
            else
                zenity --info --title="YakiViewty" --text="Ha ocurrido un error, el archivo $FILEOUT podria estar incompleto."
            fi
		;;
	esac
	;;
esac
#echo "FILEIN=$FILEIN"
#echo "FILEOUT=$FILEOUT"
fi

