php video ffmpeg duration

¿Cómo obtener la duración, dimensión y tamaño del video en PHP?



ffmpeg duration (4)

Si tiene FFMPEG instalado en su servidor ( http://www.mysql-apache-php.com/ffmpeg-install.htm ), es posible obtener los atributos de su video usando el comando " -vstats " y analizando el resultado con algunas expresiones regulares, como se muestra en el siguiente ejemplo. Entonces, necesitas el funtion PHP filesize () para obtener el tamaño.

$ffmpeg_path = ''ffmpeg''; //or: /usr/bin/ffmpeg , or /usr/local/bin/ffmpeg - depends on your installation (type which ffmpeg into a console to find the install path) $vid = ''PATH/TO/VIDEO''; //Replace here! if (file_exists($vid)) { $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime_type = finfo_file($finfo, $vid); // check mime type finfo_close($finfo); if (preg_match(''/video//*/'', $mime_type)) { $video_attributes = _get_video_attributes($vid, $ffmpeg_path); print_r(''Codec: '' . $video_attributes[''codec''] . ''<br/>''); print_r(''Dimension: '' . $video_attributes[''width''] . '' x '' . $video_attributes[''height''] . '' <br/>''); print_r(''Duration: '' . $video_attributes[''hours''] . '':'' . $video_attributes[''mins''] . '':'' . $video_attributes[''secs''] . ''.'' . $video_attributes[''ms''] . ''<br/>''); print_r(''Size: '' . _human_filesize(filesize($vid))); } else { print_r(''File is not a video.''); } } else { print_r(''File does not exist.''); } function _get_video_attributes($video, $ffmpeg) { $command = $ffmpeg . '' -i '' . $video . '' -vstats 2>&1''; $output = shell_exec($command); $regex_sizes = "/Video: ([^,]*), ([^,]*), ([0-9]{1,4})x([0-9]{1,4})/"; // or : $regex_sizes = "/Video: ([^/r/n]*), ([^,]*), ([0-9]{1,4})x([0-9]{1,4})/"; (code from @1owk3y) if (preg_match($regex_sizes, $output, $regs)) { $codec = $regs [1] ? $regs [1] : null; $width = $regs [3] ? $regs [3] : null; $height = $regs [4] ? $regs [4] : null; } $regex_duration = "/Duration: ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}).([0-9]{1,2})/"; if (preg_match($regex_duration, $output, $regs)) { $hours = $regs [1] ? $regs [1] : null; $mins = $regs [2] ? $regs [2] : null; $secs = $regs [3] ? $regs [3] : null; $ms = $regs [4] ? $regs [4] : null; } return array(''codec'' => $codec, ''width'' => $width, ''height'' => $height, ''hours'' => $hours, ''mins'' => $mins, ''secs'' => $secs, ''ms'' => $ms ); } function _human_filesize($bytes, $decimals = 2) { $sz = ''BKMGTP''; $factor = floor((strlen($bytes) - 1) / 3); return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$sz[$factor]; }

Quiero saber cómo obtener la duración, dimensión y tamaño del archivo de video cargado en PHP. El archivo puede estar en cualquier formato de video.


Si usa Wordpress, puede usar la función de creación de wordpress en la identificación de video proporcionada wp_get_attachment_metadata($videoID):

wp_get_attachment_metadata($videoID);

me ayudo mucho. Es por eso que lo estoy publicando, aunque la pregunta fue hecha en 2011.


getID3 admite formatos de video. Ver: http://getid3.sourceforge.net/

Editar: Entonces, en formato de código, sería como:

include_once(''pathto/getid3.php''); $getID3 = new getID3; $file = $getID3->analyze($filename); echo("Duration: ".$file[''playtime_string'']. " / Dimensions: ".$file[''video''][''resolution_x'']." wide by ".$file[''video''][''resolution_y'']." tall". " / Filesize: ".$file[''filesize'']." bytes<br />");

Nota: ¡Debe incluir las clases getID3 antes de que esto funcione! Ver el enlace de arriba.

Editar: Si tiene la capacidad de modificar la instalación de PHP en su servidor, una extensión de PHP para este propósito es ffmpeg-php. Ver: http://ffmpeg-php.sourceforge.net/


https://github.com/JamesHeinrich/getID3 descargar zip getid3 y que solo getid3 nombre copiar copiar pegar en la carpeta del proyecto y utilizarlo como se muestra a continuación ...

<?php require_once(''/fire/scripts/lib/getid3/getid3/getid3.php''); $getID3 = new getID3(); $filename="/fire/My Documents/video/ferrari1.mpg"; $fileinfo = $getID3->analyze($filename); $width=$fileinfo[''video''][''resolution_x'']; $height=$fileinfo[''video''][''resolution_y'']; echo $fileinfo[''video''][''resolution_x'']. ''x''. $fileinfo[''video''][''resolution_y'']; echo ''<pre>'';print_r($fileinfo);echo ''</pre>''; ?>