sábado, 5 de mayo de 2007

Vídeos de YouTube en DivX / Xvid (I)

De 'El Rincón de Tolito'
Cómo grabar videos de YouTube desde la línea de comandos de Linux para posteriormente convertirlos a formato DivX o Xvid , y así poder verlos tranquilamente en cualquier reproductor de sobremesa, o donde nos dé la gana.
Empezaremos por bajarnos youtube-dl, un script en python que nos servirá para descargar los vídeos de YouTube. Una vez bajado asignamos permisos de ejecución al script mediante:

  • chmod 744 youtube-dl
El uso de este script es tan sencillo como llamar al script seguido de la URL del vídeo a descargar, además admite las siguientes opciones:
  • youtube [opciones] URL
  • -u usuario: asi indicaremos el usuario que usaremos para logearnos
  • -p password: con esto indicaremos el password de la cuenta con la que nos conectamos
  • -o archivo: para indicar el nombre que daremos al archivo de salida
Con este script y algunos conocimiento de shell scripting podemos poner a bajar varios archivos del tirón y podernos ir a dormir mientras se bajan...
Una vez bajados los vídeos vamos a proceder a convertir los vídeos del formato flv (es el formato en el que se nos bajarán los vídeos) a DivX o Xvid. Para llevar a cabo esta tarea necesitamos mencoder y el script siguiente:
#!/bin/sh

if [ -z "$1" ]; then
echo "Usage: $0 {-divx|-xvid} list_of_flv_files"
exit 1
fi

# video encoding bit rate
V_BITRATE=1000

while [ "$1" ]; do
case "$1" in
-divx)
MENC_OPTS="-ovc lavc -lavcopts \
vcodec=mpeg4:vbitrate=$V_BITRATE:mbd=2:v4mv:autoaspect"
;;
-xvid)
MENC_OPTS="-ovc xvid -xvidencopts bitrate=$V_BITRATE:autoaspect"
;;
*)
if file "$1" | grep -q "Macromedia Flash Video"; then
mencoder "$1" $MENC_OPTS -vf pp=lb -oac mp3lame \
-lameopts fast:preset=standard -o \
"`basename $1 .flv`.avi"
else
echo "$1 is not Flash Video. Skipping"
fi
;;
esac
shift
done
Grabamos este script con el nombre flv_avi.sh (o como nos dé la gana) y ya casi lo tenemos todo. Para hacer la conversión debemos llamar al script seguido de -divx o -xvid según el formato de salida y los archivos que queremos convertir. Ejemplo:
  • ./flv-avi.sh -divx video1.flv video2.flv video3.flv
Los archivos de salida tendrán el mismo nombre que los originales, pero con extensión avi.

No hay comentarios: