Как я могу получить размеры видео файла Flash из кода PHP? - PullRequest
3 голосов
/ 30 декабря 2008

У меня есть приложение, в которое пользователи могут загружать видеофайлы любого размера, и я хотел бы иметь возможность определять высоту / ширину флэш-видеофайла (flv или f4v) из сценария PHP, чтобы я мог Размер игрока соответственно. Мне бы понравилось чистое PHP-решение, но я был бы открыт для интерпретации инструмента командной строки и анализа результатов (если такой инструмент существует).

Заранее спасибо!

Ответы [ 5 ]

5 голосов
/ 30 декабря 2008

ffmpeg , вероятно, ваш лучший выбор, даже есть модуль php .

ffmpeg -i "FileName"

В качестве альтернативы вы можете прочитать информацию из FLV-файла напрямую, открыв файл и прочитав метаинформацию.

2 голосов
/ 30 декабря 2008

Если вы не можете использовать ffmpeg, потому что у вас нет контроля над вашим сервером или если вы хотите получить решение PHP, взгляните на getID3 , есть модуль FLV это должно вернуть разрешение.

1 голос
/ 03 апреля 2009

Там также flv4php .

Если заголовок файла содержит размеры видео (что не всегда так), вы также можете использовать следующий код:

function flvdim($name) {
    $file = @fopen($name, 'rb');
    if($file === false)
        return false;

    $header = fread($file, 2048);
    fclose($file);
    if($header === false)
        return false;

    return array(
        'width' => flvdim_get($header, 'width'),
        'height' => flvdim_get($header, 'height')
    );
}

function flvdim_get($header, $field) {
    $pos = strpos($header, $field);
    if($pos === false)
        return false;

    $pos += strlen($field) + 2;
    return flvdim_decode(ord($header[$pos]), ord($header[$pos + 1]));
}

function flvdim_decode($byte1, $byte2) {
    $high1 = $byte1 >> 4;
    $high2 = $byte2 >> 4;
    $low1 = $byte1 & 0x0f;

    $mantissa = ($low1 << 4) | $high2;

    // (1 + m·2^(-8))·2^(h1 + 1) = (2^8 + m)·2^(h1 - 7)
    return ((256 + $mantissa) << $high1) >> 7;
}

Пожалуйста, обратите внимание, что этот код обратно разработан из бинарных файлов, но, похоже, работает достаточно хорошо.

0 голосов
/ 03 апреля 2009

Я слышал, что вы можете использовать обычный getimagesize (), но я не проверял это. Попробуйте.

0 голосов
/ 30 декабря 2008

Как вариант, У Томми Лакруа тоже есть интересное решение для считывания метаданных из файлов FLV.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...