php-ffmpeg太慢 - 生成缩略图?

时间:2013-04-25 06:57:18

标签: php ffmpeg ffmpeg-php

我第一次尝试从视频文件创建缩略图预览,上传700mb .avi电影,209747帧。现在我正在尝试创建1个缩略图,但需要4.7秒,因为我设置了帧10000,如果我将其设置为1000,则生成缩略图只需0.4秒。

如何在不到一秒的时间内在不同的帧中生成5-10个缩略图?它甚至可能吗?使用exec(ffmpeg)或php-ffmpeg是不同的? 在机器2x Xeon L5420上使用0.6-svn ffmpeg,Debian 6.0.7,php 5.4.14仍然很慢......有什么想法吗?如何使用ffmpeg +视频的时间而不是帧?

$movie = 'ai.avi';
$thumbnail = 'thumbnail.jpg';

$mov = new ffmpeg_movie($movie);
$frame = 10000;
$frame = $mov->getFrame($frame);

if($frame) { 
  $gd_image = $frame->toGDImage();
  if($gd_image) {
    imagejpeg($gd_image, $thumbnail, 100);
    imagedestroy($gd_image);
  }
}
echo '<img src="'.$thumbnail.'" ><br />';

1 个答案:

答案 0 :(得分:5)

首先,您使用的是FFmpeg-php,而不是php-FFmpeg。这是两个不同的项目,你的FFmpeg-php项目(非常)旧。

将帧更改为第10,000帧或第1,000帧时的过程差异太高,可能是由于php-ffmpeg图像提取功能不佳造成的。你可以尝试第200,000帧,我预计它会花费80秒?如果这是真的,那么toGDImage()函数就太慢了!

然后你有一些提高性能的选择:

  1. 尝试找出是否可以调整toGDImage()函数或直接使用FFmpeg-php中的命令,如ffmpeg -ss 00:10:00 -i input.avi -vframes 1 output.jpg
  2. 或尝试实现php-FFmpeg库,其中包含快速extractImage()函数,该函数使用上面的命令。
相关问题