Ripeando DVDs a Divx
con mencoder (mplayer) en Linux
by paranouei
Noticias(20/01/2003): Nuevo foro
disponible. Aquí puedes preguntar tus dudas acerca de esta guía.
Podemos hacerlo de dos formas, directamente al avi, o mediante "three
pass encoding",o lo que es lo mismo "en 3 pasadas". Este método se
explica en http://www.bunkus.org/dvdripping4linux/single/index.html
Ripear directamente
-
probar el DVD, ver cuanto dura en total la peli, incluyendo créditos
etc. y calcularlo en segundos, probar también si el volumen está
muy bajo, pa subirlo por software. También si la peli se ve estirada
con el mplayer puede ser que no se de cuenta que es 16:9, entonces hay
que decirselo con -aspect 16:9 y se debería ver bien (me paso con
tigre y dragón). Tambien ver en que pista empieza la peli, norlmalmente
es en la 1, pero p.ej. en tigre y dragón empezaba en la 10 (mplayer
-dvd 10).
-
calcular el rate para tener el tamaño deseado sabiendo los segundos,
p.ej. con el script encodea-dvd (al final). Es decir, si por ejemplo queremos
que el avi resultante sea menor de 700Mb, calculamos el rate (calidad del
divx en kbits/s) para que nos de justo un valor aproximado con la maxima
calidad.
-
si la peli tiene bordes, calcular el tamaño de los bordes para
quitárselo luego, con p.ej. (opcion cropdetect):
mencoder -aspect 16:9 -dvd 10 -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=694
-vop cropdetect,scale -zoom -xy 640 -oac mp3lame -lameopts abr:br=128:vol=9
-o tigreydragon.avi
dejarlo rular hasta que sepamos que esta encodeando parte de la peli
real (y no los créditos) y entonces sabremos los valores que
hay que ponerle a la opcion crop pa quitar los bordes (p.ej. en tigre
y dragón sale crop=640:272:0:44). También tener en cuenta
que estos valores son relativos a la resolución de salida.
-
ejecutar el mencoder con todos los párametros. Parámetros
opcionales que he puesto yo:
- vol=9 en -lameopts (esto es si el volumen estaba muy bajo en
el dvd, para meterle ganancia. Se pueden poner valores de 1 a 10)
- -aspect 16:9 (esto es porque mplayer no se daba cuenta de
que estaba en este formato y me mostraba la imagen estirada)
- vbitrate=694 en -lavcopts (esto es el rate del video calculado
con mi script encodea-dvd)
- -dvd 10 es en la pista en la que realmente empieza tigre y
dragón (normalmente es en la 1)
- crop=640:272:0:44 en -vop (esto es pa quitar los bordes negros
de la pelicula)
Asi mi comando completo es:
mencoder -aspect 16:9 -dvd 10 -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=694
-vop crop=640:272:0:44,scale -zoom -xy 640 -oac mp3lame -lameopts abr:br=128:vol=9
-o tigreydragon.avi
Esto encodeara la peli directamente desde el DVD y de una pasada. Recomiendo
que mientras se esté encodeando en otra terminal se lance el mplayer
sobre el .avi resultante para probar si va saliendo al gusto (resolución,
calidad, volumen, etc.)
Ripear con el metodo de las pasadas:
Este metodo se explica en http://www.bunkus.org/dvdripping4linux/single/index.html.De
todas formas lo hace partiendo de los *.vob ya en el disco duro, se puede
hacer directamente de este modo:
-
Primero el sonido:
mencoder -dvd 1 -ovc frameno -o frameno.avi -oac mp3lame -lameopts
abr:br=128
-
Primera pasada:
mencoder -dvd 1 -nosound -oac copy -o /dev/null -ovc lavc -lavcopts
vcodec=mpeg4:vbitrate=800:vhq:vpass=1:vqmin=1:vqmax=31 -vop scale -zoom
-xy 640 -npp lb
-
Segunda pasada:
mencoder -dvd 1 -oac copy -o file.avi -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=800:vhq:vpass=2:vqmin=1:vqmax=31
-vop scale -zoom -xy 640 -npp lb
Script encodea-dvd:
#!/bin/bash
if [ $# != 1 ] ; then echo "Uso: encodea-dvd <tiempo en segundos de la peli>" echo "" exit 1 fi
# Maximo tamanyo es 700mb o sea 716800kbytes pero ponemos un poco menos # por si acaso MAXSIZE=700000
SEGUNDOS=$1 MINUTOS=$(($SEGUNDOS/60))
#Rate del audio es 128bits/s o 16kbytes/s AUDIOSIZE=$((16*$SEGUNDOS)) LIBRE=$(($MAXSIZE - $AUDIOSIZE)) RATE=$((($LIBRE*8) / $SEGUNDOS))
echo "Calculando rate para pelicula de duracion $MINUTOS minutos..."
echo "Rate estimado: $RATE"
FINALSIZE=$(( ($RATE * $SEGUNDOS)/8 + $AUDIOSIZE))
echo "Tamaño estimado: $FINALSIZE"
echo "El comando seria:" echo "mencoder -dvd 1 -ovc lavc \ -lavcopts vcodec=mpeg4:vhq:vbitrate=$RATE \ -vop scale -zoom -xy 640 -oac mp3lame \ -lameopts abr:br=128 -o file.avi"
|