Я пытаюсь создать эскизы из случайных точек в фильме, используя расширение FFMPEG и FFMPEG-PHP.Создание случайных эскизов с PHP + FFMPEG
Мой скрипт работает нормально .. однако требуется 20 минут, чтобы сгенерировать 5-10 миниатюр!
Сценарий работает путем генерации случайных чисел, которые позднее используются в качестве номеров кадров. Все сгенерированные числа находятся в пределах количества кадров в фильмах.
Можете ли вы понять, почему этот сценарий занимает 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 должно быть действительным числом кадров? Но петля занимает много времени!
30 минут? Что за? Я бы конвертировал 1 ТБ видео. –