Generar pantallazo de un vídeo.

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 ;)

Leave a Reply

Your email address will not be published. Required fields are marked *