DivX a CVCD en GNU/Linux

  • Iniciador del tema ..sR. aDiKtO..
  • Fecha de inicio
Estado
Cerrado para nuevas respuestas.
S

..sR. aDiKtO..

Guest
Yo añado un script para linux que combierte un divx a cvcd. Da lo mismo el tamaño de la pelicula, el script hara que coja en un cd de 80 minutos, con la calidad maxima posible. El script esta obtenido de: Linux Media yo solo le he añadido un par de cosas, la comprobacion si están los programas para hacer la conversion y que alfinal tengas la posibilidad de poderlo grabarlo en cd. El tiempo aproximado en hacer la conversion y la grabación es de 2 horas en un XP2600+.

#!/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 Values. VCDs are write in Mode 2, so the filesizes are the

# the following:

# * *74 Min/650Mb ---> CDSIZE=735

# *80 Min/700Mb ---> CDSIZE=795

CDSIZE=735

QUANTUM=5

# Maxrate ahora es automatico

#MAXRATE=900

AUDIORATE=128

if [ $# -eq 0 ]; then

*echo "Usage:"

*echo " * * * *divx2cvcd <divxfile>"

*exit 1

fi

# Comprobacion si tienes los programas instalados

if mplayer &> /dev/null

then

*echo -e "n****** MPlayer instalado"

*if transcode -h &>/dev/null

*then

* * *echo -e "n****** Transcode instalado"

* * * *if vcdimager --help &>/dev/null

* * * *then

* * * * * *echo -e "n****** VCDImager instalado"

* * *if tcmplex --help &>/dev/null

* * * * * * *then

* * * * * * *echo -e "n****** MJPEG Tools instaladon"

* * * * * *else

* * * * * * *echo -e "nError: MJPEG Tools no instalado"

* * * * *echo -e "Puedes encontrar el programa en: http://mjpeg.sourceforge.net/"

* * * * * * *exit 1

* * * * * *fi

* * * *else

* * * * * *echo -e "nError: VCDImager no instalado"

* * *echo -e "Puedes encontrar el programa en: http://www.vcdimager.org/"

* * * * * *exit 1

* * * *fi

*else

* * *echo -e "nError: Transcode no instalado"

* * *echo -e "Puedes encontrar el programa en: http://www.theorie.physik.uni-goettingen.d...ranscode/"

* * *exit 1

*fi

else

*echo -e "nError: MPlayer no instalado"

*echo -e "Puedes encontrar el programa en: http://www.mplayerhq.hu/homepage/design6/d...load.html"

*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`

MAXRATE=$VIDEO_RATE

[ $MAXRATE -gt 2000 ] && MAXRATE=2000

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 vídeo bitrate: $VIDEO_RATE"

echo "Using max vídeo 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 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"

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

RETVAL=$?

if [ $RETVAL -ne 0 ]; then

*echo -e "n**** ERROR during transcoding. Error value $RETVAL"

*exit 1

fi

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

echo "maxFileSize = $CDSIZE" > $TEMP_TEMPLATE

tcmplex -i Pelicula.m1v -p Pelicula.mpa -o Pelicula.mpg

*-m 1 -F $TEMP_TEMPLATE

rm $TEMP_TEMPLATE

[ -n "`ls Pelicula*mpg 2> /dev/null`" ] || exit 1

# Y creamos las imagenes...

for y in `ls Pelicula*.mpg`; do

*vcdimager -t vcd2 -c $i.cue -b $i.bin $i

*RETVAL=$?

*if [ $RETVAL -ne 0 ]; then

* * *echo -e "n**** ERROR creating VCD images. Error value $RETVAL"

* * *exit 1

*fi

done

echo -e "n****** CVCD creation finished successfully"

# Ahora es el momento de grabarlo a CD

# cambia el driver generic-mmc por el driver que utilice tu grabadora

# ante la duda dejalo como esta

# y cambia el bus de 0,0,0 a el que utiliceis

# ante la duda dejalo como esta

echo -e "n****** Ahora es el momento de grabarlo en CD"

for y in `ls Pelicula*.cue`; do

*echo -e "n * * *Introduzca un cd virgen y pulsa ENTER"

*read

*cdrdao write --eject --driver generic-mmc --device 0,0,0 $i

done
SALU2</stdin></stdin></stdin></stdin></divxfile>
 
Última edición por un moderador:
Estado
Cerrado para nuevas respuestas.
Arriba Pie