Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
shellscripts:encode [2006/12/17 17:59] – st | shellscripts:encode [2006/12/17 22:08] (aktuell) – st | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Encodieren mit mplayer ====== | ||
+ | Das Shellscript bietet eine menugeführte Auswahl der Zielcodes an (divx-kompatibel+mp3 bzw. ogg theora und ogg audio) und schreibt dann die (neu)kodierte Datei an den gewünschten Zielort. | ||
+ | Als Vorraussetzung wird bc bzw. xdialog benötigt sowie die entsprechenden Codecs. Die Lizensierung ist unter der GPL. | ||
+ | |||
+ | Die Theorakompression funktioniert nicht aus allen Formaten heraus (mpeg2 funzt z.B. nicht). | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | |||
+ | #part of the Mutils by Paul Hänsch | ||
+ | #to be ditributed under the terms of the GPL v.2 and any later version | ||
+ | |||
+ | frontend=Xdialog | ||
+ | terminal=" | ||
+ | |||
+ | mb=2 # | ||
+ | keys=30 # | ||
+ | thresh=0 # | ||
+ | |||
+ | #if more than one file is opened at once in konqueror, one instance of the script | ||
+ | #will be opened for every file - this if-else stuff passes all files to the first | ||
+ | #instance of the script (using the fifo "/ | ||
+ | if [ -e / | ||
+ | echo \#$1 >>/ | ||
+ | exit 0 | ||
+ | else | ||
+ | | ||
+ | echo \#$1 >>/ | ||
+ | sleep 3 | ||
+ | | ||
+ | rm / | ||
+ | |||
+ | #I cannot control in which order the files are given, that's why I sort them | ||
+ | | ||
+ | #The filenames must be translated into a format which mplayer understands | ||
+ | #I also try to translate the damn kde-media: | ||
+ | # | ||
+ | | ||
+ | |||
+ | #now we are going to ask some questiones | ||
+ | #the file / | ||
+ | | ||
+ | if [ $? == 1 ];then | ||
+ | rm / | ||
+ | exit 0 | ||
+ | fi | ||
+ | | ||
+ | |||
+ | | ||
+ | if [ $? == 1 ];then | ||
+ | rm / | ||
+ | exit 0 | ||
+ | fi | ||
+ | | ||
+ | |||
+ | | ||
+ | if [ $? == 1 ];then | ||
+ | rm / | ||
+ | exit 0 | ||
+ | fi | ||
+ | | ||
+ | |||
+ | | ||
+ | schwarze Streifen los zu werden. Geben Sie hier die Schnitt-\n | ||
+ | koordinaten in der Form\n\n | ||
+ | breite: | ||
+ | an, wobei x und y die Abstände zu den Rändern sind. Sie können\n | ||
+ | x und y auch weglassen um den Bildausschnitt zu zentrieren." | ||
+ | | ||
+ | | ||
+ | while [ $stat == 3 ]; do | ||
+ | if [ $frontend == dialog ]; then | ||
+ | | ||
+ | | ||
+ | else | ||
+ | | ||
+ | | ||
+ | grep " | ||
+ | fi | ||
+ | crop=`grep ":" | ||
+ | if [ $stat == 3 ]; then | ||
+ | | ||
+ | fi | ||
+ | if [ $stat == 1 ];then | ||
+ | rm / | ||
+ | exit 0 | ||
+ | fi | ||
+ | done | ||
+ | # | ||
+ | #get data | ||
+ | mplayer "`echo $files |cut -d "#" | ||
+ | vw=`cat / | ||
+ | vh=`cat / | ||
+ | cw=`echo $crop |cut -d ":" | ||
+ | if [ -z $cw ]; then | ||
+ | | ||
+ | fi | ||
+ | ch=`echo $crop |cut -d ":" | ||
+ | if [ -z $ch ]; then | ||
+ | | ||
+ | fi | ||
+ | cx=`echo $crop |cut -d ":" | ||
+ | cy=`echo $crop |cut -d ":" | ||
+ | #calculate params | ||
+ | if [ -z $cx ]; then | ||
+ | | ||
+ | | ||
+ | else | ||
+ | | ||
+ | | ||
+ | fi | ||
+ | if [ -z $cy ]; then | ||
+ | | ||
+ | | ||
+ | else | ||
+ | | ||
+ | | ||
+ | fi | ||
+ | cropTH=`echo " | ||
+ | |||
+ | # | ||
+ | | ||
+ | | ||
+ | echo " | ||
+ | echo "sqrt( 128000 / ( $width * $height ) )" >>/ | ||
+ | echo " | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | geignetes Größenverhältnis skaliert. Erfahrungsgemäß ist,\n | ||
+ | unabhängig vom Seitenverhältnis des Videos, eine Fläche von\n | ||
+ | etwa 128.000 Pixeln empfehlenswert. Ich habe die entsprechenden\n | ||
+ | Abmessungen unter Beibehaltung des Seitenverhältnisses\n | ||
+ | errechnet. Sie können jedoch eigene Abmessungen in der Form\n\n | ||
+ | breite: | ||
+ | eingeben." | ||
+ | | ||
+ | if [ $? == 1 ];then | ||
+ | rm / | ||
+ | exit 0 | ||
+ | fi | ||
+ | | ||
+ | | ||
+ | |||
+ | # | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | Dateinamens ein. Da Ich die Zieldateien durchnummeriere, | ||
+ | wird nur der Anfang des Dateinamens benötigt.\n | ||
+ | Das Benennungsschema ist:\n\n | ||
+ | [Pfad][Präfix]-{nummer}.$format\n\n | ||
+ | Geben sie nur den Teil an, der oben in eckigen Klammern steht." | ||
+ | | ||
+ | |||
+ | | ||
+ | while [ -d $prefix ]; do | ||
+ | $frontend --fselect " | ||
+ | if [ $? == 1 ];then | ||
+ | rm / | ||
+ | exit 0 | ||
+ | fi | ||
+ | prefix=`cat / | ||
+ | done | ||
+ | |||
+ | | ||
+ | Die Zieldateien sind: | ||
+ | $prefix-{nummer}.$format\n\n | ||
+ | Videobitrate: | ||
+ | Audiobitrate: | ||
+ | Skalierungsoptionen: | ||
+ | $vf\n\n | ||
+ | Es wird empfohlen die Kompression mit gesenkter Priorität | ||
+ | auszuführen um das System nicht gänzlich zu blockieren\n\n | ||
+ | Priorität | ||
+ | negative Prioritäten nur für Superuser):" | ||
+ | |||
+ | | ||
+ | if [ $? == 1 ];then | ||
+ | rm / | ||
+ | exit 0 | ||
+ | fi | ||
+ | | ||
+ | |||
+ | |||
+ | | ||
+ | n=2 | ||
+ | while [ ! -z "`echo $files |cut -d "#" | ||
+ | infile=`echo $files |cut -d "#" | ||
+ | outfile=" | ||
+ | if [ $format == " | ||
+ | | ||
+ | | ||
+ | else | ||
+ | | ||
+ | | ||
+ | fi | ||
+ | n=`expr $n + 1` | ||
+ | done | ||
+ | |||
+ | if [ $result == 0 ]; then | ||
+ | $frontend --ok-label " Dankeschön " --msgbox " | ||
+ | else | ||
+ | $frontend --ok-label " Tja! " --msgbox " | ||
+ | fi | ||
+ | fi | ||
+ | </ |