Fecha de publicación: 30/04/2015
Para convertir cualquier tipo de vídeo en formato MP4 de alta calidad utilizaremos el programa FFmpeg.
Lo primero será instalar el programa FFmpeg. Dependiendo de la distro de nuestro servidor, la instalación seguirá unos pasos u otros. Para Ubuntu podemos seguir estos pasos: https://gist.github.com/xdamman/e4f713c8cd1a389a5917
Es importante instalarte la librería H264. En el link de arriba ya la incluye pero en otras instalaciones tendrás que buscar el comando para instalar la librería con su distribución correspondiente.
function convertir($ruta,$fichero,$ficherosalida){
if (file_exists($ruta.$fichero)){
extension_loaded('ffmpeg') or die('Error in loading ffmpeg');
$vid = realpath($ruta.$fichero);
$ffmpegInstance = new ffmpeg_movie($vid);
$dimensiones = $this->determinar_ancho($ffmpegInstance->getFrameWidth(), $ffmpegInstance->getFrameHeight(), 1280);
exec("ffmpeg -i ".$ruta.$fichero." -y -c:v libx264 -preset medium -crf 30 -threads 4 -s ".$dimensiones[0]."x".$dimensiones[1]." -acodec libfaac -ac 2 -ar 48000 -ab 192k ".$ruta.$ficherosalida);
}
}
private function determinar_ancho($ancho,$alto,$maxx){
$a[0]=0;$a[1]=0;
if ($ancho<=$maxx){
$a[0]=$ancho;
$a[1]=$alto;
}else{
$a[0]=$maxx;
$n=$ancho/$alto;
$a[1]=intval($a[0]/$n);
if ($a[1]%2!=0){
$a[1]++;
}
}
return $a;
}
Con la función convertir realizaremos la conversión del vídeo a MP4 de alta calidad. Los parámetros que le pasaremos a la función son estos:
ruta: La ruta donde se halla el fichero a convertir. Ejemplo: "./peliculas/". Es importante que la ruta que introduzcamos acabe en /
fichero: El nombre del fichero a convertir. Ejemplo: prueba.avi
ficherosalida: El nombre del fichero que se convertirá. Ejemplo: salida.mp4. Es importante que al fichero de salida le pongamos la extensión mp4.