Decodificacion de video en linea de comando

Tuve la oportunidad de colaborar en un proyecto de conversion de formatos de archivo en un cliente.

Normalmente no hago este tipo de tareas debido a mi poca experiencia en el tema, pero mi pasion por las peliculas y la musica hizo que me aventurara en este proyecto.

 

Antecedentes

Desde el 2005, inicie un proyecto personal de “estandarizacion” de algunos videos que tenia, los mismos estaban en diferentes formatos, lo cual, en esa epoca no era reproducible en mi reproductor de DVD. En aquella epoca tampoco tenia una grabadora de DVD para mi mala suerte, pero si contaba con una grabadora de CD, entonces, lo que queria hacer, era tener el DVD rippeado, y grabarlo en un CD con algun formato de compresion, para poder reproducirlo en mi DVD.

mis 3 opciones fueron DivX, XviD o VCD, la ultima quedo descartada, debido a la pobre calidad que recibia despues de ripearlo. Asi que me quede con DIVX o XVID.

 

Convertidores de Video

Inicialmente estuve probando con varias herramientas de conversion en Windows XP, probe con Virtualdub y el codificador del divx, en aquella epoca la version 5. En mi opinion resultaba muy lento y dependiendo de la pelicula, podia tomarme 1 noche entera ripear toda una pelicula. Lo cual me parecio mucho, luego comence a buscar, confieso que con cierto escepticismo, herramientas en linea de comando en linux y encontre a ffmpeg y mencoder.

FFMPEG y MENCODER son herramientas, en linea de comando, para conversion, grabacion y streaming de video, estas magnificas herramientas, optimizadas para trabajar sobre linux, resultan ser excelentes para codificar video y convertir de un formato a otro.

 

Instalación de Ffmpeg y Mencoder

Desde hace 4 años ripeo o convierto mis videos en linea de comando, en ubuntu. 

La instalacion es extremadamente facil, basta con hacer un sudo apt-get install ffmpeg mencoder en ubuntu o yum install ffmpeg mencoder para instalar ambas aplicaciones, y en minutos estaremos listos para poder rippear video.

 

La parte divertida de este articulo

Aqui viene lo mejorcito, la manera de como ripear video desde linea de comando, estos comandos son combinaciones que a mi me sirvieron para convertir o ripear mis peliculas. De hecho hay varias maneras de hacerlo, sin embargo aqui les pongo las mías. 

 

Para convertir un video a DivX

mencoder videoinicial.avi -o videofinal.avi -ovc lavc -oac mp3lame -ffourcc DX50 -lavcopts mbd=0:vbitrate=780 -lameopts vbr=2:aq=3:q=3 -vf harddup=1 -channels 2 -srate 32000 -ofps 29.97 

Donde: 

  • oac mp3lame es el codificador de salida de audio, en este caso lame, para mp3
  • ffourcc DX50 es el codificador para divx
  • vbitrate=780 es el bitrate variable para la codificacion en divx, lo recomendado para un equipo de casa es 780kbps
  • lameopts vbr=2:aq=3:q=3 son las opciones de codificacion de audio, en este caso el codificador en mp3 es lame, se codificara en bitrate variable con “buena calidad” (3), la maxima calidad es 0
  • channels 2 son los canales de audio, para la codificacion en mp3, en este caso stereo.
  • ofps 29.97 son los cuadros por segundo que se usara para la codificacion, en este caso 29.97 que es pelicula.

 

ffmpeg -i videoinicial.avi -f avi -vcodec mpeg4 -acodec mp3 videofinal.avi

  • i = parametro para indicar que seguido viene el video de entrada o video que queremos convertir
  • videoinicial.avi = video que queremos convertir a otro formato
  • f avi = formato al que queremos llegar, en este caso a divx
  • vcodec mpeg4 = El codec de video a usar, en este caso el estandar mp4
  • acodec mp3 = El codec de audio a usar, en este caso el de mp3
  • videofinal.avi = archivo final al que se desea llegar 

 

Para convertir a VCD

ffmpeg -i videoinicial.avi  -target ntsc-vcd videofinal.mpg 

