0

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

13

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

3 ответ(ов)

0

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

Редактирование: В коде это будет выглядеть так:

include_once('pathto/getid3.php');
$getID3 = new getID3;
$file = $getID3->analyze($filename);
echo("Длительность: ".$file['playtime_string'].
" / Размеры: ".$file['video']['resolution_x']." пикселей в ширину на ".$file['video']['resolution_y']." пикселей в высоту".
" / Размер файла: ".$file['filesize']." байт<br />");

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

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

0

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

Вот пример кода:

$ffmpeg_path = 'ffmpeg'; // или: /usr/bin/ffmpeg, или /usr/local/bin/ffmpeg - зависит от вашей установки (введите 'which ffmpeg' в консоль, чтобы узнать путь установки)
$vid = 'PATH/TO/VIDEO'; // Замените на путь к вашему видео!

if (file_exists($vid)) {

    $finfo = finfo_open(FILEINFO_MIME_TYPE);
    $mime_type = finfo_file($finfo, $vid); // Проверка типа MIME
    finfo_close($finfo);

    if (preg_match('/video\/*/', $mime_type)) {

        $video_attributes = _get_video_attributes($vid, $ffmpeg_path);

        print_r('Кодек: ' . $video_attributes['codec'] . '<br/>');

        print_r('Размеры: ' . $video_attributes['width'] . ' x ' . $video_attributes['height'] . ' <br/>');

        print_r('Длительность: ' . $video_attributes['hours'] . ':' . $video_attributes['mins'] . ':'
                . $video_attributes['secs'] . '.' . $video_attributes['ms'] . '<br/>');

        print_r('Размер:  ' . _human_filesize(filesize($vid)));

    } else {
        print_r('Файл не является видео.');
    }
} else {
    print_r('Файл не существует.');
}

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})/"; // Или: $regex_sizes = "/Video: ([^\r\n]*), ([^,]*), ([0-9]{1,4})x([0-9]{1,4})/"; (код от @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];
}

Убедитесь, что у вас правильно установлен путь к ffmpeg и указан путь к вашему видеофайлу. Этот код проверяет, является ли файл видео и выводит его кодек, размеры, длительность и размер файла в удобочитаемом формате.

0

Чтобы использовать библиотеку getID3 в вашем проекте, выполните следующие шаги:

  1. Скачайте архив getID3 с GitHub.
  2. Распакуйте архив и найдите папку с именем getid3.
  3. Скопируйте папку getid3 в директорию вашего проекта.

После этого вы можете использовать библиотеку следующим образом:

<?php
require_once('/path/to/your/project/getid3/getid3.php'); // Убедитесь, что путь правильный
$getID3 = new getID3();
$filename = '/path/to/your/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>';
?>

Обратите внимание, что вам следует заменить /path/to/your/project/ и /path/to/your/video/ на актуальные пути в вашем проекте. После этого код успешно проанализирует видеофайл и выведет его разрешение, а также другую информацию, содержащуюся в массиве $fileinfo.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь