[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Encode



Bonjour,

depuis quelque temps, le script "Encode.sh" me renvoie à chaque tentative :


Encode.sh mon_film.mpg 
sting
[: 128: Go: unexpected operator
Passe: 0
VBirate:
SBitrate: 64
FILTRE:
Son:
/home/daten/multimedia/video/film/tmp/mon_film.tmp
Format: 640 x 496
Filtre utilis�: scale=640:496
Format:
[: 196: 0: unexpected operator
[: 221: 0: unexpected operator
[: 224: ?: unexpected operator
[: 228: 0: unexpected operator
[: 232: 0: unexpected operator
[: 236: 0: unexpected operator


Encode a fonctionné pendant longtemps chez moi sur Squeeze/AMD64 bits. Si je 
me souviens bien, Encode a été développé par François Boisson. Il y a peut-
être une nouvelle version ?

librement

Klaus


Voici le script que j'utilise :

===========
#!/bin/sh
if [ -z $1 ] ; then
cat <<EOF
Script d'encodage de fichier. La syntaxe est
   Encode.sh Fichier_du_film.extension Options
Les options sont
DVD  n: DVD n i�me chapitre du DVD
Dir  rep: Le miroir du DVD est dans rep
Opts o: Lecture avec les optiosn o
Fvid f: filtrage video (defaut scale=640:496), �a peut permettre de
        rajouter des bandes (expand=0:-100:50:50), etc.
Fson f: filtrage son (defaut rien, mono: mode=3)
Bson n: fixe le bitrate du son � n. (defaut 64)
Bvid n: fixe le bitrate video au lieu qu'il soit calcul�
Passe p: indique la passe (0, 1 ou 2, S) d�faut 0.
CD n: nombre de CDs 700M voulus (d�faut 1).
Avc p: passe des options, (typiquement Avc aspect=16/9)
Haut n: Precise la hauteur en pixel (496 par defaut)
Larg n: Precise la largeur en pixel (680 par defaut)
Garde: laiss� seul cela indique que le format est consertv�
Cine: Format 16/9
Tele: Format 4/3
Srt f: Sous titres fichiers f
EOF
exit 0
fi
NOM=`echo $1 | sed -e 's/\..*//'`
echo $NOM
FILMORG=$1
FILM=../$1
shift
mkdir $NOM.tmp
cd $NOM.tmp
BOUCLE=Go
PASSE=0
CHOIXBITRATE="?"
FILTRE=
RATESON=64
NBCD=1
OPTIONS=
SRT=
FSON=
#AVCOPTS=":aspect=4/3"
AVCOPTS=
LARGEUR=640
HAUTEUR=496
if [ -f BITRATE ] ; then BITRATE=`cat BITRATE` ; fi
while [ $BOUCLE == Go ] ; do

if (echo $1 | grep DVD) > /dev/null ; then
    shift
    FILM=" dvd://$1"
    echo "DVD chapitre: $FILM"
    shift
elif (echo $1 | grep Dir) > /dev/null ; then
    shift
    FILM=" -dvd-device ../$1 "$FILM
    echo "DVD chapitre: $FILM"
    shift
elif (echo $1 | grep Opts) > /dev/null ; then
    shift
    OPTIONS=$1
    echo "Options: $OPTIONS"
    shift
elif (echo $1 | grep Fvid) > /dev/null ; then
    shift
    FILTRE=$1
    echo Filtre video: $FILTRE
#expand=0:-100:50:50,scale=640:480
    shift
elif (echo $1 | grep Bson) > /dev/null ; then
    shift
    RATESON=$1
    echo Bitrate Son: $RATESON
    shift
elif (echo $1 | grep Bvid) > /dev/null ; then
    shift
    BITRATE=$1
    echo Bitrate Video: $BITRATE
    CHOIXBITRATE=Fait
    shift
elif (echo $1 | grep Passe) > /dev/null ; then
    shift
    PASSE=$1
    echo Passe: $PASSE
    shift
elif (echo $1 | grep Fson) > /dev/null ; then
    shift
    FSON=:$1
    shift
elif (echo $1 | grep CD) > /dev/null ; then
    shift
    NBCD=$1
    echo Nbre CDs: $NBCD
    shift
elif (echo $1 | grep Avc) > /dev/null ; then
    shift
    AVCOPTS=":"$1
    echo Options AVC: $AVCOPTS
    shift
elif (echo $1 | grep Srt) > /dev/null ; then
    shift
    SRT="-sub "$1" -ffactor 10 -subfont-autoscale 1 -subfont-encoding unicode -
subcp latin1"
    echo Sous titres: $SRT
    shift
elif (echo $1 | grep Haut) > /dev/null ; then
    shift
    HAUTFORCE=$1
    echo Hauteur Forcee: $HAUTFORCE
    shift
elif (echo $1 | grep Larg) > /dev/null ; then
    shift
    LARGFORCE=$1
    echo Largeur Forcee: $LARGFORCE
    shift
elif (echo $1 | grep Garde) > /dev/null ; then
    shift
    KEEPFORMAT=1
elif (echo $1 | grep Cine) > /dev/null ; then
    shift
    FORMAT=16/9
elif (echo $1 | grep Tele) > /dev/null ; then
    shift
    FORMAT=4/3
else
BOUCLE=Stop
fi
done
echo Passe: $PASSE
echo VBirate: $BITRATE
echo SBitrate: $RATESON
echo FILTRE: $FILTRE
echo Son: $FSON
LAVINFO=`which lavinfo`
pwd
if [ ! -z $LAVINFO ] ; then
    HAUTBIS=`$LAVINFO $FILM 2> /dev/null | grep video_height | sed -e 
's/^.*=//'`
    LARGBIS=`$LAVINFO $FILM 2> /dev/null | grep video_width | sed -e 
's/^.*=//'`
    echo $LARGBIS x $HAUTBIS
    if [ ! -z $KEEPFORMAT ] ; then
        if [ ! -z $HAUTBIS ] ; then
            HAUTEUR=$HAUTBIS
        fi
        if [ ! -z $LARGBIS ] ; then
            LARGEUR=$LARGBIS
        fi
    fi
fi
if [ ! -z $HAUTFORCE ] ; then
    HAUTEUR=$HAUTFORCE
fi
if [ ! -z $LARGFORCE ] ; then
    LARGEUR=$LARGFORCE
fi
echo Format: $LARGEUR x $HAUTEUR
if `echo  $FILTRE | grep -q scale > /dev/null` ; then
    echo Filtre forc� utilis�: $FILTRE
elif [ -z $FILTRE ] ; then
    FILTRE=scale=$LARGEUR:$HAUTEUR
else
    FILTRE=$FILTRE:scale=$LARGEUR:$HAUTEUR
fi
echo Filtre utilis�: $FILTRE
if [ ! -z $FORMAT ] ; then
    if `echo  $AVCOPTS | grep -q aspect > /dev/null` ; then
        echo Format d�fini dans les options Avc
    else
        AVCOPTS=$AVCOPTS":aspect="$FORMAT
    fi
fi
echo Format: $AVCOPTS
RESULTAT=../E_$NOM.avi
if [ $PASSE == "0" ] ; then
    if [ -f frameno.avi ] ; then
        rm frameno.avi
    fi
    mencoder $FILM $SRT $OPTIONS -ovc frameno  -vf $FILTRE -oac mp3lame -
lameopts vbr=3:br=$RATESON:q=0$FSON -o frameno.avi | tee Son
    PASSE=1
    if [ -f Son ] ; then
        if `grep -q "Recommended video bitrate" Son` ; then
            if [ $NBCD == "2" ] ; then
                BITRATEOPTIMAL=`grep "bitrate for 2 x 700" Son  | sed -e '1,
$s/.* \([^ ]*\)$/\1/'`
            else
                BITRATEOPTIMAL=`grep "bitrate for 700" Son  | sed -e '1,$s/.* 
\([^ ]*\)$/\1/'`
            fi
            echo $BITRATEOPTIMAL > BITRATE
        else
            if [ $NBCD == "2" ] ; then
                BITRATEOPTIMAL=`grep "itrate.*CD 2 x 700" Son  | sed -e '1,
$s/.* \([^ ]*\)$/\1/'`
            else
                BITRATEOPTIMAL=`grep "itrate.*CD 700" Son  | sed -e '1,$s/.* 
\([^ ]*\)$/\1/'`
            fi
            echo $BITRATEOPTIMAL > BITRATE
        fi
    fi
fi
if [ $PASSE == "S" ]  ; then
    if [ ! $CHOIXBITRATE == "Fait" ] ; then
        if [ -f frameno.avi ] ; then
            rm frameno.avi
        fi
        mencoder $FILM $SRT $OPTIONS -ovc frameno  -vf $FILTRE -oac mp3lame -
lameopts vbr=3:br=$RATESON:q=0$FSON -o frameno.avi | tee Son
    fi
    if [ -f Son ] ; then
        if `grep -q "Recommended video bitrate" Son` ; then
            if [ $NBCD == "2" ] ; then
                BITRATEOPTIMAL=`grep "bitrate for 2 x 700" Son  | sed -e '1,
$s/.* \([^ ]*\)$/\1/'`
            else
                BITRATEOPTIMAL=`grep "bitrate for 700" Son  | sed -e '1,$s/.* 
\([^ ]*\)$/\1/'`
            fi
            echo $BITRATEOPTIMAL > BITRATE
        else
            if [ $NBCD == "2" ] ; then
                BITRATEOPTIMAL=`grep "itrate.*CD 2 x 700" Son  | sed -e '1,
$s/.* \([^ ]*\)$/\1/'`
            else
                BITRATEOPTIMAL=`grep "itrate.*CD 700" Son  | sed -e '1,$s/.* 
\([^ ]*\)$/\1/'`
            fi
            echo $BITRATEOPTIMAL > BITRATE
        fi
    fi
fi
if [ $CHOIXBITRATE == "?" ] ; then
    if [ -f BITRATE ] ; then BITRATE=`cat BITRATE` ; fi
fi
if [ $PASSE == "1" ] ; then
    mencoder $FILM $SRT $OPTIONS -nosound -ovc lavc -vf $FILTRE -lavcopts 
vcodec=mpeg4:vpass=1:vbitrate=$BITRATE:turbo$AVCOPTS -ffourcc DIVX  -o 
$RESULTAT
    PASSE=2
fi
if [ $PASSE == "2" ] ; then
## Passe 2
    mencoder $FILM $SRT $OPTIONS -oac mp3lame -lameopts 
vbr=3:br=$RATESON:q=0$FSON -ovc lavc -vf $FILTRE -lavcopts 
vcodec=mpeg4:vpass=2:vbitrate=$BITRATE:vhq:v4mv:trell$AVCOPTS -ffourcc DIVX  -o 
$RESULTAT
fi
if [ $PASSE == "S" ] ; then
## Une seule passe 
    mencoder $FILM $SRT $OPTIONS -oac mp3lame -lameopts 
vbr=3:br=$RATESON:q=0$FSON -ovc lavc -vf $FILTRE -lavcopts 
vcodec=mpeg4:vbitrate=$BITRATE:vhq:v4mv:trell$AVCOPTS -ffourcc DIVX  -o 
$RESULTAT
fi
cd ..
==========


Reply to: