La íºltima función que he tenido que crear para un proyecto era una para generar un pantallazo en jpg de un fotograma de un vídeo .flv. No recuerdo en qué web encontré la respuesta, pero pasaba por utilizar ffmpeg.
Este es el método que me ha quedado:
function Genera_Pantallazo($origen,$fotograma) {
$destino=substr_replace($origen,".jpg",-4);
$segundos=$fotograma;
$horas = intval($segundos/3600);
$segundos -= $horas*3600;
$minutos = intval($segundos/60);
$segundos -= $minutos*60;
$tiempo=$horas.":".$minutos.":".$segundos;
$comando="ffmpeg -i $origen -vcodec mjpeg -ss $tiempo -vframes 1 -f image2 $destino";
// echo "Ejecutamos $comando
"; <--- Para comprobar que formábamos bien el comando
exec($comando);
return basename($destino);
}
Como véis, es bastante sencillo. Recibimos 2 variables: la ruta origen al fichero de vídeo y el níºmero del segundo del que queremos generar el pantallazo. Lo primero que hacemos es especificar la ruta destino, que será la misma que la de origen, pero cambiando la extensión a .jpg.
Después realizamos el cálculo de horas, minutos y segundos a partir de los segundos que hemos pasado, para componer una cadena del tipo HH:MM:SS, que es la que pasaremos, a continuación, a ffmpeg, al cual le indicamos el codec de salida, el níºmero de frames (1 para el pantallazo) y las rutas.
Por íºltimo, devuelvo el nombre del fichero generado. Modificar al gusto ;)
1 Response