【问题标题】:php-ffmpeg too slow - generating thumbnails?php-ffmpeg 太慢 - 生成缩略图?
【发布时间】:2013-04-18 23:11:37
【问题描述】:

我第一次尝试从视频文件创建缩略图预览时,上传了 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 />';

【问题讨论】:

    标签: php ffmpeg ffmpeg-php


    【解决方案1】:

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

    换帧到第10000帧或第1000帧的过程差异太大,可能是php-ffmpeg的图像提取功能不佳造成的。你可以试试我预计需要 80 秒的第 200,000 帧吗?如果这是真的,那么toGDImage() 函数实在是太慢了!

    那么你有一些提高性能的选择:

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

    【讨论】:

    • 是的,我使用的是旧的 FFmpeg-php,在 dotdeb 包中它被称为 php5-ffmpeg .... 我花了 51 秒来生成第 200k 帧,现在安装了 ffmpeg 并完成了 exec( ),图像保存时间为 0.08 秒,令人印象深刻!非常感谢 - 投票!一个问题:我在哪里可以找到一些 ffmpeg 的变量列表?如果我想将图像质量降低到 80 或提取有关视频文件的一些信息 - 例如帧数、长度等?谢谢:]
    • 那 51 秒说明了它是多么的慢,更新的好!尝试阅读FFmpeg CLI documentation,它描述了您刚刚要求的几乎所有内容。互联网上也充满了教程。
    猜你喜欢
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 2011-06-16
    • 2013-05-29
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    相关资源
    最近更新 更多