Nuevo script Divx2CVCD (16/12/2002). Este script obtiene toda la información posible de el .avi, y calcula el bitrate del video automáticamente para que quepa en un CD en formato CVCD (VCD con bitrate variable). Se pueden probar con distintos valores de la variable QUANTUM. El Quantum, que es la calidad (como el CQ-Constant Quality del TMPGEnc), puede ir de 2 a 31, cuanto más cercano a 2 más calidad. Con un valor menor de 8 se obtiene buena calidad. AUDIORATE también se puede modificar. El script lo podéis descargar de aquí, y lo pego a continuación:
Inicio divx2cvcd
!/bin/bash
# Este script pasa un Divx a CVCD. Para los archivos temporales se
# necesita al menos 4.5 Gigas (m1v y mpa, los .mpg y los .bin)
DIR=`pwd`
TEMPFOLDER=/tmp/divx2vcd-$RANDOM
TEMP_TEMPLATE=/tmp/tcmplex-template-$RANDOM
CDSIZE=795
QUANTUM=5
# Maxrate ahora es automatico
#MAXRATE=900
AUDIORATE=128
if [ $# -eq 0 ]; then
echo "Usage:"---echo " divx2cvcd <divxfile>"
exit 1
fi
FILE=$1
if [ "$1" "`basename $1`" ]; then
FILE="$DIR/$1"
fi
mkdir $TEMPFOLDER
cd $TEMPFOLDER
tcprobe -i "$FILE" > $TEMPFOLDER/info
WIDTH=`grep '\[avilib\] V:' $TEMPFOLDER/info | perl -e ' $line=<STDIN> ; $line =~ /width=(\d+)/ ; print $1' `
HEIGHT=`grep '\[avilib\] V:' $TEMPFOLDER/info | perl -e ' $line=<STDIN> ; $line =~ /height=(\d+)/ ; print $1' `
FPS=`grep '\[avilib\] V:' $TEMPFOLDER/info | perl -e ' $line=<STDIN> ; $line =~ /V: (.+?) fps/ ; print $1' `
FPS_1=`echo "scale=1 ; $FPS/1"| bc -l`
FRAMES=`grep '\[avilib\] V:' $TEMPFOLDER/info | perl -e ' $line=<STDIN> ; $line =~ /frames=(\d+)/ ; print $1' `
SEGUNDOS_TOTAL=`echo "scale=0 ; ($FRAMES / $FPS)"| bc -l`
HORAS=`echo "scale=0 ; ($SEGUNDOS_TOTAL / 3600)"| bc -l`
MINUTOS=`echo "scale=0 ; (($SEGUNDOS_TOTAL - 3600 * $HORAS)/60)"| bc -l`
SEGUNDOS=`echo "scale=0 ; ($SEGUNDOS_TOTAL % 60)"| bc -l`
VIDEO_RATE=`echo "scale=0 ;(($CDSIZE * 1024 - ($AUDIORATE/8*$SEGUNDOS_TOTAL))*8 / $SEGUNDOS_TOTAL)"| bc -l`
# +5%
MAXRATE=`echo "scale=0 ; ($VIDEO_RATE * 105 / 100)" | bc -l`
echo "* FILE INFO *"
echo "Frame Size: ${WIDTH}x${HEIGHT} - FPS: $FPS"
echo "Length: $FRAMES - Seconds: $SEGUNDOS_TOTAL"
echo "$HORAS hours, $MINUTOS minutes, $SEGUNDOS seconds"
echo "Recommended averagge video bitrate: $VIDEO_RATE"
echo "Using max video bitrate: $MAXRATE"
if [ $FPS_1
"29.9" -o $FPS_1 "30" -o $FPS_1
"23.9" ]; then
WIDTH_OUT=352
HEIGHT_OUT=240
else
WIDTH_OUT=352
HEIGHT_OUT=288
fi
echo "Video Output: ${WIDTH_OUT}x${HEIGHT_OUT}"
# Ahora calculamos los valores pa los bordes.
ANCHO_1_1_OUT=`echo "($HEIGHT_OUT * 4/3)"| bc -l`
ALTO_OUT=`echo "$HEIGHT / ($WIDTH / $ANCHO_1_1_OUT)" | bc -l`
# Redondeamos
ALTO_OUT=`echo "scale=0 ; $ALTO_OUT/1"| bc -l`
# Nos aseguramos de que sea par
ALTO_OUT=`echo "scale=0 ; $ALTO_OUT+$ALTO_OUT%2" | bc -l`
BORDE=`echo "scale=0 ; ($HEIGHT_OUT-$ALTO_OUT)/2"| bc -l`
echo "alto sin bordes: $ALTO_OUT, con borde: $BORDE"
# Borramos Pelicula.m1v y Pelicula.mpa
rm -f Pelicula.m1v Pelicula.mpa
cd $TEMPFOLDER
#echo "transcode -i "$FILE" -V -x mplayer -y mpeg2enc,mp2enc -F 0,"-q 7" -Z ${WIDTH_OUT}x$ALTO_OUT -Y -$BORDE,0,-$BORDE,0 --export_asr 2 -E 44100 -b 160 -o $DIR/Pelicula -w $MAXRATE"
transcode -i "$FILE" -V -x mplayer -y mpeg2enc,mp2enc -F 2,"-q $QUANTUM" -Z ${WIDTH_OUT}x$ALTO_OUT -Y -$BORDE,0,-$BORDE,0 --export_asr 2 -E 44100 -b $AUDIORATE -o $DIR/Pelicula -w $MAXRATE
rm $TEMPFOLDER/*
rmdir $TEMPFOLDER
cd $DIR
# Si no hay Pelicula.m1v y Pelicula.mpa salir
[ -f Pelicula.m1v -a -f Pelicula.mpa ] || exit 1
rm -f Pelicula*.mpg
#Ahora multiplexamos el .mpg
#mplex -f 2 -m 1 -V -S $CDSIZE -r $MAXRATE Pelicula.m1v Pelicula.mpa -o Pelicula%d.mpg
echo "maxFileSize = $CDSIZE" > $TEMP_TEMPLATE
tcmplex -i Pelicula.m1v -p Pelicula.mpa -o Pelicula.mpg -m 1 -F $TEMP_TEMPLATE
rm $TEMP_TEMPLATE
# Y creamos las imagenes...
for i in `ls Pelicula*.mpg` ; do
vcdimager -t vcd2 -c $i.cue -b $i.bin $i
done
Final divx2cvcd