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

Возможно ли это с помощью 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, вероятно, не сработает, потому что файл, вероятно, поврежден?

Есть другие идеи?

1 ответ

Решение

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

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

Другие вопросы по тегам