Inhalt

Inhaltsverzeichnis

  1. Inhalt
  2. Intro

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

movie2xvid (zuletzt geändert am 2013-01-11 21:45:06 durch 134-29)