= Inhalt =
<<TableOfContents>>

= Intro =
Das ist ein Script, der Filme nach xvid wandelt. Dabei ist ein Bitrechner enthalten, dessen Werte man gleich übernehmen kann. Man kann die Bitrate aber auch voll händisch wählen. Es sind auch verschiedene Grössen des Videoformates möglich. Jedoch geben wir nur die Breite an. Die Höhe wird automatisch angepasst. Bei Unterschreiten einer Bitrate zu der Grösse wird man gewarnt. Man kann es aber doch aktzeptieren. Was ich nicht empfehle.

Es gibt immer Leute die dann sagen, macht doch ein 2 Pass Encoding. Ich hab schon das alles durch, auch x-pass Encoding, also x-fach durch. Aber schlussendlich kann man bei 2-pass nur 5% an qualität gewinnen, oder an der Grösse einspahren. Wie man es anschaut. Aber ich kauf mir lieber etwas mehr Harddisk, als mein Rechner wegen 5% mehr Qualität, zweimal - oder gar x-mal länger daran laufen zu lassen.

Der Codec ist so gut wie er ist, den wir verwenden. Da rettet ihm auch ein 2-Pass Verfahren nicht den Arsch!


/!\ Die oberste Zeile darf beim Speichern in eine Datei, kein Leerzeichen am Anfang haben!
{{{
 #!/bin/bash
# scriptname: movie2xvid
# Wandelt Filme in das xvid Format 
#
# Installieren:
# chown root.root /usr/local/bin/movie2xvid
# chmod 755 /usr/local/bin/movie2xvid
#
# Benötigte Programme,  mencoder libavcodec lame
#(http://wiki.ubuntuusers.de/mencoder)


vers="Okt 2012"

if [ -a "$1" ]; then
	cmd=do_xvid
	else
	cmd=nomovie
fi

if [ -z "$2" ]; then
	cmd=notarget
fi

if [ "$1" == "help" ]; then
        cmd=help
fi

if [ "$1" == "ff" ]; then
	cmd=fuel_folder
fi


#######Video Bitrate

if [ "$cmd" != "nomovie" ]&&[ "$cmd" != "notarget" ]&&[ "$cmd" != "help" ];then
b=loopit
vbit=''
while [ "$b" == "loopit" ]
do
clear
echo
echo "             Bitrate wählen für xvid File" 
echo "----------------------------------------------------------------"
echo "			max. Auflösung möglich Breite pixel"
echo "  1.	380kBit/s		320px"
echo "  2.	470kBit/s		480px"	
echo "  3.	600kBit/s		533px"
echo "  4.	830kBit/s		640px"
echo "  5.	900kBit/s"
echo "  6.	1000kBit/s		720px"
echo "  7.	1250kBit/s"
echo "  8.	1500kBit/s"
echo "  9.	1750kBit/s		1280px"
echo " 10.	2000kBit/s"
echo " 11.	2250kBit/s"
echo " 12.	2500kBit/s"
echo " 13.	2750kBit/s"
echo " 14.	3000kBit/s		1920px"
echo " 15.	3250kBit/s"
echo " 16.	3500kBit/s"
echo " 17.	3750kBit/s"
echo " 18.	4000kBit/s"
echo " 19.	4250kBit/s"
echo "----------------------------------------------------------------"
echo " 20.	Bitrate von Hand eingeben"
if [ -n "$vbitman" ];then
echo
echo "		->Momentan von Hand eingegebene Bitrate: $vbitman kbit/s"
echo
fi
echo " 21.	Video Bitrate Calculator"
if [ -n "$vbitcal" ];then
echo
echo "		->Momentan errechnete Bitrate: $vbitcal kbit/s"
echo "		->Für Filmlänge $min Minuten und $fsize MByte Grösse"
echo
fi
echo " 22.	Bitrate übernehmen Hand/Calculator"
echo "----------------------------------------------------------------"
echo
echo " Standardwert ist 850kbit/s: Ohne Eingabe bleibt 850!"
echo
echo -n "  Ihre Wahl? ";read b
echo

if [ -n "$b" ];then
if  [ $b -ge 1 ] && [ $b -le 22 ];then
 	case "$b" in
		1)
		vbit=380
		;;	
		2)	
		vbit=470
		;;
		3)
		vbit=600
		;;
		4)
		vbit=830
		;;
		5)
		vbit=900
		;;
		6)
		vbit=1000
		;;
		7)
		vbit=1250
		;;
		8)
                vbit=1500
                ;;
		9)
                vbit=1750
                ;;
		10)
                vbit=2000
                ;;
		11)
                vbit=2250
                ;;
		12)
                vbit=2500
                ;;
		13)
                vbit=2750
                ;;
		14)
                vbit=3000
                ;;
		15)
                vbit=3250
                ;;
		16)
                vbit=3500
                ;;
		17)
                vbit=3750
                ;;
		18)
                vbit=4000
                ;;
		19)
                vbit=4250
                ;;
		20)
		vbitman=''
		while [ -z "$vbitman" ]
		do
		clear
		echo
		echo " Bitrate von Hand eingeben"
		echo "---------------------------"
		echo
		echo -n " Bitte Bitrate angeben (nur Ganzzahl)kbit/s: ";read vbitman		
		done
		vbit=$vbitman
		vbitcal=''
		b="loopit"
		;;
		21)
		min=''
		while [ -z "$min" ]
		do
		clear
		echo
		echo " Video Bitrate Calculator"
		echo "---------------------------"
		echo
		echo -n " Bitte Filmlänge angeben in Minuten (nur Ganzzahl): ";read min
		done
		fsize=''
		while [ -z "$fsize" ]
		do
		clear
		echo	
		echo " Video Bitrate Calculator"
		echo "---------------------------"
		echo	
		echo -n " Endgrössse der Ausgabedatei angeben in MegaByte (nur Ganzzahl): ";read fsize
		done
		asize=`expr "$min" \* 60 \* 128 \/ 8`
		tmp=`expr "$fsize" \* 1000 - "$asize"`
		tmp2=`expr "$min" \* 60 \/ 8`
		vbitcal=`expr "$tmp" \/ "$tmp2"`
		vbit=$vbitcal
		vbitman=''
		b="loopit"		
		;;
		22)
		;;
	esac