Esta es facil. 

  • i = parametro para indicar que seguido viene el video de entrada o video que queremos convertir
  • target ntsc-vcd = formato final, en este caso se especifica que queremos que sea un VCD en formato ntsc, compatible con el sistema norteamericano, compatible aqui en Peru.
  • videofinal.mpg = el archivo final que quedara convertido, listo para VCD 

 

Para convertir a FLV (Flashvideo)

ffmpeg -i videoinicial.avi -ar 22050 -ab 32 -f flv -s 320×240 videofinal.flv 

Otra fácil, 

  • i = parametro, para indicar que seguido viene el video de entrada o video que queremos convertir
  • ar 22050 = audio rate o promedio de bitrate de audio, dependiendo de la calidad que elijamos en este caso 22050 es mas que suficiente para un video en formato flash video, este formato no esta diseñado pensando en calidad, sino en velocidad, asi que la calidad de audio no interesa mucho, tomen en cuenta que el normal, con calidad CD, es 44100.
  • f flv = formato final, al cual queremos convertir
  • ab 32 = audio bitrate, especifica el bitrate de audio a usar, en este caso 32000 (esta expresado en miles)
  • s 320×240 = tamaño final al cual queremos reducir, normalmente ffmpeg codifica al mismo tamaño del vídeo original, en este caso queria reducirlo a 320×240, para hacer un archivo mas pequeño y por ende mas rapido de reproducir, se puede subir el tamaño del video a 640×480, 800×600 o mas, dependiendo del tamaño que se busque.
  • videofinal.flv = el video que queremos tener como resultado.

mencoder videoinicial.avi -o videofinal.flv -of lavf -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 

 

Para convertir a XVID   \o/!!

mencoder videoinicial.avi -o videofinal.avi -ovc xvid -oac mp3lame -ffourcc DX50 -xvidencopts bitrate=780 -lameopts vbr=2:aq=3:q=3 -vf harddup=1 -channels 2 -srate 32000 -ofps 25.00 

La conversion a XVID es muy similar a la conversion a DivX, sin embargo hay algunos pequeños cambios. 

  • videoinicial.avi = Video que queremos convertir a otro formato
  • -o = Parámetro que indica que lo siguiente sera la salida de archivo
  • videofinal.flv = El video que queremos tener como resultado
  • -ovc xvid = codec codificador de video que queremos usar para convertir el video, en este caso xvid
  • -oac mp3lame = codec codificador de audio que queremos usar para convertir erl audio, en este caso mp3
  • -ffourcc DX50 = especificacion del codec de codificacion a usar, en este caso divx/xvid
  • bitrate=780 = Es el bitrate variable para la codificacion en divx, lo recomendado para un equipo de casa es 780kbps
  • -lameopts vbr=2:aq=3:q=3 son las opciones de codificacion de audio, en este caso el codificador en mp3 es lame, se codificara en bitrate variable con “buena calidad” (3), la maxima calidad es 0
  • -channels 2 = Canales de audio a usar, en este caso 2, la salida final sera en stereo.
  • -srate 32000 = sound rate o resolucion de audio, en este caso 32000 kbps
  • ofps 25.00 =marcos por segundo de salida, en este caso 25.00 

 

Para convertir a XVID en 2 pasadas (mayor calidad / menor perdida)

mencoder videoinicial.avi -ovc xvid -oac mp3lame -xvidencopts pass=1 -o /dev/null   <— Para la primera pasada

mencoder videoinicial.avi -ovc xvid -oac mp3lame -xvidencopts pass=2:bitrate:780 -o xvid.avi  <— Para la segunda pasada 

 

Para convertir desde DVD a XVID en 2 pasadas (mayor calidad / menor perdida)

mencoder dvd://1 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o /dev/null  <— Para la primera pasada

mencoder dvd://1 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 -oac copy -o output.avi  <— Para la segunda pasada

 

Haciendo un volcado del DVD hacia el disco duro

mplayer dvd://1 -dumpstream -dumpfile title1.vob

Deja un comentario