jueves, 30 de mayo de 2013

Convertir videos para el Galaxy Ace (o cualquier dispositivo Android parecido) en Linux con FFMPEG

Estoy contento con mi Galaxy Ace desde hace tiempo. Pero uno de los problemas con los que me había topado, es que, a pesar de que instalando el Reproductor de video MX Player, que reproduce gran variedad de formatos, hay momentos en los que, ciertamente, un video en un formato "adecuado" para el celular, sería mejor opción.

Ya sea porque el video original ocupa mucho espacio o porque el formato original funciona bien pero al adelantar/atrasar, hay retrasos, siempre se presenta la oportunidad de usar un formato más amigable con los codificadores estándar del aparato.

Por esa razón, revisé varios posts y guías de conversión y encontré un comando con una serie de opciones, que brinda la mejor relación peso/calidad en el video producido.

El comando en cuestión sería el siguiente:
 ffmpeg -i video.original -s 428x320 -y -vcodec libx264 -acodec libmp3lame -ac 2 -ar 44100 -ab 128k -aspect 16:9 -preset slow -profile:v baseline -level 30 -maxrate 10000000 -bufsize 10000000 -f mp4 -threads 0 video.ace.mp4  


Se pueden usar opciones más sencillas, pero el resultado en este caso es un poco mejor (en opinión del que escribe). El script es el siguiente:

 #!/bin/bash  
 arg=$2  
 if [ ${arg} == "-w" ]  
 then  
      asp="16:9"  
 elif [ ${arg} == "-s" ]  
 then  
      asp="4:3"  
 else  
      echo "YOU MUST SPECIFY A VIDEO ASPECT RATIO: WIDESCREEN (-w) OR STANDARD (-s), EG:"  
      echo "gaceconv originalvideo.avi -w"       
      exit 1  
 fi  
 original=${1}  
 name=${original:0:${#original}-4}  
 ffmpeg -i "${original}" -s 428x320 -y -vcodec libx264 -acodec libmp3lame -ac 2 -ar 44100 -ab 128k -aspect ${asp} -preset slow -profile:v baseline -level 30 -maxrate 10000000 -bufsize 10000000 -f mp4 -threads 0 "${name}.ace".mp4  

Lo guardan como "gaceconv.sh" y lo ejecutan como

 gaceconv originalvideo.avi -w  

ó

 gaceconv originalvideo.avi -s  

La opción "-w" produce un video con formato 16:9 (panorámico) y "-s" produce formato "estándar" 4:3 o "cuadrado".

El video resultante tiene dimensiones de 480x320 pixels.