Вот мой код для захвата кадра и создания изображения из видео ...
// get the duration and a random place within that
$cmd = "ffmpeg -i " . $videoPath . " 2>&1";
if (preg_match('/Duration: ((\d+):(\d+):(\d+))/s', `$cmd`, $time)) {
$total = ($time[2] * 3600) + ($time[3] * 60) + $time[4];
$second = rand(1, ($total - 1));
}
exec($cmd);
// get the screenshot
exec("ffmpeg -i " . $videoPath . " -deinterlace -an -ss $second -t 00:00:01 -r 1 -y -vcodec mjpeg -f mjpeg " . $imageOutput . " 2>&1");
$ second - это случайное число от 0 до общей продолжительности.
а второй exec () - создать файл изображения из выбранного кадра.
$ imageOutput - это абсолютный путь к сгенерированному изображению.
например: /home/ariawan/image-generated.jpg