else
vbit=850
fi
else
vbit=850
fi
done

#######Videogrösse Breite

b=loopit
warn=''
wsize=''
while [ "$b" == "loopit" ]
do
clear
echo
echo "   Videogrösse wählen xvid (nur die Breite, Höhe autom.)"
echo "----------------------------------------------------------"
echo "				minimum Bitrate kbit/s"
echo "  1.	VHS/VCD		 320px		380"
echo "  2.	SVCD		 480px		470"
echo "  3.	S-VHS		 533px		600"
echo "  4.	Laserdisc	 640px		830"
echo "  6.	DVD		 720px		1000"
echo "  9.	HDTV 720p	1280px		1750"
echo " 14.	HDTV 1080p	1920px		3000"
echo
echo " 5 / 7 8 und 10 bis 13 sind ohne Funktion"
echo
echo "----------------------------------------------------------"
echo " 15.	Wert von Hand eingeben"
if [ -n "$wsizeman" ];then
echo
echo "	->Momentan von Hand eingegebene Grösse: $wsizeman Pixel"
echo
fi
if [ -n "$warn" ];then
echo " Ihre Wahl ist zu gross für die vorher gewählte Bitrate!"
echo " Bitrate: $vbit kbit/s"
echo
echo " Sie können aber den Wert trotzedem mit Punkt 16 übernehmen."
echo
warn=''
fi
echo " 16.	Wert von Hand übernehmen"
echo "----------------------------------------------------------"
echo
echo " Standardwert ist 640px: Ohne Eingabe bleibt 640!"

echo
echo -n "  Ihre Wahl? ";read b
echo

if [ -n "$b" ];then
if  [ $b -ge 1 ] && [ $b -le 16 ];then
 	case "$b" in
		1)
		if [ "$vbit" -le 379 ];then
		b=loopit
		warn=1
		wsize=320
		wsizeman=320		
		else
		wsize=320
		fi
		;;	
		2)
		if [ "$vbit" -le 469 ];then
		b=loopit
		warn=1
		wsize=480
		wsizeman=480		
		else	
		wsize=480
		fi
		;;
		3)
		if [ "$vbit" -le 599 ];then
		b=loopit
		warn=1
		wsize=533
		wsizeman=533		
		else
		wsize=533
		fi
		;;
		4)
		if [ "$vbit" -le 829 ];then
		b=loopit
		warn=1
		wsize=640
		wsizeman=640		
		else
		wsize=640
		fi
		;;
		5)
		b=loopit
		;;
		6)
		if [ "$vbit" -le 999 ];then
		b=loopit
		warn=1
		wsize=720
		wsizeman=720		
		else
		wsize=720
		fi
		;;
		7)
		b=loopit
		;;
		8)
		b=loopit
		;;
		9)
		if [ "$vbit" -le 1749 ];then
		b=loopit
		warn=1
		wsize=1280
		wsizeman=1280		
		else
		wsize=1280
		fi
		;;
		10)
		b=loopit
		;;
		11)
		b=loopit
		;;
		12)
		b=loopit
		;;
		13)
		b=loopit
		;;
		14)
		if [ "$vbit" -le 2999 ];then
		b=loopit
		warn=1
		wsize=1920
		wsizeman=1920		
		else
		wsize=1920
		fi
		;;
		15)
                wsizeman=''
		while [ -z "$wsizeman" ]
		do
		clear
		echo
		echo " Videogrösse von Hand eingeben xvid"
		echo "-------------------------------------"
		echo
		echo -n " Bitte Breite in Pixel angeben (nur Ganzzahl): ";read wsizeman	
		done
		wsize=$wsizeman
		b="loopit"
		;;
		16)
		;;
	esac


else
wsize=640
fi
else
wsize=640
fi
done	
fi



case "$cmd" in

do_xvid)	

mencoder "$1" -vf scale="$wsize":-10 -ovc xvid -xvidencopts vhq=2:bvhq=1:chroma_opt:quant_type=mpeg:bitrate="$vbit" -alang de -oac mp3lame -lameopts vbr=0:mode=1 -af volnorm=1 -ofps 23.976 -o "$2".avi

	;;

fuel_folder)
        count=0
	countall=0
	pwd0=`pwd`
	
	mkdir -p movie2output_xvid

	if [ -z "$2" ]; then
		format=*.*
	else
		format=*.$2
	fi
	countall=`ls $format | wc -l`
	for file in  $format; do
		
		if [ -d "$file" ]; then
			echo
			echo
			echo  -n Nichts zu tun für Ordner "$pwd0"/"$file";
			echo
		else
			if [ -e "$file" ]; then
			count=$[$count+1]
			echo 
			echo 
			echo -n Bearbeite "$count" von "$countall" Dateien: "$pwd0"/"$file";
			echo
			echo
			output=`echo "$file" | sed s/\.[^\.]*$//`

#Code
mencoder -vf scale="$wsize":-10 -ovc xvid -xvidencopts vhq=2:bvhq=1:chroma_opt:quant_type=mpeg:bitrate="$vbit" -alang de -oac mp3lame -lameopts vbr=0:mode=1 -af volnorm=1 -ofps 23.976 -o  movie2output_xvid/"$output".avi "$file"

			echo 
			echo 			
			echo -n " ""$count". Decodierte Datei gespeichert in "$pwd0"/movie2output_xvid/"$output".mpg
			echo
			fi
			fi
	done
	;;


nomovie)	
	echo	
	echo " Keinen gültigen Film angegeben"
	echo " movie2xvid help"
	echo	
	;;

notarget)
	echo	
	echo " Keine  Zieldatei angegeben"
	echo " movie2xvid help"
	echo	
	;;

help)
	echo
	echo "		Hilfe zu movie2xvid ""$vers"
	echo "====================================================================="
	echo " Wandelt Filme in das xvid Format"
	echo
	echo " Normal Anwendung:"
	echo " movie2xvid  QuellFilmdatei  ZielFilmDatei"
	echo	
	echo " Stapelanwendung:"
	echo " movie2xvid ff format"
	echo " Wandelt alle filme des Ordners nach Unterordner movie2output_xvid."
	echo " format kann leer bleiben, oder als Filter, welche gewandelt werden sollen nach xvid."
	echo
	;;

esac
}}}


----
KategorieLinuxMultimedia