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:
- Follow-Ups:
- Re: Encode
- From: "Jean-Yves F. Barbier" <12ukwn@gmail.com>
- Re: Encode
- From: Daniel Huhardeaux <no-spam@tootai.net>
- Re: Encode
- From: François Boisson <user.anti-spam@maison.homelinux.net>