ffmpeg을 이용하여 썸네일을 추출 하고자 하는데 조언 부탁드립니다.

jfk0815의 이미지

ffmpeg을 이용하여 동영상 썸네일을 만들고자 하고있습니다. 그런데 동영상이 커지는 경우 동영상 후반부의 썸네일을 추출하고자 할때 소용되는 시간이 너무 오래걸립니다. 인덱싱을 통한 직접접근이 아니라 썸네일을 추출 시 마다 파일을 처음 부터 읽어서 해당위치에 도착하면 썸네일을 추출하는게 시간이 걸리는 이유로 보입니다. 썸네일 추출을 위해서 처음부터 파일을 읽지 않고 해당 프레임이나 시간대에 화면을 바로 읽을 수 있는 방법이나 시간 단축이 가능할만한 방법에 대해서 조언 부탁드립니다.

제가 테스트하는 환경은 셀러론2.4/1G/Fedora Core release 6입니다.

현재 시도해본 방식은 ffmpeg을 이용한 직접 추출과 php-api를 이용한 방식을 시도해보았습니다.

먼저 ffmpeg을 이용하여 직접추출하는경우는 아래와 같이 옵션을 주었습니다.
ffmpeg -y -i /web/apache2/htdocs/flix/in/1000000246.avi -vframes 1 -ss 00:01:01 -an -vcodec png -f rawvideo -s 160*120 movie.png

php를 이용한경우는 아래와 같습니다. 전체 프레임수를 읽어서 일정한 차이를 두고 getFrame()을 통하여 프레임을 읽도록 구현하였습니다.

<?
$movie = new ffmpeg_movie($uploadfile, false);

$thumb_cnt = $thumb_cnt+1;
$thumbdir = $thumbdir."/";

$total_frame = $movie->getFrameCount();
$frame_interval = floor($total_frame/$thumb_cnt);

for($fr=1; $fr<$thumb_cnt; $fr++){
$frame = $movie->getFrame($fr*$frame_interval);
$frame->resize(160, 120);

@imagepng($frame->toGDImage(), thumbdir.$board_key."_000".$fr.".png");
}

?>