Захватить кадр без загрузки всего файла?

Возможно ли это с помощью php + ffmpeg?

ffmpeg-php имеет возможность:

Возможность захватывать кадры из файлов фильмов и возвращать их в виде изображений, которыми можно манипулировать с помощью встроенных в PHP функций обработки изображений. Это отлично подходит для автоматического создания эскизов для файлов фильмов.

Я просто не хочу загружать весь файл перед этим. Итак, скажем, я хочу захватить кадр @ 10% фильма:

Сначала давайте получим размер удаленного файла:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_URL, $url); //specify the url
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
$head = curl_exec($ch);

$size = curl_getinfo($ch,CURLINFO_CONTENT_LENGTH_DOWNLOAD);

Тогда довольно легко загрузить только 10% файла .flv или .mov с помощью curl.

Но трюк с захватом кадров с использованием ffmpeg-php, вероятно, не сработает, потому что файл, вероятно, поврежден?

Любые другие идеи?


person Writecoder    schedule 10.01.2012    source источник


Ответы (1)


Да, я верю, что это сработает. Для видеофайлов, если у вас есть начало файла, подобная обработка должна быть возможна. (Если бы у вас был, например, только кусок файла из середины, это, вероятно, не сработало бы.)

В командной строке я загрузил первую часть файла .FLV с помощью Curl, затем захватил кадры с помощью ffmpeg, и все заработало правильно. То же самое в PHP тоже должно работать.

person BrianC    schedule 12.01.2012