Я пытаюсь сгенерировать миниатюры из случайных точек в фильме, используя расширение FFMPEG и FFMPEG-PHP.
Мой сценарий работает нормально, однако для генерации 5-10 миниатюр требуется 20 минут!!
Скрипт работает, генерируя случайные числа, которые позже будут использоваться в качестве номеров кадров.Все сгенерированные числа находятся в пределах количества кадров фильма.
Можете ли вы понять, почему этот сценарий занимает 20 минут, чтобы закончить?Если нет, лучшее решение?
<?php
//Dont' timeout
set_time_limit(0);
//Load the file (This can be any file - still takes ages)
$mov = new ffmpeg_movie('1486460.mp4');
//Get the total frames within the movie
$total_frames = $mov->getFrameCount();
//Loop 5-10 times to generate random frames 5-10 times
for ($i = 1; $i <= 5; ) {
// Generate a number within 200 and the total number of frames.
$frame = mt_rand(200,$total_frames);
$getframe = $mov->getFrame($frame);
// Check if the frame exists within the movie
// If it does, place the frame number inside an array and break the current loop
if($getframe){
$frames[$frame] = $getframe ;
$i++;
}
}
//For each frame found generate a thumbnail
foreach ($frames as $key => $getframe) {
$gd_image = $getframe->toGDImage();
imagejpeg($gd_image, "images/shot_".$key.'.jpeg');
imagedestroy($gd_image);
echo $key.'<br/>';
}
?>
Сценарий ДОЛЖЕН генерировать номера кадров, которые являются действительными?Что-нибудь в START - END должно быть действительными номерами кадров?И все же цикл занимает целую вечность!