Как получить продолжительность, размер и размер видео в PHP?

Я хочу знать, как получить продолжительность, размер и размер загруженного видеофайла в PHP. Файл может быть в любом видеоформате.

getID3 поддерживает видеоформаты. См .: http://getid3.sourceforge.net/

Изменить: Итак, в формате кода это будет выглядеть так:

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

Примечание. Перед тем, как это будет работать, вы должны включить классы getID3! См. Приведенную выше ссылку.

Изменить. Если у вас есть возможность изменить установку PHP на вашем сервере, расширение PHP для этой цели – ffmpeg-php. См .: http://ffmpeg-php.sourceforge.net/

Если на вашем сервере установлен FFMPEG ( http://www.mysql-apache-php.com/ffmpeg-install.htm ), вы можете получить атрибуты своего видео с помощью команды « -vstats » и разбора результат с некоторым регулярным выражением – как показано в примере ниже. Затем вам понадобится PHP funtion filesize (), чтобы получить размер.

 $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]; } 

Если вы используете WordPress, вы можете просто использовать функцию сборки wordpress с предоставленным идентификатором видео wp_get_attachment_metadata ($ videoID):

 wp_get_attachment_metadata($videoID); 

Мне очень помогли. вот почему я отправляю его, хотя вопрос был задан в 2011 году.

https://github.com/JamesHeinrich/getID3 скачать getid3 zip, а не только getid3 с именем folder copy paste в папке проекта и использовать его, как показано ниже …

 <?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>'; ?>