Resultados 1 al 1 de 1

De DivX a VCD en GNU/Linux

Esta es una discusión para el tema De DivX a VCD en GNU/Linux en el foro Manuales Multimedia, bajo la categoría Multimedia; Sacado de Linux Media El siguiente script divx2vcd, se encarga de los cálculos para obtener una imagen con el mismo aspecto (añadiendo bordes negros si hace falta). Usa bitrate constante, ...
Página: 1


  1. #1
    Señor Oscuro Avatar de LordSauron

    Fecha de ingreso
    21 oct, 04
    Ubicación
    Un diminuto punto en el Universo
    Mensajes
    4,807

    De DivX a VCD en GNU/Linux

    Sacado de Linux Media


    El siguiente script divx2vcd, se encarga de los cálculos para obtener una imagen con el mismo aspecto (añadiendo bordes negros si hace falta). Usa bitrate constante, de forma que es totalmente estándar VCD. El tamaño máximo de cada archivo (para que entre en un CD, está en la variable CDSIZE. El script se encarga de crear el video y el audio con transcode, luego multiplexarlos con mplex, y finalmente crear las imágenes.


    -- Inicio divx2vcd --



    #!/bin/bash



    # Este script pasa un Divx a VCD. 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=795

    #VIDEORATE=1150

    AUDIORATE=224



    if [ $# -eq 0 ]; then

    * * * * echo "Usage:"

    * * * * echo "* * * * divx2vcd <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`

    * * * *

    echo "*************** FILE INFO ***************"

    echo "Frame Size: ${WIDTH}x${HEIGHT}* -* FPS: $FPS"

    echo "Length: $FRAMES* -* Seconds: $SEGUNDOS_TOTAL"

    echo "$HORAS hours, $MINUTOS minutes, $SEGUNDOS seconds"



    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 1 -Z ${WIDTH_OUT}x$ALTO_OUT -Y -$BORDE,0,-$BORDE,0 \

    * --export_asr 2 -E 44100* -b $AUDIORATE -o $DIR/Pelicula"

    transcode -i "$FILE" -V -x mplayer -y mpeg2enc,mp2enc \

    * -F 1 -Z ${WIDTH_OUT}x$ALTO_OUT -Y -$BORDE,0,-$BORDE,0 \

    * --export_asr 2 -E 44100* -b $AUDIORATE -o $DIR/Pelicula



    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





    # Y creamos las imagenes...

    for i in `ls Pelicula*mpg` ; do

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

    done



    -- Final divx2vcd --
    </stdin></stdin></stdin></stdin></divxfile>
    Última edición por 888; 14/12/2009 a las 20:25

     
     

Temas similares

  1. Grabar Divx y No Divx en un DVD ¿es posible?
    Por jac2 en el foro Multimedia
    Respuestas: 16
    Último mensaje: 31/01/2006, 17:00
  2. Divx 5.0
    Por juanito_md1 en el foro Multimedia
    Respuestas: 4
    Último mensaje: 30/11/2005, 16:36
  3. De DivX a SVCD en GNU/Linux
    Por LordSauron en el foro Manuales Multimedia
    Respuestas: 0
    Último mensaje: 07/06/2005, 00:23
  4. DivX a CVCD en GNU/Linux
    Por ..sR. aDiKtO.. en el foro Manuales Multimedia
    Respuestas: 0
    Último mensaje: 05/08/2003, 09:22

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •