Skip to content

Commit 36acc54

Browse files
author
Vladimír Gorej
committed
Merge pull request #17 from nburka/master
Much faster seeking to get frames much faster.
2 parents 5e83e76 + 4c8d117 commit 36acc54

1 file changed

Lines changed: 15 additions & 2 deletions

File tree

FFmpegMovie.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -675,11 +675,24 @@ public function getFrameAtTime($seconds = null, $width = null, $height = null, $
675675

676676
$output = array();
677677

678+
// fast and accurate way to seek. First quick-seek before input up to
679+
// a point just before the frame, and then accurately seek after input
680+
// to the exact point.
681+
// See: http://ffmpeg.org/trac/ffmpeg/wiki/Seeking%20with%20FFmpeg
682+
if ($frameTime > 30) {
683+
$seek1 = $frameTime - 30;
684+
$seek2 = 30;
685+
} else {
686+
$seek1 = 0;
687+
$seek2 = $frameTime;
688+
}
689+
678690
exec(implode(' ', array(
679691
$this->ffmpegBinary,
692+
'-ss '.$seek1,
680693
'-i '.escapeshellarg($this->movieFile),
681694
'-f image2',
682-
'-ss '.$frameTime,
695+
'-ss '.$seek2,
683696
'-vframes 1',
684697
$image_size,
685698
$quality,
@@ -745,4 +758,4 @@ public function unserialize($serialized) {
745758
) = unserialize($serialized);
746759

747760
}
748-
}
761+
}

0 commit comments

Comments
 (0)