Próbuję generować miniatury z losowych punktów w filmie przy użyciu rozszerzeń FFMPEG i FFMPEG-PHP.Generowanie losowych miniatur za pomocą PHP + FFMPEG
Mój skrypt działa OK .. jednak zajmuje 20 minut, aby wygenerować 5-10 miniatur!
Skrypt działa poprzez generowanie liczb losowych, które są później używane jako numery ramek. Wszystkie wygenerowane liczby mieszczą się w zakresie liczby klatek filmu.
Czy możesz wyjaśnić, dlaczego ten skrypt trwa 20 minut? Jeśli nie, lepszym rozwiązaniem?
<?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/>';
}
?>
Skrypt powinien generować numery ramek, które są prawidłowe? Wszystko w ramach START-END powinno być prawidłowymi numerami ramek? A jednak pętla trwa wieki!
30 minut? Co? Chciałbym przekonwertować 1 TB wideo. –