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